Skip to content

JSON to Markdown converter

JSON to Markdown writes a GFM table from the flattened record set, making it useful for docs but lossy for nested JSON structure.

  • Converted with Table engine · nothing stored
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Top-level records Kept

    The two JSON records became two Markdown data rows below a shared header.

  • Nested properties Changed

    customer.name, customer.city, and extra.gift appeared as dotted Markdown column headers.

  • Arrays Changed

    The tags arrays were printed as JSON strings inside table cells, including quotes and brackets.

  • Nulls Changed

    Null fields became empty Markdown cells, which read as blank rather than as the word null.

  • Unicode values Kept

    München, Zoë, and 東京 were visible in the generated Markdown without escaping.

  • Pipe safety Changed

    Any vertical bars in values would be escaped by the Markdown writer to keep table columns aligned.

Sample conversions

Flattened docs table

Input
JSON: [{"id":"001","customer":{"name":"Ada","city":"München"},"tags":["priority","quoted, comma"]}]
Output
Markdown header included | id | customer.name | customer.city | tags | zip | active | total | due | empty | extra.gift |.

Blank null cells

Input
Both JSON records had empty: null, and the first record lacked extra.gift.
Output
Markdown rows left those cells empty; the second row ended with true under extra.gift.

A real JSON → Markdown run

We converted our JSON sample (557 B) with Table engine on 2026-09-11. It took 1 ms and produced a 318 B Markdown file, 43% smaller than the input. The engine raised no warnings.

Input · sample.json · 557 B

Array of 4 objects; keys: company, stage, arr, owner, close_date

Records
4
Keys
company, stage, arr, owner, close_date

Output · sample.md · 318 B

0 headings, 1 table, 0 list items, 0 code blocks, 0 image references

Headings
0
Tables
1
List items
0
Code blocks
0
Images
0
Lines
6

First lines of the output

md
| company | stage | arr | owner | close_date |
| --- | --- | --- | --- | --- |
| Northwind Traders | Proposal | 48000 | R. Ayers | 2026-10-14 |
| Contoso Ltd | Negotiation | 120000 | P. Ng | 2026-09-30 |
| Fabrikam | Qualified | 22500 | R. Ayers | 2026-11-02 |
| Tailspin Toys | Won | 64000 | M. Okafor | 2026-09-03 |

Options and when to change them

flattenSeparator
Change it when dotted Markdown headers clash with existing property names.
arrayMode
Use explode when small arrays should become indexed Markdown columns instead of JSON text.
encoding
Use latin1 only for non-UTF-8 JSON-like files that still parse after decoding.

Do it yourself

pandas

bash
python - <<'PY'
import pandas as pd
df = pd.json_normalize(pd.read_json("input.json").to_dict(orient="records"))
df.to_markdown("output.md", index=False)
PY

Install tabulate for pandas Markdown output, and decide how arrays should be represented before publishing.

JSON to Markdown by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=json&to=md.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.json" -F "from=json" -F "to=md" \
  -F 'options={"encoding":"utf-8"}' \
  --output output.md

Options this engine accepts for JSON → Markdown

KeyApplies toTypeDefault
encodingReading JSONutf-8 · latin1utf-8
flattenSeparatorReading JSONstring.
arrayModeReading JSONjson · explodejson
API reference

When this is the wrong conversion

  • Do not convert to Markdown when downstream code needs to parse the original JSON hierarchy.
  • If the data is large enough for analysis, CSV, Parquet, or SQL is usually easier to process than a Markdown table.

JSON to Markdown questions

Does JSON to Markdown create one table or many?

For the JSON array we tested, it created one GFM table. Every distinct flattened key became one column in that table.

How are JSON null values shown in Markdown?

They are blank cells in the table output. Readers will not see a literal null unless you replace those values before conversion.

Can Markdown preserve JSON arrays?

Only as text in this conversion. The default output showed arrays like ["priority","quoted, comma"] inside one cell.