Quoted tab inside a field
- Input
- TSV row: 001\tAda\t"tab\tinside"\t02134\ttrue
- Output
- CSV output: 1,Ada,tab\tinside,2134,true. The inner tab stayed in the note value, not as a comma.
TSV to CSV changes tab separators to commas after our table engine has parsed each row, which matters when a quoted TSV field itself contains a tab.
From real runs
| Element | Result | What happens |
|---|---|---|
| Tab delimiters | Changed | Separating tabs were replaced by commas, while the tab inside the quoted note cell remained part of the value. |
| Header row | Kept | id, name, note, zip, and active remained the output header names in the same order as the TSV source. |
| Embedded tab text | Kept | The value tab inside was written inside a CSV field without quoting because a literal tab is not a CSV delimiter. |
| Leading zeros | Changed | The TSV values 001 and 02134 became 1 and 2134 after scalar inference, matching the CSV output we inspected. |
| Unicode characters | Kept | Zoë was written as UTF-8 text in the CSV output, with no replacement characters in the downloaded file. |
| Boolean words | Changed | true and false were interpreted as booleans and serialized back as lowercase CSV tokens. |
Separating tabs were replaced by commas, while the tab inside the quoted note cell remained part of the value.
id, name, note, zip, and active remained the output header names in the same order as the TSV source.
The value tab inside was written inside a CSV field without quoting because a literal tab is not a CSV delimiter.
The TSV values 001 and 02134 became 1 and 2134 after scalar inference, matching the CSV output we inspected.
Zoë was written as UTF-8 text in the CSV output, with no replacement characters in the downloaded file.
true and false were interpreted as booleans and serialized back as lowercase CSV tokens.
We converted our TSV sample (226 B) with Table engine on 2026-09-11. It took 1 ms and produced a 281 B CSV file, 1.2× larger than the input. The engine raised no warnings.
Input · sample.tsv · 226 B
4 data rows × 5 columns; header: company stage arr owner close_date
Output · sample.csv · 281 B
4 data rows × 5 columns; header: company,stage,arr,owner,close_date
First lines of the output
company,stage,arr,owner,close_date
Northwind Traders,Proposal,48000,R. Ayers,2026-10-14T00:00:00.000Z
Contoso Ltd,Negotiation,120000,P. Ng,2026-09-30T00:00:00.000Z
Fabrikam,Qualified,22500,R. Ayers,2026-11-02T00:00:00.000Z
Tailspin Toys,Won,64000,M. Okafor,2026-09-03T00:00:00.000ZPython csv module
python - <<'PY'
import csv
with open("input.tsv", newline="", encoding="utf-8") as src, open("output.csv", "w", newline="", encoding="utf-8") as dst:
reader = csv.reader(src, delimiter="\t")
writer = csv.writer(dst)
writer.writerows(reader)
PYThe standard library keeps every field as text, so compare output if you rely on tabular-ir's typed dates or booleans.
The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=tsv&to=csv.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.tsv" -F "from=tsv" -F "to=csv" \
-F 'options={"delimiter":","}' \
--output output.csv| Key | Applies to | Type | Default |
|---|---|---|---|
| delimiter | Reading TSV | string | , |
| header | Reading TSV | boolean | true |
| quote | Reading TSV | string | " |
| encoding | Reading TSV | utf-8 · latin1 | utf-8 |
| delimiter | Writing CSV | string | , |
| newline | Writing CSV | · |
They can when the producer quotes the field, and our TSV sample did that successfully. If the tab is not quoted, every parser will treat it as a separator.
The note contained a tab, not a comma or quote. CSV does not require quotes for tabs, so the writer emitted the field plainly.
Yes. TSV to CSV runs through our table engine and finishes in well under a second for files of a few megabytes.