JSON to Markdown table
Rows in, a pipe table out — and a pipe table in opens as rows without a question, because its second line is the whole signature.
What you get
- Convert → Markdown writes a pipe table from any rows: a JSON array of objects, a CSV, NDJSON, a log read as records
- A list of objects is one row each. An object with a list inside — an order with its items — is one row per item, with the rest of the object on every row and nested keys as dotted columns (customer.id, items.sku), the way pandas normalizes it. Focus a branch in the tree and only it converts — “rows from $.items”
- Escapes a | in a cell and writes a newline as <br>, so the table survives a Markdown renderer
- Opens a pasted pipe table straight as rows — “6 rows · read as a Markdown table” — and converts on to CSV, JSON or NDJSON
- Keeps the column order: the first row’s keys as written, then any key a later row adds
What it will not do
- Render Markdown. It writes the table text; your README renders it.
- Write alignment colons. A table it writes uses plain --- rules under the header.
- Make a table out of a document with no list in it — that is refused with the reason, not padded into one row.
What becomes a row
- A list of objects → one row each
[{"sku":"A","qty":1},{"sku":"B","qty":2}]| sku | qty | | --- | --- | | A | 1 | | B | 2 |- One object → one row
{"id":"ord_1","status":"paid"}| id | status | | --- | --- | | ord_1 | paid |- A nested object → dotted columns
{"id":1,"customer":{"name":"Rin"}}| id | customer.name | | --- | --- | | 1 | Rin |- The main list is the rows; the rest rides on every row
{"order":"ord_1","items":[{"sku":"A"},{"sku":"B"}]}| order | items.sku | | --- | --- | | ord_1 | A | | ord_1 | B |- A pipe in a cell
Written as \| so the table keeps its columns.
The sample
What the first sample opens — a real file, not an illustration written for this page.
in VS Code
Convert, then Markdown table — from a document, a selection or a rows file, into a new editor.
Questions
Which JSON becomes a table?
An array of objects is one row each, keys as columns. An object is read the way pandas normalizes it: its main list of records becomes the rows and the rest of the object repeats on every row, nested keys as dotted columns (customer.id, items.sku); an object with no list is one row. Focus a branch in the tree to convert that branch alone.
Can I convert a Markdown table to CSV or JSON?
Yes. Paste the table; it opens as rows with no question asked, and Convert offers CSV, JSON, NDJSON, YAML and XML.
Does the table keep my column order?
Yes — the keys of the first row in the order they appear, then any key a later row adds, at the end.
What about a cell with a pipe in it?
It is escaped as \|, so the column count holds when the table is rendered.