Skip to content
4all.tools

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.

    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.

    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 &#124; and quotes become &#34;. 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.