HTML tables lose the header delimiter row after `<caption>` or `<colgroup>`, and `<tfoot>` adds a fake header · Issue #2536 · microsoft/markitdown · GitHub
Skip to content

HTML tables lose the header delimiter row after <caption> or <colgroup>, and <tfoot> adds a fake header #2536

Open

Description

When a table's rows sit directly under <table> (not in <thead> or <tbody>), a <caption> or <colgroup> before them drops the | --- | line under the header. Without it the output isn't a Markdown table anymore, just lines of pipes. JDK 8 and 11 Javadoc summary tables are built this way.

A <tfoot> row has the opposite problem. It gets its own empty header and | --- | line in the middle of the table.

Repro on main (945314a, markdownify 1.2.3):

from markitdown.converters import HtmlConverter

c = HtmlConverter()
print(c.convert_string(
    "<table><caption>Stock</caption><tr><th>Name</th><th>Qty</th></tr>"
    "<tr><td>Apple</td><td>3</td></tr></table>").markdown)
print(c.convert_string(
    "<table><thead><tr><th>Item</th><th>Cost</th></tr></thead>"
    "<tbody><tr><td>A</td><td>1</td></tr></tbody>"
    "<tfoot><tr><td>Total</td><td>1</td></tr></tfoot></table>").markdown)

What I get:

Stock

| Name | Qty |
| Apple | 3 |
| Item | Cost |
| --- | --- |
| A | 1 |
|  |  |
| --- | --- |
| Total | 1 |

I expected | --- | --- | under the first header, the same as without the caption. The footer should just be the last row, | Total | 1 |.

Activity

  1. Sanjanabonagiri16 commented on Oct 15, 2026

    @Sanjanabonagiri16

    Hi maintainers, I'd like to work on issue #2536. I plan to add regression tests for the missing Markdown table header separator after a caption and the extra separator generated by a table footer, then implement a focused fix. Is this issue still available for contribution?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions