This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.
caption-side: top;
caption-side: bottom;
<section class="default-example" id="default-example">
<table class="transition-all" id="example-element">
<caption>
Famous animals
</caption>
<tr>
<th>Name</th>
<th>Location</th>
</tr>
<tr>
<td>Giraffe</td>
<td>Africa</td>
</tr>
<tr>
<td>Penguin</td>
<td>Antarctica</td>
</tr>
<tr>
<td>Sloth</td>
<td>South America</td>
</tr>
<tr>
<td>Tiger</td>
<td>Asia</td>
</tr>
</table>
</section>
table {
font-size: 1.2rem;
text-align: left;
color: black;
}
th,
td {
padding: 0.2rem 1rem;
}
caption {
background: #ffcc33;
padding: 0.5rem 1rem;
}
tr {
background: #eeeeee;
}
tr:nth-child(even) {
background: #cccccc;
}
/* Directional values */ caption-side: top; caption-side: bottom; /* Global values */ caption-side: inherit; caption-side: initial; caption-side: revert; caption-side: revert-layer; caption-side: unset;
The caption-side property is specified as one of the keyword values listed below.
topThe caption box should be positioned at the block start side of the table.
bottomThe caption box should be positioned at the block end side of the table.
Note: The CSS logical properties and values module defines two logical values, inline-start and inline-end, to position the caption box at the inline start edge and inline end edge of the table, respectively. These values are not supported in any browsers.
| Initial value | top |
|---|---|
| Applies to | table-caption elements |
| Inherited | yes |
| Computed value | as specified |
| Animation type | discrete |
caption-side =
top |
bottom
<table class="top">
<caption>
Caption ABOVE the table
</caption>
<tr>
<td>Some data</td>
<td>Some more data</td>
</tr>
</table>
<br />
<table class="bottom">
<caption>
Caption BELOW the table
</caption>
<tr>
<td>Some data</td>
<td>Some more data</td>
</tr>
</table>
.top caption {
caption-side: top;
}
.bottom caption {
caption-side: bottom;
}
table {
border: 1px solid red;
}
td {
border: 1px solid blue;
}
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
caption-side |
1 | 12 | 1 | 4 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
bottom |
1 | 79 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
bottom-outside |
No | No | 1–87 | No | preview | No | 4–87 | No | No | No | No | No |
left |
No | No | 1–87 | No | 1–17 | No | 4–87 | No | 1–17 | No | No | 1–17 |
right |
No | No | 1–87 | No | 1–17 | No | 4–87 | No | 1–17 | No | No | 1–17 |
top |
1 | 79 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
top-outside |
No | No | 1–87 | No | preview | No | 4–87 | No | No | No | No | No |
writing-mode_relative_values |
No | No | 42 | No | No | No | 42 | No | No | No | No | No |
<caption>
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side