JSON to TSV
Convert a JSON array to TSV — the format spreadsheets accept from the clipboard and Postgres reads with COPY … FORMAT text. Real TSV has no quoting rules, so embedded tabs and newlines are backslash-escaped instead.
How to convert JSON to TSV
- Paste your JSON array, or drop a
.jsonfile. - Choose how null is written. Use
\Nwhen the target isCOPY … FROM STDINin PostgreSQL — that is its null marker. - Pick how tabs and newlines inside values are handled. Escaping preserves them; replacing with a space is safer for tools that do not un-escape.
- Set Nested objects and Arrays to control whether nested data becomes extra columns or stays in one cell.
- Copy the result and paste directly into Excel, Numbers, or Google Sheets — they split on tabs without an import dialog.
Why TSV instead of CSV
TSV's advantage is that tab characters are rare inside real data, so you rarely need quoting at all — which removes the entire class of bugs where a comma inside a quoted field breaks a naive parser. Its disadvantage is that there is no agreed standard: some tools escape tabs, some forbid them, some silently truncate. That is why the escaping mode here is explicit.
If your destination expects RFC 4180 quoting, use JSON → CSV instead. For much deeper TSV tooling — repair, column surgery, delimiter sniffing — see tsvkit.org.
Privacy
Nothing is uploaded. The conversion runs in this tab using your own browser's JavaScript engine — no server sees your data, and the page keeps working with the network disconnected.
FAQ
Will Excel open this correctly?
Pasting from the clipboard works without a dialog. Opening a saved .tsv file sometimes triggers the import wizard — choose "Delimited" and tick only Tab. Excel also reformats anything that looks like a date, so keep IDs and codes as text.
What is \N?
PostgreSQL's COPY text format uses the two-character sequence \N to mean SQL NULL, which lets it distinguish a null from an empty string. Other databases use different markers.
Can I go the other way?
Yes — TSV → JSON parses tab-separated text back into a JSON array with type inference.