Convert

CSV to TSV Converter

Convert a CSV file to tab-separated TSV in your browser. Side-steps the "is the comma a delimiter or part of the data?" problem.

CSV is the lingua franca of tabular data, but it has a real flaw: commas show up inside data all the time — addresses, free-text fields, monetary values written like "1,234.56" — which forces every cell to lean on quoting rules that not every tool implements correctly. TSV (tab-separated values) avoids this by switching to tab as the delimiter, which essentially never appears inside real-world cell values.

This tool reads your CSV with the same parser SheetCompare uses for diffs, then writes a TSV that downstream tools — database `COPY` commands, Unix pipelines, BigQuery loads — can ingest without quoting drama. Any tabs that do appear inside cell values are preserved verbatim. Everything happens in your browser.

How it works

Three steps, no signup

  1. 1

    Drop your CSV

    Drag a .csv file into the box above, or click to pick one. RFC 4180-style quoting (commas-in-cells, embedded quotes, multi-line cells) is parsed correctly.

  2. 2

    We re-emit with tabs

    Each row gets emitted with tab separators. Quotes are unwrapped where they were only escaping commas, since tabs don't need that protection.

  3. 3

    Download the .tsv

    A clean tab-separated file is ready. Pipe it to `psql \copy`, `bq load`, or open it in Excel via Data → From Text.

FAQ

Frequently asked questions

Why convert to TSV at all — isn't CSV more universal?
CSV is more universal in the sense that more tools open it by default. TSV is more reliable in the sense that the delimiter almost never appears inside the data. If you're loading the file into Postgres with `\copy`, BigQuery, Snowflake, or any pipeline where you've been bitten by quoting bugs, TSV is the right call. For Excel double-clickability and email attachments, stay with CSV.
What happens if my CSV has tabs inside a cell?
They're preserved verbatim, which means your TSV will have a tab inside that cell — a parser that splits on tabs will see two columns instead of one. This is rare in practice (tabs almost never appear in real tabular data) but worth knowing. If you suspect tabs in your source, replace them with spaces before converting, or use a CSV reader on the output rather than a naive split.
Are commas in cell values preserved?
Yes — that's the whole point. A CSV cell `"Smith, John"` becomes a TSV cell `Smith, John` with the comma intact and no quoting needed, since tab is the delimiter. The output is dramatically cleaner for cells with punctuation.
What about quoting in the output?
TSV by convention doesn't quote at all. Cells are emitted as-is, separated by tabs, with rows separated by newlines. If a cell happened to be quoted in your CSV (e.g. `"hello"` literally with the quotes), those quotes will be present in the TSV cell as data — which is what you want.
How are embedded newlines in cells handled?
TSV doesn't have a standard way to express multi-line cells. We replace embedded `\r\n` and `\n` inside cells with a literal space so each row stays on one line. If you need multi-line cells preserved, stay with CSV (which quotes them) or use a richer format like JSON.
Will Excel open the resulting TSV?
Excel won't recognize .tsv on a double-click as cleanly as .csv. The reliable path: open Excel first, then use Data → From Text/CSV, point at the .tsv, and pick "Tab" as the delimiter. Google Sheets handles it via File → Import → Upload, with delimiter set to tab.
Can I round-trip CSV → TSV → CSV losslessly?
Almost always yes — the cell values, headers, and row count come through identically. The exception is multi-line cells, which we collapse to single-line during the CSV → TSV step (see above). For everything else, the round-trip is lossless because we preserve cell content verbatim and only swap the framing.

Need to compare two files?

Drop two spreadsheets and see every change in seconds. Free, private, runs in your browser.