dataeng.tools

Convert TSV to CSV — Free, Private, In-Browser

A TSV and a CSV are the same kind of file: flat, untyped, delimited text with a header row and one record per line. The only difference is the separator — a tab character instead of a comma. Nothing about the data itself changes when you convert; there are no types to preserve, no schema, and no compression on either side, just the same bytes rearranged around a different delimiter. The reason to do it is almost always a downstream tool that specifically wants commas — a loader, an import wizard, or an API that hardcodes CSV and won't accept a tab-delimited file no matter how well-formed it is. If the receiver is delimiter-agnostic, you don't need this conversion at all.

The one thing that actually changes is quoting. Tabs almost never appear inside real-world values, so a TSV usually gets away with no quoting or escaping whatsoever — that's precisely why the format exists. Commas, by contrast, are everywhere: in addresses, free-text notes, currency amounts with thousands separators, concatenated names. The moment the delimiter becomes a comma, every value that contains one has to be wrapped in double quotes, and any literal double quote inside that value has to be doubled, per RFC 4180. DuckDB applies this automatically on the way out, so the result stays parseable — but be aware the file is now doing escaping work the TSV never had to, and a naive comma-splitter downstream will still break on those quoted fields.

Because both formats are just text, the values themselves come through unchanged — a number is the same string of digits, a timestamp is the same ISO-ish string, and NULLs stay as empty fields. The header row carries over and the file size stays roughly the same, since neither format is compressed. What's worth checking is dialect on the receiving end: whether it expects CRLF or LF line endings, whether it follows RFC 4180 quoting, and whether any column holds embedded newlines that will need quoting too. Everything runs locally in your browser via DuckDB-WASM — the file is parsed and rewritten on your own machine and is never uploaded.

Drop a file or click to browse

Drop a TSV file — processed locally, never uploaded

Frequently asked questions

Why convert to CSV instead of just keeping the TSV?
Only do it when a downstream tool specifically requires comma-delimited input — plenty of loaders, import wizards, and APIs hardcode CSV. Otherwise TSV is the safer format, because tabs almost never collide with your data and so rarely need quoting.
What happens to values that contain a comma?
They get wrapped in double quotes automatically, following RFC 4180, and any double quote already inside the value is doubled. That escaping is the whole reason TSV avoids the problem: tabs so rarely appear in real data that a TSV usually needs no quoting at all.
Do my data types or values change in the conversion?
No. Both TSV and CSV are untyped text, so numbers, dates, and booleans are stored as their string representation in both. The output is effectively identical to the input except for the delimiter (tab to comma) and any quoting added to fields that now contain a comma, quote, or newline.
Is my file uploaded anywhere?
No. The TSV→CSV conversion runs entirely in your browser via DuckDB-WASM. Your file never leaves your device.
How large a file can I convert?
It's bounded by your browser's available memory rather than any server limit — files in the hundreds of MB are routine. DuckDB runs single-threaded here, so very large files just take a little longer.
Do I need an account?
No — it's free and requires no sign-up.

Do more with your TSV file

Related conversions