JSON to TSV Converter
Converts an array of JSON objects into a tab-separated table and back. TSV behaves like CSV but uses tabs as the delimiter, which makes it the format that pastes cleanly straight into a spreadsheet cell.
Because real-world text contains commas far more often than it contains tabs, TSV also tends to need less quoting than CSV.
How to use it
- Paste an array of objects on the left.
- Copy the tab-separated result and paste it directly into a spreadsheet — columns will split automatically.
- Press Swap to parse TSV back into JSON.
Same flattening rules as CSV
Nested objects become dotted column names, arrays of simple values are joined with semicolons, and the column set is the union of keys across all rows so nothing is silently dropped. Numbers and booleans are restored to their proper types when reading TSV back into JSON.
The only difference from the CSV converter is the delimiter, so anything you can express as one you can express as the other and switching between them is a single click.
Why tabs need less quoting
CSV has to quote any value containing a comma, and prose contains commas constantly — addresses, descriptions and names all trip it. Tab characters are rare in ordinary text, so a TSV export of the same data is usually free of quoting entirely, which makes it far easier to read in a terminal and to diff in version control.
The tradeoff is that a stray tab is invisible. When a value genuinely does contain one it is quoted, exactly as CSV would, so the structure still survives a round trip.
Frequently asked questions
Should I use TSV or CSV?
- Use TSV when you intend to paste into a spreadsheet, since most spreadsheets split pasted tabs into columns automatically. Use CSV when a file will be handed to another program, since CSV support is more universal.
What if my data contains tab characters?
- Values containing a tab, quote or newline are quoted so the structure survives, exactly as in CSV.
Does it handle rows with different fields?
- Yes. Every key seen in any row becomes a column, and rows missing that field get an empty cell.