JSONL ↔ TSV Converter
100% client-side. No upload.
Convert
JSONL ↔ TSV Converter
Convert JSONL to tab-separated values and back. TSV is the format BigQuery, Snowflake, Redshift, and most shell pipelines prefer over CSV — no quoting headaches, no embedded-comma issues, just tabs. Nested keys are flattened with dot notation (user.email, meta.tags.0). 100% in-browser.
Why TSV over CSV?
Tabs almost never appear inside data, so TSV files don't need the quoting / double-quote
escaping that makes CSV so error-prone. Most big-data tools (BigQuery's
LOAD DATA, Snowflake's COPY INTO, cut -f /
awk -F$'\t' on the command line) read TSV more reliably and faster than CSV.
When your records contain free-text fields with commas, quotes, and newlines, TSV is the
pragmatic choice.
How it handles nesting
Nested objects are flattened with dot notation: {"user":{"email":"x"}} becomes
the column user.email. Arrays are flattened by index:
{"tags":["a","b"]} becomes tags.0, tags.1. Tabs and
newlines inside values are escaped as \t and \n so the file
stays one-record-per-line.
Tips & common pitfalls
- Sparse records produce empty cells. If line 1 has
nameand line 2 hasemail, the output has both columns with empties where the value was missing. - Header row is auto-detected on reverse. TSV → JSONL uses the first line as keys.
- Tab characters in source data are escaped. The converter replaces literal tabs in values with
\tto preserve the table shape.
Example
Input JSONL:
{"id":1,"user":{"name":"alice","age":30},"tags":["admin","ops"]}
{"id":2,"user":{"name":"bob","age":25},"tags":["dev"]}
Output TSV (tabs shown as →):
id→user.name→user.age→tags.0→tags.1
1→alice→30→admin→ops
2→bob→25→dev→