JSON to Markdown table Converter
Turn a JSON array into a GitHub-flavored Markdown table for docs, issues and READMEs — keys become columns, nested objects become dotted columns, and cells are escaped safely.
JSON to Markdown table Converter
Runs in your browser — nothing you enter is uploaded or stored.
Scratchpad auto-saved
How it works — in four simple steps
No signup and nothing to install — it all runs in your browser.
Add your JSON
Paste it into the left box, press Open file, or drag a .json file onto it. Sample loads a realistic example.
Set the options
Adjust the options above the boxes — the output updates instantly as you change them.
Check the result
Read the status line: it reports rows, keys and any value that couldn't be represented in Markdown table.
Copy or download
Copy the Markdown table or download it as a .md file. Nothing was uploaded at any point.
Untick Flatten nested keys if you'd rather keep each nested object in a single column.
Features
Nested data flattened
Nested objects become dotted columns (address.city), and arrays of plain values are joined so every row fits the grid.
Column alignment
Numbers right-aligned automatically, or force left, centre or none in the delimiter row.
Readable or compact
Padded columns that line up in a code editor, or compact output for the smallest diff.
Private by design
Parsing and conversion run in your browser with JavaScript — your data is never uploaded, logged or stored.
About the JSON to Markdown table Converter
Documenting an API, writing up test results or pasting query output into a pull request is easier with a table. This converter takes a JSON array (or the first array of objects inside your JSON), uses the union of keys as columns in first-seen order, and writes one Markdown row per object.
Nested objects become dotted columns such as limits.rpm, and arrays of plain values are joined with semicolons so each record fits on one row. Values are escaped for Markdown tables — | becomes \| and line breaks become <br>. Columns are padded so the raw Markdown lines up, and numeric columns are right-aligned automatically.
Because the output is plain GFM, it renders on GitHub, GitLab, Bitbucket, Gitea, MkDocs, Docusaurus, Hugo and Obsidian without plugins.
Examples
An API pricing table kept as JSON, with nested limits and a feature list — exactly what a docs page needs as a table.
[
{ "plan": "Free", "price_usd": 0, "limits": { "rpm": 60, "storage_gb": 1 }, "features": ["API", "Email support"] },
{ "plan": "Pro", "price_usd": 19, "limits": { "rpm": 600, "storage_gb": 50 }, "features": ["API", "Webhooks", "Priority support"] },
{ "plan": "Team", "price_usd": 49, "limits": { "rpm": 3000, "storage_gb": 500 }, "features": ["API", "Webhooks", "SSO"] }
]| plan | price_usd | limits.rpm | limits.storage_gb | features |
| :--- | --------: | ---------: | ----------------: | :------------------------------ |
| Free | 0 | 60 | 1 | API; Email support |
| Pro | 19 | 600 | 50 | API; Webhooks; Priority support |
| Team | 49 | 3000 | 500 | API; Webhooks; SSO |This output was produced by the converter on this page with the default options — load it with the “API plans” preset above and change any option to see the effect.
How JSON maps to Markdown table
| In JSON | Becomes in Markdown table |
|---|---|
| Array of objects | one table row per object |
| Keys (union) | header cells |
{"limits": {"rpm": 60}} | column limits.rpm |
["a", "b"] | a; b |
null / missing | empty cell |
true | true |
Things that trip people up
- Lots of columns. Markdown tables don't scroll well in narrow READMEs. Untick Flatten nested keys, or trim the JSON to the fields that matter.
- Objects inside arrays. A list of objects inside a record is shown as compact JSON in its cell; consider a separate table for it.
- Code in cells. Backticks render as inline code; a pipe inside backticks still needs escaping on GitHub, and the converter does that for you.
- Key order. Columns follow the order keys first appear, so put the most important key first in the first object.
JSON vs Markdown table at a glance
| Property | JSON | Markdown table |
|---|---|---|
| Specification | RFC 8259 (2017) · ECMA-404 | GitHub Flavored Markdown 0.29-gfm |
| File extension | .json | .md |
| Media type | application/json | text/markdown (RFC 7763) |
| Data types | string, number, boolean, null, object, array | text (inline Markdown allowed) |
| Comments | No | HTML comments |
| Nesting | Unlimited | None |
- JSON: Numbers are parsed as IEEE-754 doubles in JavaScript, so integers above 9,007,199,254,740,991 (2⁵³ − 1) lose precision.
- Markdown table: A GFM table needs a header row and a delimiter row (| --- |); colons set alignment and a literal pipe inside a cell is written \|.