Excel (XLSX) to TSV
Drop an .xlsx and get tab-separated text out, one sheet at a time. This is the conversion Excel itself does badly: Save As → Text (Tab delimited) only exports the active sheet, silently uses your system's locale for numbers and dates, and on some versions writes UTF-16 with a BOM that then breaks every Unix tool downstream. Here you pick the sheet, values come out as displayed, and the output is plain UTF-8. The reverse trip is TSV → XLSX.
How to use
- Drop the workbook onto the box, or click to pick a file.
.xlsx,.xlsm,.xlsb, and legacy.xlsall read. - Choose a sheet if the workbook has more than one — the picker enables itself and defaults to the first.
- Copy or download. The download is named after the source workbook with a
.tsvextension.
What happens to Excel-specific things
Formulas become their last-calculated value, not the formula text — which is almost always what you want, and is the only option available without a calculation engine. If a workbook was saved without cached values, those cells come out empty.
Dates and numbers are emitted as displayed rather than as raw serial numbers, so 19/07/2026 stays a readable date instead of becoming 46222. The flip side is that a column formatted to two decimals exports as 3.14 even if the underlying value has more precision. If you need full precision, remove the cell formatting in Excel first.
Merged cells put their value in the top-left cell of the merge and leave the rest empty — the same thing Excel's own text export does. Multiple sheets are never concatenated; convert them one at a time and stack the results with merge TSV files if you want them combined.
Tabs and newlines inside cells are a real hazard here, because a spreadsheet cell can legitimately contain both and TSV cannot. Any cell containing a tab, newline, or quote is written quoted, RFC-4180 style, which every well-behaved parser handles but strict tab-only readers do not. If your consumer is strict, run the output through escape tabs and newlines.
Why the sheet is read locally
Parsing an XLSX means unzipping it and reading its XML — work a browser is perfectly capable of. The SheetJS library that does it is loaded from a CDN and then runs entirely on your machine; your workbook is never sent anywhere. That does mean this one page needs network access on first load, unlike the rest of the site.
FAQ
Why TSV instead of CSV out of Excel?
Because spreadsheet data is full of commas — addresses, currency, prose in a notes column — and every one of them forces quoting in CSV. Tabs almost never appear in cell values, so the tab-delimited form usually needs no quoting at all and stays readable in a terminal. If you do want commas, TSV → CSV is one hop away.
Can I just copy from Excel and paste?
Yes — Excel puts TSV on the clipboard natively, so pasting into any of these tools already gives you tab-separated data. Paste from Excel is built around that: paste a selection and get TSV, CSV, JSON, Markdown, or SQL back. Use the file route here when you need a sheet you're not looking at, or the whole thing rather than a selection.
Does it handle .xls (the old format)?
Usually, yes — the same library reads the legacy binary format. Very old or unusual files occasionally fail; the status line will say so rather than producing garbage. Re-saving as .xlsx in any spreadsheet app fixes those.
Are there row limits?
No hard cap, but the whole workbook is decompressed in memory, so a 50 MB xlsx with a million rows will be slow and may fail on a phone. Splitting the sheet in Excel, or converting on a desktop browser, is the workaround.
What about charts, pivot tables, and formatting?
All discarded. TSV is a grid of text values — there is nowhere for a chart, a colour, or a pivot definition to go. Only cell values survive.
Privacy
100% client-side. The workbook is parsed in your browser and never uploaded. See the privacy policy.