View a JSON array as a table and export Markdown
Turn a JSON array of objects into a table. Choose columns and rows, then copy or download the Markdown for your documentation.
Tool workspace
JSON Table / JSON to Markdown
Enable JavaScript to use this local tool.
Choose an array of objects explicitly. Strings and headers use JSON quotes; line breaks stay as escapes. ∅ means a missing property, distinct from null and "". Objects and arrays appear as compact JSON; columns keep literal keys and source order.
Your document is processed locally in your browser. No uploads, remote documents or saved input.
File: 4000000 bytes; input: 1000000 UTF-16 units; depth: 200; source nodes: 100000; rows: 20000; discovered columns: 200; included cell positions: 75000.
Rows to include
Cell text: 10000; headers: 20000; row text: 100000; table text: 1000000; Markdown: 2000000 UTF-16 units. These maxima cannot all be accepted simultaneously. Choose fewer columns or first N rows to reduce output size.
Load example
{
"data": [
{ "id": "00123", "name": "Demo A", "value": null, "empty": "", "note": "x|y", "html": "<b>literal</b>", "line": "a\nb", "details": { "n": 1e0 } },
{ "name": "Demo B", "active": true, "details": [1.0, -0, 9007199254740993] }
],
"other": [{ "code": "sample" }]
}[{"":null,"10":1,"2":2},{"2":3,"late":true}]Enable JavaScript to use this local tool.
Diagnostics are incomplete because inspection stopped or the diagnostic budget was reached.
Page size changes visible rows only. Markdown exports every included row.
Width or text limits reduced this page below the chosen size.
Markdown exports all included rows for GitHub Flavored Markdown tables. ASCII punctuation becomes numeric entities to preserve the text. A Markdown viewer may turn URLs or email addresses into clickable links. The source can be longer than the visible table. Markdown is not a reversible JSON format.
Clipboard is unavailable or denied. Select and copy the complete Markdown in the output field, or retry Copy.
Choose the data for your table
Paste strict JSON or open a UTF-8 .json file, then press Analyze arrays. Select the array you want, including $ if the document itself is an array, and press Inspect columns. Every element must be an object, even if you plan to export only the first few rows.
The tool finds columns across the whole array, including properties that appear only near the end. Select at least one column and use Move up/down to set the order. Property names are used literally: a dot in a key does not mean a nested path. Nested objects and arrays stay together in a cell.
A document without arrays has nothing to convert. An empty array [], or an array containing only empty objects, has no columns. Comments, JSONC, JSON5 and duplicate keys are rejected.
Missing values, null and empty strings
[{"id":"00123","name":"Ana"},{"name":"Beto","active":true}]
This example produces columns id, name and active. The first row contains "00123", "Ana" and ∅; the second contains ∅, "Beto" and true.
The symbols distinguish three cases: ∅ means the property is absent, null is an explicit null value, and "" is an empty string. Strings and headings retain JSON quotes. Line breaks appear as JSON escapes, and nested values use compact JSON.
Numbers keep their original spelling, including 1.0, 1e0, -0 and 9007199254740993. A precision warning does not mean the displayed text has been rounded; a number outside the supported range, such as 1e999, is rejected.
Export the rows you need
Choose all rows or the first N rows, then press Prepare table. N must be a positive integer. This choice controls the export; moving between pages does not. Pages show up to 10, 25 or 50 rows, with fewer when the cells contain a lot of text.
Press Generate Markdown to create a GitHub Flavored Markdown table. Characters that could be read as formatting are encoded: a pipe becomes | and quotes become ". This keeps HTML, images and Markdown in the data from becoming table markup. A Markdown viewer may still turn URLs or email addresses into clickable links.
Copy and download include every selected row. The downloaded file is json-table.md, encoded as UTF-8 without BOM, with LF line endings and a final newline. If the clipboard fails, use the manual-copy field. Check the result in your intended Markdown viewer: dialects differ, and the table is not a reversible JSON format.
Limits and local processing
| Limit | Maximum |
|---|---|
| File | 4,000,000 bytes |
| Input | 1,000,000 UTF-16 units |
| Nested containers / JSON values | 200 levels / 100,000 |
| Source rows / columns | 20,000 / 200 |
| Selected cell positions | 75,000 |
| Text per cell | 10,000 UTF-16 units |
| Complete table / Markdown | 1,000,000 / 2,000,000 UTF-16 units |
Long headings, large rows or complex structures may reach other processing limits first. The tool does not cut cells or return a partial table after an error. If the Markdown exceeds its limit, the prepared table remains available, but no partial export is offered.
Processing uses a local Worker and requires JavaScript. Input and output are not uploaded or stored. Files must use UTF-8; one initial BOM is removed with a notice, while a second is invalid.
Changing the input, array, columns or row selection requires preparing the table again. Canceling keeps your input; retrying analyzes it again.