XLSX to CSV
Every sheet in the workbook, converted here in the tab — with the separator, the encoding and the date format decided before anything is downloaded.
- SECURE
- NO UPLOADS
- NO SIGNUP
- BROWSER BASED
- FREE
- FOREVER.
Support us with a link or a share
Drop an .xlsx workbook here
Nothing is uploaded. The archive is unpacked and read in this tab.
Copy a range in Excel, Numbers or Google Sheets and paste anywhere on this page — the grid comes across whole, including any cell with a line break inside it. The box above is for text you already have.
XLSX to CSV, one sheet or all of them
A workbook is a stack of sheets. A comma-separated file is one flat grid. Every conversion between the two has to answer the question of which sheet you meant, and the usual answer is to quietly take whichever one was in front. That is what Save As does, and it warns you about it in a dialog most people dismiss without reading. A quarterly file with a tab per month therefore costs twelve trips through the same menu.
Here the sheets are listed the moment the file is read, each with its row and column count, and you tick whichever ones you want. One ticked gives you a plain download. Several ticked gives you an archive holding a separate file per sheet, named after the workbook and the tab so you can tell them apart a week later. Nothing is chosen for you and nothing is hidden.
A newly collected inventory can begin with the barcode scanner to Excel; export XLSX there for review, then return here when a receiving system needs flat CSV instead.
A workbook and a CSV file, in brief
| Full name | Office Open XML Workbook |
|---|---|
| Extension |
.xlsx
|
| Format type | Spreadsheet — a ZIP archive of XML parts |
| MIME type |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
| Full name | Comma-Separated Values |
|---|---|
| Extension |
.csv
|
| Format type | Plain text table, one record per line |
| MIME type |
text/csv
|
How to change Excel to CSV without opening the file
Google asks this on your behalf, in the questions underneath the results, and it is a fair thing to want. Launching a spreadsheet application to export one table is slow, it needs a license you may not have on this machine, and on a locked-down laptop it may simply not be an option.
An .xlsx is a zip archive with XML inside it, which means reading one takes no
spreadsheet at all — just something that can unzip and parse. Your browser can do both. Drop
the file above and it is unpacked in the page, so the workbook is never opened in the sense
the question means, and never handed to anyone either. The other suggestion you will see,
importing the thing into Google Sheets, does work — at the cost of putting the file on
someone else's servers, which is the exact trade this site exists to avoid.
The separator is not always a comma
Send one of these files to a colleague in Stockholm, Berlin or Madrid and there is a good chance every row arrives crammed into column A. Their copy of the spreadsheet reads the semicolon as the field separator, because in those languages the comma is the decimal point and cannot do both jobs at once. Nothing is broken; the two machines simply disagree about what the punctuation means.
So the separator is a choice here rather than a consequence of your system settings, with comma, semicolon, tab and pipe available and a line under each saying who wants which. A tab is the quiet favorite when you control both ends, since tabs almost never turn up inside a value and therefore never need escaping. Whatever you pick, values containing the separator are wrapped in quotes and internal quotes are doubled, so an address with a comma in it stays one field.
Accented characters, and the three bytes that save them
The second thing that goes wrong is names. Åsa, José and 张伟 survive the conversion perfectly well — the trouble comes later, when a spreadsheet on Windows guesses at the encoding and guesses wrong, turning them into Ã…sa and José. The fix is a byte order mark: three invisible bytes at the front declaring the file to be UTF-8, ticked by default above and explained at length in what a byte order mark is.
Untick it when the file is going somewhere else. Command-line tools, database loaders and a good number of scripts read those bytes as ordinary characters and end up with a first column whose name has invisible junk glued to the front — a bug that takes an afternoon to find because the name looks correct everywhere you inspect it.
Dates are numbers, and formulas are answers
Inside the archive a date is stored as a count of days since the beginning of 1900. What
makes 46036 mean the fourteenth of January is a formatting rule kept in an
entirely separate part of the file. Converters that skip that part hand you a column of
five-digit numbers, which is the single most common way this job goes wrong. Those rules are
read here, dates come out in ISO order by default, and you can switch to the American or
European arrangement if the recipient expects one. Only the columns the workbook genuinely
formats as dates are touched — a text cell that happens to read like one is left alone.
Formulas resolve to their results: a cell holding a sum arrives as the number. This is not a shortcut but the only honest option, since the format has no way to store a formula and recalculating a workbook would need the whole function library the spreadsheet has and we do not. The number written is the one the spreadsheet itself worked out and saved. Files generated by scripts sometimes carry formulas that were never calculated at all; those cells come out empty, and the receipt counts them for you rather than leaving you to wonder.
Where the column names actually are
Plenty of real workbooks do not begin with their headings. There is a banner across the
top — a project name, a quarter, the word DRAFT — then a blank line, and the words
region, units and closed only turn up on the third
row. Read literally, that banner becomes the heading line of your CSV and the genuine
headings are demoted to ordinary data. Every column then carries the wrong name, and the
file looks fine until something downstream reads it.
So the heading row is worked out from the shape of the rows rather than assumed to be the first one, and — this is the part that matters — it is shown to you as a choice you can change before anything is downloaded. Underneath the menu sit the headings it settled on and three genuine rows of data, so a wrong answer is visible rather than discovered later. Anything above the heading row is quoted back to you, because a title stranded above a table is not data and writing it out would leave the file with a first line a different width from all the others.
The detection is deliberately cautious, and it does miss a case worth naming: a budget
sheet whose columns are called 2025 and 2026. Bare numbers are
treated as values rather than names, which is what stops a stray total from being mistaken
for a heading, and the cost of that caution is this one. Pick the right row from the menu
and it is corrected in a click. You can also say there is no heading row at all, in which
case every line in the sheet is written out as data — a perfectly ordinary CSV, since
whatever reads it can name the columns itself.
What this page will not do
It will not read .xls, the format from before 2007. That is a binary document
with nothing structurally in common with the modern one, and supporting it would mean a
second reader for a format Microsoft itself has been retiring for fifteen years. Open such a
file anywhere and save it again in the current format first.
Colors, column widths, merged cells, charts and validation rules all disappear, because the
target format has no concept of any of them — that loss is inherent to the destination, not a
shortcoming of the conversion. Going back the other way, from a flat table to a real
workbook, is a genuinely different job, and it has its own page:
CSV to Excel writes proper .xlsx output rather than
a renamed text file, and lets you fix the separator and the column types before the file
exists instead of arguing with an import wizard afterwards.
(SQL to Excel is the same destination from a query result.)
If you only want to read what you were sent, the
CSV viewer lays a file out as a sortable grid, and
Excel to SQL takes the same workbook straight to insert
statements when a database is where it is headed.
Excel to Markdown keeps worksheet, range, formula,
hidden-cell and merge decisions visible when the destination is a pipe table.
Nothing leaves this tab
Several of the results above this page charge for the privilege of receiving your file — one desktop product on the first page of Google asks $49.90 — and all of them need a copy of it to do the work. Here the unpacking, the parsing and the download are assembled by your own browser. Open the network panel before you hand the file over and you can watch it stay empty.
When the CSV is only a waypoint and the real destination is an API or a script, the sheet can carry on to CSV to JSON in the next tab, which decides one type per column and shows you each decision before writing anything.
That matters more than it might for other formats. A workbook heading for conversion is usually a customer list, a payroll run or a set of accounts, and posting it to a stranger in return for a text file is a poor bargain. Large files are not refused either: you are told what your own machine is in for and the work then goes ahead, because a ceiling on a job that runs on your hardware would be an arbitrary limit rather than a real one.
One workbook this page cannot read straight away is one whose sheets are locked. The conversion itself does not care about a protection flag, but a spreadsheet you cannot edit is usually one you cannot check either — so if that describes your file, removing the sheet protection first takes a moment and happens in the same tab, after which the sheets convert normally.
Questions
How do I convert an XLSX to a CSV?
Drop the workbook on the box above and it opens here in the tab, sheet by sheet. Tick the sheets you want, glance at the table that appears, and take the download. Nothing is uploaded and no account is asked for, so the whole thing takes about as long as finding the file did.
How do I change Excel to CSV without opening the file?
That is what this page does. The workbook is unpacked and read by JavaScript in your browser — a .xlsx is a zip archive of XML parts, and reading it needs no spreadsheet application at all. You never open Excel, you never install anything, and you never hand the file to a server. It also means the job works on a machine with no Excel license on it.
Does it convert every sheet or just the active one?
Every sheet, if you want them. This is the one thing Excel's own Save As will not do: it exports the sheet you are looking at and warns you in a dialog most people click straight past, so a workbook with twelve tabs means twelve manual saves. Here all the sheets are listed with their row counts, you tick the ones you want, and picking more than one gives you a zip with a separate CSV inside for each.
Why do people use CSV instead of Excel?
Because everything reads it. A CSV is a text file, so a database importer, a Python script, an accounting package and a colleague on a Mac all handle it identically, while .xlsx needs a library that understands zip archives and XML. The trade is real, though: a CSV holds no formatting, no formulas, no column types and no second sheet — which is precisely why this page asks which sheet you meant.
What happens to my formulas?
You get the value, not the formula — a cell holding =SUM(B2:B4) comes out as 96. That is the same choice Excel makes when it exports, and for the same reason: a CSV has no way to store a formula. The value written is the one the spreadsheet itself last calculated and saved alongside the formula. If a file was produced by a script that wrote formulas without ever calculating them, those cells arrive empty, and the receipt says so rather than inventing a number.
My sheet has a title above the table. Does that become the header row?
No. The row holding your column names is worked out from the shape of the sheet rather than assumed to be row one, and you are shown which row it picked with a menu to change it. A banner sitting above the table is quoted back to you and kept out of the file, because a stray title would give the output a first line of a different width from every other line. If you would rather have the old behavior, choose row one from the menu and you get exactly that.
What if my spreadsheet has no column names at all?
Pick the last entry in the menu and every line goes in as data, including the very first. That is a completely legitimate result here rather than a fallback: a comma-separated file has no notion of a header, only a first line, so whatever ends up reading the file is free to name the columns itself. Note that this is a different thing from the tick box for leaving the header row out — that one removes a row it has identified, while this one says there was never a header to identify, so no line of your data is discarded.
Will accented characters survive in Excel?
Yes, as long as the byte order mark stays ticked, which it is by default. Those three invisible bytes are the only way an Excel on Windows knows the file is UTF-8; without them Åsa opens as Ã…sa. Untick it if the file is heading for a script or a database importer instead, because a few of those read the mark as part of the first column name.
Is my spreadsheet uploaded anywhere?
No. The archive is unzipped and the XML parsed in this tab using the browser's own decompression, and the download is assembled locally too. Open the Network panel before you drop the file and you will watch nothing go out. It matters here more than for most formats — a workbook on its way to CSV is usually a customer list, a payroll export or somebody's accounts.