Open or paste a CSV file and the TSV appears in the preview; Download TSV saves it as a .tsv file. Commas inside values need no quotes in TSV, so most rows come out as plain tab-separated text. The one real decision is what to do with tabs and line breaks inside a value: quote it for Excel and pandas, backslash-escape it for PostgreSQL, or replace it with a space for strict TSV readers. The file is converted in your browser and never uploaded.
How to convert CSV to TSV
- Open a
.csv,.tsvor.txtfile, drop it on the tool, or paste rows. The delimiter is detected; set it, or a legacy encoding such as Windows-1252, under Import settings if needed. - Under Tabs and line breaks inside values, choose the style the program reading the TSV expects. Then set Line endings and Include the header row.
- Choose the Output encoding and select Download TSV, or Copy the text.
To convert several CSV files with the same settings, choose Batch: convert several files. Each file is read with automatic delimiter detection and a header row, and the results download together as one ZIP.
Tabs, line breaks and encoding options
| Quote the value (Excel, pandas) | The default. A value containing a tab, a line break, a double quote, or a leading or trailing space is wrapped in double quotes, with inner quotes doubled, the same rules CSV uses with a tab as the delimiter. Everything else is written bare. |
|---|---|
| Backslash escapes \t \n (PostgreSQL) | Never quotes. A tab becomes \t, a line feed \n, a carriage return \r and a backslash \\, so every record stays on one line. This is the text format PostgreSQL COPY reads; double quotes are written as plain characters. |
| Replace with spaces (strict TSV) | Each tab, line break or CRLF pair inside a value becomes one space, so the file meets the IANA rule that fields contain no tabs. Backslashes and quotes are left as they are. This changes data, and the tool reports how many values were affected. |
| Line endings | Windows (CRLF) (default) or Unix/macOS (LF) after every record, including the last. |
| Include the header row | Turn it off to write data rows only, for example when appending to an existing table. |
| Protect against spreadsheet formulas | On by default. Values starting with =, +, -, @, a tab or a carriage return get a leading ' so a spreadsheet shows them as text. Plain numbers such as -12.5 are unchanged. Turn it off when the TSV feeds a database or script and must hold the values exactly. |
| Output encoding | UTF-8, UTF-8 with BOM (for Excel), UTF-16 LE (with a byte-order mark) or Windows-1252. Windows-1252 stops with a message naming any character it cannot store. |
Commas, multiline cells and IDs in TSV
- Quoted commas in the CSV need nothing in TSV:
"Desk lamp, brass"becomesDesk lamp, brass. - A multiline cell stays one value. With quoting it spans lines inside quotes; with escapes it is written as
Ships in 2 boxes\nfragileon one line. - Leading zeros and long IDs are written exactly: TSV has no types, so
00731stays00731. - With escapes, a Windows path such as
C:\tempis writtenC:\\temp, so a reader that decodes escapes gets the original back. - A row with more values than the header gets extra columns named
Column 4,Column 5…; a shorter row is padded with empty values. Blank headers becomeColumn 3and repeated onesname (2).
When the TSV loads wrongly
- Rows split in the middle when loaded. The reader doesn’t understand quoted line breaks. Choose Backslash escapes \t \n (PostgreSQL) if it decodes escapes, or Replace with spaces (strict TSV) if it doesn’t.
- Values start with an apostrophe. That is Protect against spreadsheet formulas at work. Turn it off for database or script imports.
- The spreadsheet shows backslash codes. A cell reads
\nor\tbecause spreadsheets don’t decode backslash escapes. Use Quote the value (Excel, pandas) for files meant for Excel or LibreOffice. - Everything ends up in one column. The input delimiter was guessed wrong; set it under Import settings and open the file again.
Limits and large files
Files up to 25 MB, 100,000 rows, 250 columns and 2 million cells open with a live preview. Larger files are converted in streaming mode: the file is read twice in chunks, once to find the widest record and once to write, and the download covers every row with the same output the preview would show. Copy isn’t available for those files, and a single output is capped at 4 GB.
In streaming mode the file is decoded automatically (UTF-8, or UTF-16 when it starts with a byte-order mark) and the first row is treated as the header.
Conversion runs in a background worker in this tab; Cancel stops it. To change the delimiter but keep CSV quoting, use Change CSV delimiter and encoding; for a table to paste into documentation, use CSV to Markdown.
Example: an order list as TSV
An order list with a quoted comma, a two-line note and a formula-like value, converted with the defaults (Quote the value (Excel, pandas), formula protection on; shown with LF line endings). With Backslash escapes \t \n (PostgreSQL) the note becomes Ships in 2 boxes\nfragile on one line and the formula value is written without quotes.
id,product,note
00731,"Desk lamp, brass","Ships in 2 boxes
fragile"
00732,Cable tidy,"=HYPERLINK(""x"")"id product note
00731 Desk lamp, brass "Ships in 2 boxes
fragile"
00732 Cable tidy "'=HYPERLINK(""x"")"Questions and answers
What is the difference between CSV and TSV?
Only the delimiter and its conventions. TSV separates fields with a tab, so commas in values need no quotes. The IANA definition forbids tabs inside fields, which is why tools disagree on how to write them.
Which option should I pick for PostgreSQL COPY?
Backslash escapes \t \n (PostgreSQL), with formula protection off. PostgreSQL’s text format uses a tab delimiter by default and decodes \t, \n, \r and \\. An empty value is loaded as an empty string, because the default NULL marker in that format is \N; add NULL '' to the COPY options to load empty values as NULL.
Can I convert TSV back to CSV?
Yes: open the TSV in Change CSV delimiter and encoding. The tab delimiter is detected, and you can choose a comma or semicolon output. Backslash escapes are read as plain characters, not decoded.