JSON to Markdown Table

Turn JSON records into an aligned Markdown table.

Input
JSON input
Output
Result
Options

Turns { "user": { "name": x } } into a user.name column.

About this tool


This turns a JSON array of objects into a Markdown table with aligned columns, ready to paste into a README, a pull request description or a wiki page. Keys become headers and each record becomes a row.

It is the quickest way to document an API response or a configuration set without building the table by hand.

How to use it

  1. Paste or upload your jsonDrop a file onto the input pane, use the file picker, or paste the text directly.
  2. Adjust the options if neededThe defaults suit most input; open Options to change the behaviour.
  3. Convert to tablePress Convert to table, or use Ctrl+Enter (Cmd+Enter on macOS).
  4. Copy or downloadCopy the result, or download it as a .md file.

Worked examples


Each example below is executed against this tool by the test suite, so what you see is what the tool actually produces.

Records with a nested object

Input

[{"id":1,"user":{"name":"Ada"}},{"id":2,"user":{"name":"Bob"}}]

Output

| id  | user.name |
| --- | --------- |
| 1   | Ada       |
| 2   | Bob       |

The nested user object becomes a dotted column name.

What to watch for


The details that decide whether a conversion is correct, and where information can be lost without any error being raised.

Headers are the union of all keys
Every record is scanned so no field is missed. A record lacking a key gets an empty cell, keeping the grid rectangular.
Nested values are flattened or serialised
Nested objects become dotted column names by default, which keeps everything in a flat grid. Arrays cannot be flattened into fixed columns, so they are written as JSON text inside their cell.
Pipes and newlines are handled
A pipe in a value is escaped as \| so it does not split the column, and newlines are replaced with spaces because a Markdown table cell cannot span lines.
Columns are padded for readability
Each column is padded to its widest value so the source is readable. Markdown ignores the padding when rendering.

Limitations


  • Arrays are serialised as JSON text within a cell.
  • Newlines in values are replaced with spaces, since table cells cannot span lines.
  • Processing happens in your browser, so very large inputs are bounded by available memory. Files above roughly 10 MB are handled but will feel slower, and multi-hundred-megabyte files are better suited to a command-line tool.

Questions


What JSON shape do I need?
An array of objects. A single object produces a one-row table, and a wrapper like {"data":[...]} is unwrapped automatically.
Why is my array shown as JSON in a cell?
A variable-length list has no fixed-column representation, so it is written as JSON text to keep the data intact.