Markdown Table to TSV
Paste a Markdown pipe table and get tab-separated data back. Useful in the direction people rarely think about: a table that lives in a README, a Jira comment, or an LLM answer is trapped as prose until you can get it into a spreadsheet, and tab-separated text is what Excel and Sheets accept from the clipboard. The alignment row (|---|:---:|) is recognised and dropped, and cell padding is trimmed. The reverse trip is TSV → Markdown.
How to use
- Paste the table. Leading and trailing pipes are optional — both
| a | b |anda | bparse. - Paste surrounding prose too if it's easier. Only lines containing a pipe are considered, so headings and paragraphs are skipped automatically.
- Decide about formatting. With the strip box ticked,
**Total**becomesTotaland[docs](https://…)becomesdocs. Untick it to keep the markup verbatim. - Copy or download.
What the parser accepts
GitHub-flavoured pipe tables, with or without the outer pipes, with any amount of padding inside the cells. The separator row is detected by shape — a row of dashes with optional colons — and discarded, including alignment variants like :---, ---:, and :---:. An escaped pipe (\|) inside a cell is treated as a literal character rather than a column break, which is how Markdown itself reads it. <br> inside a cell becomes a space, because a real newline cannot exist inside a TSV field.
What it does not do is understand HTML tables embedded in the Markdown (use HTML table → TSV for those), or grid-style tables from reStructuredText and Emacs org-mode, which use +---+ corners rather than pipes alone. Multiple tables in one paste are concatenated as one sheet — if they have different shapes you'll get a ragged file, and the validator will tell you so.
Why strip formatting by default
Because you're almost certainly moving the data somewhere that treats **42** as text rather than as a bold number — a spreadsheet, a database, a script. Leaving the asterisks in means every numeric column arrives as strings. The exception is when you're converting a table to re-emit it as Markdown later, in which case untick the box and the markup survives the round trip intact.
FAQ
My table's columns came out misaligned.
Almost always an unescaped pipe inside a cell — a value like a|b reads as two columns. Escape it as a\|b in the source, or check the row count with the validator to find which line is the odd one out.
Can I convert a Markdown table straight to JSON or SQL?
In two hops: convert here, then TSV → JSON or TSV → SQL. Keeping the steps separate means you can inspect the intermediate grid, which is where mistakes are visible.
Does it handle tables an LLM produced?
Yes — that's a common source. Model output usually uses standard pipe syntax with a separator row, sometimes with inconsistent padding, which parses fine. Watch for tables that were truncated mid-generation; the last row may be short.
Privacy
100% client-side. No upload. See the privacy policy.