Markdown Table to JSON

Turn a Markdown table into JSON records.

Input
MARKDOWN input
Output
Result
Options

About this tool


Each table row becomes one JSON object, keyed by the header names. This is the fastest way to turn a table written in documentation into usable data, test fixtures, a lookup map, or seed data.

Type inference is applied so numbers and booleans become real JSON types rather than strings, while identifiers keep their exact text.

How to use it

  1. Paste or upload your markdownDrop 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 JSONPress Convert to JSON, or use Ctrl+Enter (Cmd+Enter on macOS).
  4. Copy or downloadCopy the result, or download it as a .json 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.

A table with mixed types

Input

| id | name | active |
| --- | --- | --- |
| 1 | Ada | true |
| 2 | Bob | false |

Output

[
  {
    "id": 1,
    "name": "Ada",
    "active": true
  },
  {
    "id": 2,
    "name": "Bob",
    "active": false
  }
]

The id column becomes numbers and active becomes booleans.

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 become keys
The header row supplies the object keys and each body row becomes one object. A duplicated header is suffixed to keep keys unique, since a JSON object cannot repeat a key.
Conservative type inference
Unambiguous numbers become numbers, true and false become booleans, and null becomes null. Anything that might be an identifier stays a string, 007 keeps its leading zero rather than becoming 7.
Cells stay flat
Markdown tables have no nesting, so the output is always a flat array of objects. A header containing a dot becomes a literal key with a dot in it, not a nested object.

Limitations


  • Output is always a flat array of objects.
  • Inline Markdown formatting is preserved as literal characters.
  • 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


Can I get nested JSON?
No. Markdown tables are flat, so the output is a flat array of objects. Reshape it afterwards if you need nesting.
Why is my ID still a string?
Values with leading zeros are kept as strings deliberately, so an identifier like 007 is not corrupted into 7.