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>. nulland missing keys both render as empty cells; booleans render astrue/false.- Very wide tables read poorly on GitHub mobile. Consider selecting fewer keys before converting.
Cell rendering reference
| JSON value | Markdown cell |
|---|---|
"a|b" | a\|b |
"line1\nline2" | line1<br>line2 |
{"k":1} (nested) | {"k":1} compact JSON |
null / missing key | empty cell |
true | true |
How to use
- Paste a JSON array of objects into the Input pane (or load a file / the sample).
- The table appears instantly: one column per key, one row per object.
- Keys are unioned across all objects; missing values render as empty cells.
- Pipes are escaped (
\|) and newlines become<br>so cells never break the table. - Copy the Markdown into a README, GitHub issue, or docs page.
Examples
Array of objects → GFM table
[{ "id": 1, "name": "Ann" }, { "id": 2, "name": "Bob" }]| id | name | | --- | --- | | 1 | Ann | | 2 | Bob |
Uneven keys → union header, blank cells
[{ "id": 1, "name": "Ann" }, { "id": 2, "phone": "555" }]| id | name | phone | | --- | --- | --- | | 1 | Ann | | | 2 | | 555 |
Nested values → compact JSON in the cell
[{ "id": 1, "address": { "city": "NYC" } }]| 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.