Upload a JSON or JSONL file up to 5 MB and download a spreadsheet with one row per record. Nested objects become columns such as customer.address.city, and records with different fields keep every column.
Accepts .json and .jsonl — up to 5 MB, no account needed
Under the hood
Objects inside objects become dot-notation headers, at every level of nesting. A deeply nested record reads as one normal row rather than raw JSON text in one cell.
When the file is an object rather than a list, the largest array of records directly inside it is taken as the data, and the status and metadata around it are left out.
Headers are collected from every record, not just the first. If record forty introduces a phone number, that column exists and earlier rows simply leave it empty.
A list of plain values, such as tags, becomes one cell joined with commas rather than one column per item.
Questions
They become dot-notation columns. A record holding client.address.city gets a column with exactly that name, rather than a cell containing raw JSON text.
Yes. When the top level is an object, the largest array of records directly inside it is treated as the data, so a response shaped like { status, meta, data: [...] } converts the data and leaves out the wrapper.
Yes. If the file is not valid JSON as a whole, each line is parsed separately. Lines that fail are skipped with a warning rather than failing the file.
Every key from every record becomes a column, in the order first seen. A record missing a field gets an empty cell instead of losing the column.
An array of plain values becomes one cell joined with commas, so a tags field stays a single readable column instead of exploding into tags.0, tags.1 and tags.2.
Yes. After flattening, every column is tested for numbers and dates, the same way it is for CSV.