When would I convert JSON to Markdown?
When you need to embed structured data inside human-readable docs — release notes that list features as a table, README sections that show config keys and defaults, or status reports built from an API response. Markdown is universal across GitHub, GitLab, wikis, and chat, so a JSON-to-Markdown step turns machine output into something a teammate can scan in five seconds.
How are deep nested objects shown?
Each level of nesting indents two spaces — the standard Markdown sub-list convention. Object keys are rendered in bold, primitive values follow on the same line, and child objects open as a new sub-list. Markdown lists support arbitrary nesting depth, so even four or five levels render correctly. Arrays of objects always become tables, regardless of nesting depth.
What does an array of primitives look like?
A simple bulleted list. ["api", "infrastructure", "platform"] renders as three lines, each prefixed with - and the value. The same pattern applies if the array contains numbers, booleans, or null. This avoids the awkwardness of generating a single-column table for what is conceptually a list.
Why arrays of objects become tables?
Tables are the right rendering for tabular data, and an array of objects with consistent keys is exactly that — one row per object, one column per key. The converter computes the union of keys (preserving first-seen order) so records with extra fields still render. Missing keys appear as empty cells.
Can I copy the table into GitHub?
Yes. The output is GitHub-flavored Markdown — paste directly into a GitHub README, issue, PR description, or wiki page and it will render. The same syntax works in GitLab, Bitbucket, Gitea, Codeberg, and most Markdown-aware tools (Notion, Obsidian, Logseq).
How are pipe characters in values handled?
Pipe characters inside cell values are escaped to \| so they do not break the table grid. Newlines inside values are collapsed to a single space — Markdown tables do not support multi-line cells. If your data has rich text in a cell, render it as HTML or restructure the data first.
What if my JSON is not an array?
A top-level object becomes a bulleted list with bold keys. Primitives become a single-line list item. The converter detects the shape and picks the right renderer automatically — you do not need to wrap a single object in [].
Is my JSON sent anywhere?
No. JSON.parse runs in your browser, the conversion logic runs in your browser, and the resulting Markdown stays on your device until you copy it. API responses, customer data, and internal exports never leave the browser. Verify in DevTools Network tab.