{ } JSON Workbench0 network requests. Check DevTools

"JSON to Markdown":{ }

Paste a JSON array of objects and get a ready-to-paste GitHub-Flavored Markdown table. Keys are unioned across objects, pipes and newlines are escaped so cells never break, and nested values render as compact JSON. 100% in-browser, nothing uploaded.

What is a JSON to Markdown table converter?

API responses and database exports arrive as JSON, but documentation lives in Markdown. This tool turns a JSON array of objects into a GitHub-Flavored Markdown pipe table you can paste straight into a README, pull-request description, issue, or wiki. No hand-aligning pipes, no forgotten separator row. It handles the messy parts: uneven keys across objects, pipes and newlines inside values, and nested structures.

Edge cases & gotchas

  • A separator row (| --- |) after the header is mandatory in GFM: without it nothing renders as a table.
  • Cell alignment (:---, :---:) is optional; this tool emits plain --- for maximum compatibility.
  • Markdown tables cannot contain block elements, so multi-line strings are converted to <br>.
  • null and missing keys both render as empty cells; booleans render as true/false.
  • Very wide tables read poorly on GitHub mobile. Consider selecting fewer keys before converting.

Cell rendering reference

JSON valueMarkdown cell
"a|b"a\|b
"line1\nline2"line1<br>line2
{"k":1} (nested){"k":1} compact JSON
null / missing keyempty cell
truetrue

How to use

  1. Paste a JSON array of objects into the Input pane (or load a file / the sample).
  2. The table appears instantly: one column per key, one row per object.
  3. Keys are unioned across all objects; missing values render as empty cells.
  4. Pipes are escaped (\|) and newlines become <br> so cells never break the table.
  5. Copy the Markdown into a README, GitHub issue, or docs page.

Examples

Array of objects → GFM table

Input
[{ "id": 1, "name": "Ann" }, { "id": 2, "name": "Bob" }]
Output
| id | name |
| --- | --- |
| 1 | Ann |
| 2 | Bob |

Uneven keys → union header, blank cells

Input
[{ "id": 1, "name": "Ann" }, { "id": 2, "phone": "555" }]
Output
| id | name | phone |
| --- | --- | --- |
| 1 | Ann |  |
| 2 |  | 555 |

Nested values → compact JSON in the cell

Input
[{ "id": 1, "address": { "city": "NYC" } }]
Output
| id | address |
| --- | --- |
| 1 | {"city":"NYC"} |

FAQ

What Markdown flavor is generated?

GitHub-Flavored Markdown (GFM) pipe tables, supported by GitHub, GitLab, Notion, Obsidian, Discord, and most static-site generators.

How are pipes and newlines inside values handled?

Pipes are escaped as \| and newlines become <br>, so a cell can never split the table.

What about nested objects or arrays?

They render as compact JSON inside the cell ({"k":1}). If you want dot-notation columns instead, flatten first.

What happens when objects have different keys?

The header is the union of every key seen, in first-seen order; missing values are empty cells.

Can I convert a single object?

Yes, it becomes a one-row table.

Is my data uploaded?

No. Conversion runs entirely in your browser; check DevTools for zero network requests.

Related tools