TSV is more than splitting on a tab
A quoted cell may contain a tab or span several lines. Splitting every line on a tab would break that record. This tool parses quoted delimited data and writes proper escaping when converting to CSV or TSV.
import csv, json
with open('data.tsv', newline='', encoding='utf-8') as f:
rows = list(csv.DictReader(f, delimiter=' '))
print(json.dumps(rows, ensure_ascii=False, indent=2))
Keep identifiers as strings
A value such as 007 may be an account identifier rather than the number seven. Strings are the default when importing TSV or CSV. Type inference is optional, and values that would lose numeric precision remain text. JSON numbers retain their original spelling when converted back to a delimited format.
Spreadsheet formula protection
For CSV or TSV output, formula-like cells receive a leading apostrophe by default. This helps when opening untrusted data in a spreadsheet. Disable it when a downstream program needs the original characters. The text conversion is limited to 10 MB.
For multiple worksheets and XLSX output, use the Excel converter.
Frequently asked questions
What is TSV?
Tab-separated values: each field is separated by a tab character rather than a comma. This converter also accepts quoted fields containing embedded tabs or line breaks.
Are numbers inferred automatically?
No. TSV and CSV cells become JSON strings by default, preserving leading zeros and identifiers. Enable type inference to convert unambiguous numbers and booleans; numbers that cannot be represented exactly remain strings.
What if a row has the wrong number of fields?
Conversion stops with a message. Fix the row rather than silently shifting values into the wrong columns. The first row is always the header.
Can I convert JSON with nested values?
Yes. Nested objects and arrays are stored as JSON text inside a single delimited cell rather than flattened into ambiguous column names.