What this tool does
The same table as the CSV conversion, with tabs between the fields:
[{ "name": "Ada", "born": 1815 }]
name born
Ada 1815
The root has to be an array of objects, ragged records become the union of every key, and a nested value is written as JSON inside its cell — the rules are the ones the CSV conversion follows.
Why tabs
A comma is in every address, every European price, every sentence of prose. A semicolon is the European answer to that, which is why the same file opens differently in Paris and in Chicago.
A tab is in almost nothing. That is the whole argument for TSV, and it is a good one.
The catch worth knowing
TSV has two definitions, and they disagree.
The strict one — the IANA media type text/tab-separated-values — has no escaping mechanism at all. A field simply may not contain a tab or a newline.
The practical one, which spreadsheets use, borrows CSV’s quoting: a field containing a tab is wrapped in quotes.
This conversion writes the practical form, because it is what Excel, Numbers and LibreOffice read. If your consumer implements the strict definition, remove tabs from your values before converting rather than after — the quotes it does not understand will become part of your data.
Encoding, the usual warning
A tab solves the delimiter problem, not the encoding one. Excel still guesses the character set of a file it opens, and still guesses wrong for UTF-8 without a byte-order mark. Use the import dialog rather than a double-click, or go through the CSV conversion with its Excel option, which writes the mark.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.