JSON to Markdown

Turns JSON into Markdown you can paste straight into a README, wiki page, or pull request, a table for a flat array of objects, or a nested bullet list for any JSON shape. Nothing leaves your browser.

Private by architecture: All processing is 100% client-side memory. Your data never leaves this browser tab.
JSON input
0 lines · 0 charsJSON
Markdown output
Ctrl/Cmd+Shift+C
0 charsMarkdown

About This Tool

Documentation, GitHub issues, and wiki pages render Markdown, not JSON, so API responses and config objects need re-rendering before they're readable alongside prose. In Table mode, a JSON array of flat objects becomes a GitHub-flavored Markdown table: the header row is the union of every object's keys in first-appearance order, and missing keys render as empty cells. In Nested list mode, any JSON value (not just flat arrays) becomes an indented - key: value bullet list.

This is a copy-paste-into-docs tool: the output is plain Markdown text, not a live preview. For a visual HTML table you can inspect in the browser and also copy as TSV or raw HTML, see JSON to Table instead.

Key Features

  • Table mode: array of objects → GitHub-flavored Markdown table, header from the union of all keys.
  • Nested list mode: any JSON shape, including deep nesting, renders as an indented bullet list.
  • Missing keys handled: table rows with a missing key show an empty cell instead of erroring.
  • Non-primitive values inlined: nested objects/arrays inside a table cell are inlined via JSON.stringify.
  • Pipe-safe output - | characters inside cell values are escaped so they don't break the table.
  • File upload: load a .json file directly instead of pasting.

Example

Table mode, with [{"name": "Ada", "age": 30}, {"name": "Grace", "role": "dev"}]:

| name  | age | role |
| --- | --- | --- |
| Ada   | 30  |  |
| Grace |  | dev |

Nested list mode, with {"a": 1, "b": {"c": 2}}:

- a: 1
- b:
  - c: 2

FAQ

What happens if my objects don't all have the same keys?
The header row is the union of every object's keys, in the order each key first appears. Any object missing a given key just shows an empty cell for it.
Can Table mode handle nested JSON?
It expects a flat array of objects. A nested object or array value inside a cell is inlined with JSON.stringify rather than expanded into columns, switch to Nested list mode for deeply nested input.
Does this give me a live table preview?
No, the output here is plain Markdown source text, meant to be pasted into a file that renders Markdown. For a rendered HTML preview, use JSON to Table.
Are pipe characters in my data a problem?
No, they're automatically escaped as \| in table cells so they don't get misread as column separators.