01 / WHAT JSON MAKES COMPARISON HARD

What JSON makes easy to store, it makes hard to compare.

Nested records are fine to read and useless to compare. The moment you need to know which of four hundred records is missing a field, you need columns, not trees. Jsonflat pulls nested records into a flat table — one column per dotted path, one row per record — so you can open the data in any spreadsheet and see, in seconds, what is present and what is not.

Screenshot of the Jsonflat tool — a JSON textarea with sample nested data, a green Flatten button, array-handling options, and a dashed placeholder where the flat table will appear
Nested JSON — three records, one missing field[ { "name": "Alice", "address": { "street": "123 Oak", "city": "Springfield" }, "role": "admin" }, { "name": "Bob", "address": { "street": "456 Elm" }, "role": "viewer" }, { "name": "Carol", "address": { "street": "789 Pine", "city": "Madison" }, "role": "admin" } ] ↓ flattened Flat table — 4 columns, 3 rows, coverage badgesname address.street address.city role Alice 123 Oak Springfield admin Bob 456 Elm viewer Carol 789 Pine Madison admin

02 / WHAT NESTING HIDES, FLATTENING REVEALS

A single dotted path per leaf, one column per path, one row per record.

Every JSON leaf value — every string, number, boolean, or null — gets a single column named by its full path from the root. Missing fields become empty cells, visible instantly rather than discovered by scrolling. Arrays are either indexed (tags[0], tags[1]) or exploded into additional rows.

03 / FOUR OPERATIONS, ONE SURFACE

The tool does not guess, decorate, or upload your data.

Paste any valid JSON
From an API console, a curl response, a log file, or any text editor. The whole transformation runs in the browser. Nothing touches a server.
Flatten to one column per leaf
Every leaf value gets a column named by its dotted path (a.b.c). Mixed structures work — missing fields show as empty cells, not errors.
Choose your array handling
Explode arrays into additional rows or index them into columns (items[0].name, items[1].name). Switch modes without re-pasting.
See what is missing, at a glance
Every column header carries a coverage badge showing how many records carry that field. 397 / 400 tells you three records are missing it, before you notice manually.
Export without friction
Download as RFC 4180 CSV with UTF-8 BOM (Excel-ready). Copy as tab-separated values to paste directly into a spreadsheet.

04 / WHAT IT COSTS

The tool is free and always will be.

Jsonflat runs entirely in your browser. There is no server, no account, no subscription, and no data ever leaves your machine.

Already free — no sign-up, no limits on document size besides the 5 MB browser memory limit

05 / WHAT IT WILL NOT DO

Honest about limits.

Every tool has boundaries. These are stated here so you do not discover them by surprise.

No URL fetching
Jsonflat does not fetch a URL for you. Paste the JSON content directly into the textarea. (Your browser will not let a page read another origin's data anyway — this is a platform rule, not a product choice.)
No large-document streaming
Documents larger than your browser can hold in memory will be rejected with a message stating the limit, not truncated silently. The maximum input size is 5 MB; the maximum rendered cells is 100,000.
No type inference
Jsonflat reports values as JSON states them. A string that looks like a number stays a string. No guessing, no "smart" conversion.
No server-side persistence
Your data is not uploaded or stored on any server. A history of your recent flattens is saved in your browser (localStorage) so you can reload past conversions; this data never leaves your machine. Nothing is shared across devices or users.
No email, no notifications
Nothing is emailed, scheduled, or sent. The tool has no sender, no SMTP, and no notification system.

06 / WHAT A RESULT LOOKS LIKE

A skeptic asks: "Why not just write a script?"

Because you would write it, run it once, throw it away, and write it again next month. Jsonflat is the script you do not write — it handles mixed structures, missing fields, nested arrays, and column alignment without you thinking about edge cases. The output is a table you can paste into a ticket, a spreadsheet, or a comparison tool immediately.

Sample output — 100 records, 12 cols, 4 coverage warningsname role dept sal city state joined Alice J admin eng 95k PDX OR 2023-04 Bob C viewer sales 72k AUS TX 2024-01 Carol S admin eng 88k PDX OR 2022-11 David K viewer mktng 65k CHI IL 2024-06 Elena T admin (none) 91k MIA FL 2024-02 ... 96 more rows · 3/12 cols fully populated · 2 fields <90% coverage

07 / THE TOOL IS OPEN AND READY

No install. No sign-up. Paste and flatten.

The tool page is a single textarea, a dropdown for array handling, and a table. Paste your JSON, choose your mode, and see the result. That is the whole surface.