Excel to CSV Converter
Convert Excel (.xlsx) files to CSV instantly in your browser. Your file never leaves your device.
100% private
Your files are processed locally and never uploaded to our servers.
Convert Excel (.xlsx) files to CSV instantly in your browser. Your file never leaves your device.
100% private
Your files are processed locally and never uploaded to our servers.
The Excel to CSV converter on this page turns an .xlsx workbook into comma-separated UTF-8 text in your browser, one sheet at a time or every sheet at once in a .zip. You need it when a system only takes CSV: a Shopify product import, say, or a Mailchimp audience upload. Often you're here because Excel's Save As already let you down, with Łukasz turned into ?ukasz or eleven of twelve tabs missing.
There's no daily limit and no account, and files can be up to 50 MB.
"As displayed in Excel" writes what you see in each cell, using the cell's number format. Excel's own Save As CSV does the same thing. "Unformatted numbers" writes the number underneath the format and every date in ISO 8601.
| The cell holds | As displayed in Excel | Unformatted numbers |
|---|---|---|
| 2134, formatted 00000 | 02134 | 2134 |
| 0.125, formatted as a percentage | 12.5% | 0.125 |
| 1234.5, formatted as currency | $1,234.50 | 1234.5 |
| 4 March 2026, formatted d mmm yyyy | 4 Mar 2026 | 2026-03-04 |
| 4 March 2026, 14:30 | as formatted | 2026-03-04T14:30:00 |
Use the default when a person will read the file or it's feeding a mail-merge. Zero-padded ZIP codes and account numbers keep their zeros, and percentages stay readable.
Switch to Unformatted numbers for anything that parses the file itself, like a database import or a pandas script. A numeric column there wants 1234.5, and the displayed "$1,234.50" carries a currency symbol and a comma the importer would have to strip. Day-month order is the other reason. 04/03/2026 means 4 March in London and April 3 in Chicago, and nothing in a CSV says which was meant. 2026-03-04 has one reading.
The cost of unformatted mode is the ZIP code: stored as the number 2134, it comes out as 2134. If one file needs both zero-padded codes and plain amounts, stay on "As displayed in Excel" and give the amount column a Number format with no currency symbol and no thousands separator before you convert.
A CSV has no room for anything but text, so every cell becomes a plain value:
| In the workbook | In the CSV |
|---|---|
A formula such as =SUM(D2:D41) | Its last calculated result |
| Rich text with one bold word | The plain text |
| A hyperlink | Its display text |
| #N/A, #DIV/0! | The error, as written |
| TRUE, FALSE | TRUE, FALSE |
| A merged range A1:D1 | The value once, in the first field, then three empty fields |
| Smith, John | "Smith, John" in double quotes |
| He said "yes" | "He said ""yes""" |
Quoting follows the CSV standard, RFC 4180: a value with a comma, a quote or a line break gets wrapped in double quotes, and any quote inside it is doubled. A multi-line address in one cell stays one field.
Every row has the same number of fields, running from column A to the last used column. Blank rows inside the data are kept as blank rows, so the 214th row of the CSV is row 214 of the sheet. That helps when an importer rejects a record and you need to find it in the workbook.
The file is UTF-8 with a byte-order mark and Windows (CRLF) line endings, matching Excel's own CSV UTF-8 format.
Usually they're still in the file. Excel removed them when it opened it.
The CSV holds the characters 02134 and nothing about what they are. Opening it by double-click, Excel reads 02134 as a number and shows 2134. That's the default; File > Options > Data has Automatic data conversion settings that change it. The trouble starts if you then save: Excel writes back what it now holds, and a correct export becomes a broken one.
Check before you panic: open the CSV in Notepad on Windows or TextEdit on a Mac. If you see 02134 there, the file is right. To look at it in Excel without the damage, run Data > From Text/CSV and set that column's type to Text, or turn it back into a workbook with the CSV to Excel converter, which keeps zero-padded codes as text.
The file was saved as Excel's plain "CSV (Comma delimited)", which writes in the older Windows character set for your region, and any character that set lacks becomes a literal question mark. On a US machine that's Polish Ł, Czech ř, anything in Chinese or Japanese. The damage is in the file, so there's nothing to recover afterwards.
"CSV UTF-8 (Comma delimited)" avoids it, and this converter always writes UTF-8 with a byte-order mark. Those three bytes at the start are what tell Excel the file is UTF-8 when someone double-clicks it. Without them, Excel falls back to the older character set on open and Müller shows up as Müller. With them, Müller and € reopen correctly.
Pick "All sheets (a .zip of CSV files)" and click Convert to CSV. Each sheet becomes its own CSV in one .zip, named after its sheet. Non-English letters survive (Données stays Données). Spaces and characters that file systems reject become a _, with a run of them collapsed into one, so a sheet named Actual | Budget comes out as Actual_Budget.
Excel can't do this in one step. Its Save As writes only the active sheet, so a workbook with a tab per region or per month means one trip through the dialog per tab, or a VBA loop.
Hidden sheets are listed and converted like any other, including the lookup table someone hid years ago. Delete those files from the .zip, or pick the sheets you want one at a time.
In Excel 365, go to File > Save As (or Save a Copy, if AutoSave is on), choose a folder, and set Save as type to "CSV UTF-8 (Comma delimited) (*.csv)". It's about five clicks per sheet.
Excel wins in two cases. You need tab-separated output, which is Save as type "Text (Tab delimited)". Or the workbook is .xls or .xlsm and you'd rather not re-save it first. For semicolons, Excel uses the list separator from your Windows regional settings, so its CSV comes out semicolon-separated only on a machine already set that way, as most German and French ones are. To get ISO dates this way, give the date columns the custom format yyyy-mm-dd before saving; Excel writes what the cell displays.
One trap: after Save As CSV, the window you're looking at is the CSV, not your workbook. Keep working and press Ctrl+S, and you're saving into a file that drops every other sheet, the formulas and all the formatting. Close it and reopen the .xlsx.
#REF! in a price column lands in your import as #REF!. The Workbook Audit finds broken formulas before you export.If the next step wants JSON instead of CSV, Excel to JSON takes the same .xlsx. And if you want each sheet as its own workbook rather than as text, with formatting intact, use Split Excel by Sheet.
Keep the Values option on As displayed in Excel, and a ZIP code formatted 00000 is written as 02134. If the zeros are gone when you reopen the CSV in Excel, Excel removed them on open, not the export. Open the file in Notepad or TextEdit to see what it really contains.
The file was saved as Excel's plain CSV (Comma delimited), which uses an older Windows character set and replaces anything outside it with a question mark. Those characters can't be recovered from that file. This converter always writes UTF-8 with a byte-order mark, the same as Excel's CSV UTF-8 format.
Choose All sheets (a .zip of CSV files) after you drop the workbook, then click Convert to CSV. You get one .zip with a CSV for each sheet. Excel's own Save As writes only the active sheet, so doing it there means one Save As per tab.
No, only each formula's last calculated result, because a CSV holds values and nothing else.
The CSV stores dates as text, written the way the cell displays them, and Excel's default date format follows your computer's regional settings. A file saved in London reads 04/03/2026 where one saved in Chicago reads 3/4/2026. Choose Unformatted numbers here to write every date as 2026-03-04 instead.
Not with this converter: it always writes commas. Excel's own Save As uses the list separator from your Windows regional settings, so it writes semicolons only on a machine set that way, as most in Germany and France are. That is also why a CSV from a European colleague often arrives with semicolons.
No. The conversion runs in your browser, so the workbook never reaches a server.