Home · Free tools · XLSX to CSV
XLSX to CSV
Drop an .xlsx or .xls-exported file, pick the sheet you want, and download it as CSV. It happens in this tab — the workbook is never uploaded — and the CSV is written as UTF-8, which is the part that goes wrong when you use Excel's own Save As.
Convert a workbook
Drop an .xlsx file here, or click to choose
Doing this every month? Do it once in TableDI 2, save it as a job, and run it again next month. Download TableDI 2 free
Nothing is uploaded. The file is read by JavaScript in this tab and never leaves your computer — no server sees it, and closing the tab throws it away.
Why not just use Save As in Excel
You can, and for a single-sheet English workbook it is fine. Three things go wrong often enough to be worth knowing about:
- The encoding. Plain Save As → CSV writes the file in the system's legacy code page, not UTF-8. Accented European text and every CJK character come back as mojibake in anything that expects UTF-8 — which is most databases, most import scripts and most other spreadsheets. Excel does have a CSV UTF-8 option, and it is not the one most people click. Everything exported here is UTF-8.
- Only the active sheet is written. A workbook with twelve sheets gives you one CSV and no warning about the other eleven. Here every sheet is listed and you pick which one to export.
- The separator follows your locale. On a machine set to German or French, Excel writes semicolons, because the comma is the decimal separator there. That file is still called .csv and will not parse where a comma was expected. This page writes commas, and quotes any field that contains one.
What comes out
A comma-separated, UTF-8 file with CRLF line endings and RFC 4180 quoting: fields containing a comma, a quote or a newline are wrapped in quotes, and quotes inside them are doubled. That is the shape almost every parser expects, and it is what stops a description field with a comma in it from silently becoming two columns.
Numbers and dates are exported as the text you see in the preview. A cell Excel stored as a date
serial with a display format is written the way it was displayed, not as 45901 — which
is the other classic way this conversion loses information.
Nothing is uploaded, and you can verify that
The workbook is unzipped and parsed by JavaScript in this tab, using the browser's own
DecompressionStream. There is no upload endpoint in the page, so there is nothing to
trust: open your browser's network tab and convert: no request carrying your data appears.
That matters more for spreadsheets than for most file types. The workbooks people need to turn into CSV are usually the ones feeding a database or a script — exports with customer records, payroll lines, order histories.
Filtering before you export
The search box filters the rows, and what you download is what you are looking at. Converting only the rows matching one region or one month is a filter and a click rather than a conversion followed by a spreadsheet session.
When this is the wrong tool
This converts a workbook you already have. If the same workbook arrives every month and has to become the same CSV every month, that is a routine, not a conversion — and doing it by hand in a browser tab is the part that eventually gets skipped.
TableDI 2 is a desktop app for file work you redo every period: it keeps your sources, rules and delivery as a job, so next month you drop in the new files and run it again. Everything runs on your own machine. Nothing runs on a schedule: you start each period yourself, and the preflight tells you whether the new workbook still looks like the last one before anything is written.
Questions people ask
How do I convert xlsx to csv without uploading it?
Drop the workbook on this page. It is unzipped and parsed by JavaScript in your own browser — no server sees it — then click Download .csv under the table. Closing the tab throws the data away.
Why does my CSV from Excel show strange characters, and does this fix it?
Excel's plain Save As → CSV writes the file in the system's legacy code page rather than UTF-8, so accented and CJK text arrives as mojibake wherever UTF-8 is expected. Everything exported from this page is UTF-8. It also works the other way: drop a Shift-JIS, Big5 or Windows-1252 CSV here and the encoding is detected and repaired on the way out.
My workbook has several sheets. Which one gets exported?
The one selected in the Sheet dropdown — every sheet in the workbook is listed there, and you export them one at a time. Hidden sheets are skipped unless the workbook has nothing else in it.
Are formulas exported, or their results?
Their results. An .xlsx stores the last value Excel calculated alongside the formula, and that cached value is what a CSV can hold — CSV has no concept of a formula. If a workbook was written by a tool that never calculated it, those cells may be empty.
Are my files uploaded anywhere?
No. The file is read by JavaScript running in this tab, using the browser's own
DecompressionStream to unzip .xlsx and a parser that runs on your machine. The page does load two visitor counters — static.cloudflareinsights.com and this site's own /_vercel/insights — but no request carrying your data appears in the network tab while you use it. Close the tab and the data is gone.
Does it work with old .xls files?
Not directly. The .xls format is a different, binary format from Excel 97. Open it in Excel, LibreOffice or Numbers and save as .xlsx or .csv, then come back. The tool tells you this rather than failing silently.
Can I export only some of the rows?
Yes — type in the search box and the download contains what the table is showing. The header row is kept when First row is a header is ticked.
Related
Doing this every month?
In TableDI 2 you do it once, then save it as a job. Next month you drop in the new files and run it again.
macOS, Apple silicon and Intel; Windows is in progress (what to do meanwhile). Free is not a trial — no account, no card.
Last reviewed 2026-09-11 by the TableDI team. Something wrong on this page? Tell us — it is one inbox, read by the people who build TableDI.