CSV → TSV
Turn comma tables into tab-separated values. Commas in fields handled for you.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Drag & drop file here or browse
Options
TSV can't keep a newline inside one cell. Refuse is the honest default.
Convert CSV in three steps
Paste or drop
Any CSV table. The shared RFC 4180 parser handles quoted fields and commas inside them.
Convert
Press Convert (or Ctrl/⌘ + Enter). Big tables run in a background worker.
Take the TSV
Copy or download the tab-separated result, ready for a spreadsheet or a pipeline.
Same table, different delimiter
CSV → TSV parses a comma-separated table and writes it back with tabs as the delimiter. The shared RFC 4180 parser reads quoted fields correctly, so a comma inside a quoted cell is preserved as ordinary data (the surrounding quotes are dropped, since a tab delimiter no longer needs them). Two things are refused rather than silently corrupted: a rectangular grid is required (ragged rows fail with the exact line number), and a field containing a newline has no way to stay one cell in TSV. The converter flags it and lets you escape it to a literal \n. Large tables run in a background worker. Convert is about 1× size, so it handles the largest tables. Baseline on 8GB Win10, Node 24: 100K (9.4MB) 1,531ms, 500K (46.8MB) 5,553ms parse, 1M (93.7MB) OOM at 2GB heap — preview capped, download holds full file.
Common issues & tips
A newline can't live in a TSV cell
TSV has no way to keep a newline inside one cell. It would split the row. Rather than corrupt your table, the converter refuses and points at the cell, or escapes it to a literal \n if you pick that option.
name,notes Ada,"line one line two"
Ragged rows fail
CSV → TSV needs a rectangular grid. A row with a different number of fields fails with the exact line number instead of being silently padded or dropped, which would change your data.
name,role,level Ada,Engineer,7 Alan,Engineer
Commas inside quotes survive
The parser reads quoted fields, and since TSV uses tabs the comma becomes ordinary text. the surrounding quotes are dropped. A comma in a field never splits the row.
name,city "Turing, Alan",London
This direction is the lossy one
CSV → TSV is the lossy direction when a field contains an embedded newline. The reverse (TSV → CSV) is always lossless because CSV quoting can hold anything.
Try these
name,role,level Ada,Engineer,7 Alan,Engineer,8
Commas become tabs; the header row is preserved.
name,city "Turing, Alan",London
The quoted comma stays one cell and the quotes are dropped.
pair this withReverse it → TSV → CSV·Or go to JSON → CSV → JSON·Flatten JSON instead → JSON → CSV
Frequently asked questions
How does the large-file mode work?
If you drop a file larger than 15 MB, the tool switches to a background worker. It reads the file off the main thread, converts it in one pass, and gives you a capped preview in the editor. The full result is always available as a download. Nothing is uploaded.Read the honest limits in our large-file guide →
Is my CSV uploaded anywhere?
No. Parsing and conversion run entirely in your browser (in a background worker for large tables). Your data never leaves your machine.
Can it handle large CSV files?
Yes. Files above about 15 MB switch to a dedicated large-file mode: the file is read and converted in a background worker, you see a capped preview in the editor, and the full TSV is a one-click download. Nothing is uploaded. The only ceiling is your device's memory. See how large-file mode works →
What happens to commas inside quoted fields?
They're preserved. The parser reads quoted fields correctly, and since TSV uses tabs, the comma becomes ordinary text. The surrounding quotes are dropped.
Why does a field with a newline fail the conversion?
TSV has no way to keep a newline inside a single cell. It would split the row. Rather than silently corrupt your table, we refuse and point at the cell, or escape it to a literal \n if you choose that option.
Do ragged rows work?
No. CSV → TSV needs a rectangular grid. Rows with a different number of fields fail with the exact line number instead of being silently padded or dropped, which would change your data.