Skip to content

Headerless Tables

Optional feature

Headerless tables require headerless: true in your configuration.

markdown_extensions:
  - pymdown_multimd_table:
      headerless: true

A headerless table starts directly with a separator row (no header rows above it). The table has only a <tbody> element — no <thead>.

Basic headerless table

| --- | --- |
| No header | here |
| Another   | row  |
No header here
Another row
<table>
<tbody>
<tr>
<td>No header</td>
<td>here</td>
</tr>
<tr>
<td>Another</td>
<td>row</td>
</tr>
</tbody>
</table>

With alignment

Alignment colons work in the separator row just as in regular tables:

| :------- | ---: |
| Left     |  100 |
| Aligned  |   42 |
Left 100
Aligned 42
<table>
<tbody>
<tr>
<td style="text-align:left">Left</td>
<td style="text-align:right">100</td>
</tr>
<tr>
<td style="text-align:left">Aligned</td>
<td style="text-align:right">42</td>
</tr>
</tbody>
</table>

With a caption

[Product List]
| --- | --- | --- |
| Widget | blue | $9.99 |
| Gadget | red  | $4.99 |
Product List
Widget blue $9.99
Gadget red $4.99
<table><caption id="productlist">Product List</caption><tbody>
<tr>
<td>Widget</td>
<td>blue</td>
<td>$9.99</td>
</tr>
<tr>
<td>Gadget</td>
<td>red</td>
<td>$4.99</td>
</tr>
</tbody>
</table>

Notes

  • A separator row with no following data rows is not treated as a table.
  • With headerless: false (the default), a separator-only block is not recognised as a table at all.