JSON to Markdown Table

Convert JSON arrays and objects into formatted Markdown tables. Customize alignment, headers, and handle nested data.

What is JSON to Markdown Table?

Markdown tables are the standard way to present tabular data in GitHub READMEs, documentation sites, Jupyter notebooks, and static site generators like Hugo and Jekyll. However, manually formatting Markdown table syntax — with pipe characters, alignment markers, and consistent spacing — is tedious and error-prone, especially when the data changes frequently. This tool automates the conversion from JSON arrays of objects into properly formatted Markdown tables with configurable alignment, optional leading pipes, and customizable null display. Nested objects are serialized as JSON strings within cells, and arrays are joined with commas, so no data is lost even when the source JSON has complex values.

How to Use

  1. Paste your JSON array of objects or a single object into the input area
  2. Configure column alignment (left, center, right) and header style (with or without leading pipes)
  3. Choose how to display null values: as the literal text 'null' or as empty cells
  4. Click 'Convert' to generate the Markdown table syntax
  5. Toggle 'Show Preview' to see the rendered table before copying, then copy the output

Why Use This Tool?

Instantly embed JSON data in Markdown documentation, GitHub READMEs, issues, and pull requests
Customize column alignment and header pipe style to match your Markdown renderer's preferences
Nested objects are serialized as JSON strings and arrays are comma-joined — no data is silently dropped
Live HTML preview lets you verify the table renders correctly before pasting into your document
Handles inconsistent keys across objects by collecting all unique keys and filling missing cells

Tips & Best Practices

  • Use the 'Without leading pipe' style for compatibility with some Markdown parsers that do not require leading pipes on each row
  • Nested objects are serialized as JSON strings in cells — consider flattening your JSON first if you want nested fields as separate columns
  • Null values can be shown as the text 'null' or as empty cells depending on your documentation style preference
  • All unique keys across all objects are collected as columns — objects with missing keys produce empty cells in those columns

Frequently Asked Questions

How are JSON types mapped to Markdown table cells?

All JSON values are converted to their string representation for display in table cells. Strings appear as-is, numbers and booleans are rendered as plain text, null values are shown as 'null' or empty depending on your setting, nested objects are JSON-serialized, and arrays are joined with commas. Markdown tables are purely text-based with no type system.

When should I NOT use Markdown tables for JSON data?

Avoid Markdown tables when your JSON has deeply nested structures that need to be shown as separate columns, when you need per-column alignment, or when the data is too wide for a typical code block. For complex data, consider converting to CSV for spreadsheet use or to LaTeX for publication-quality formatting.

What JSON formats are supported?

The tool accepts JSON arrays of objects (e.g., [{...}, {...}]) or a single JSON object (e.g., {...}). A single object is treated as a one-row table. All keys across objects are collected to form the columns, and missing keys result in empty cells.

How are nested objects and arrays handled?

Nested objects are converted to their JSON string representation (e.g., {"department": "Finance"} becomes '{"department":"Finance"}' in the cell). Arrays are joined with commas (e.g., ["React", "Node.js"] becomes 'React, Node.js'). For more control, flatten your JSON before converting.

What is the 'leading pipe' option?

Markdown tables can optionally start each row with a pipe character (|). The 'With leading pipe' style produces | Col1 | Col2 |, while 'Without leading pipe' produces Col1 | Col2. Both are valid Markdown, but some parsers prefer one over the other.

Is my data sent to a server?

No. All processing happens entirely in your browser. Your JSON data is never transmitted to any server. This tool works offline and keeps your data completely private.

Real-world Examples

GitHub README feature comparison table

Convert a JSON array of feature objects into a Markdown table for a project README, comparing supported frameworks side by side.

Input
[
  {"framework": "React", "ssr": true, "bundle_kb": 42},
  {"framework": "Vue", "ssr": true, "bundle_kb": 33},
  {"framework": "Svelte", "ssr": false, "bundle_kb": 8}
]
Output
| framework | ssr | bundle_kb |
| :--- | :--- | :--- |
| React | true | 42 |
| Vue | true | 33 |
| Svelte | false | 8 |

API response documentation

Turn a JSON API response sample into a Markdown table for endpoint documentation, showing each field and its value.

Input
{"endpoint": "/api/users", "method": "GET", "auth_required": true, "rate_limit": "100/min"}
Output
| endpoint | method | auth_required | rate_limit |
| :--- | :--- | :--- | :--- |
| /api/users | GET | true | 100/min |

Related Tools