Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
Converting CSV to XLSX writes a real Excel workbook, so the types are settled in the file instead of guessed by an import dialog: a column of dates or product codes arrives as the text it was written as. Leading zeros are the exception — 01234 is read as the number 1234 here too, so check that column. The file converts inside your own browser and is never uploaded.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
CSV to XLSX
A CSV is a text file. It contains values and separators and nothing else — no types, no formatting, no indication of what a column is meant to be. When Excel opens one it has to guess all of that as it reads, and its guesses are made column by column with no knowledge of what the data is for.
Those guesses are famously destructive. A postcode of 01234 becomes 1234. A product code of 0071 becomes 71. A sixteen-digit account number becomes 1.23457E+15 and, in some versions, is rounded so the original digits are unrecoverable. Anything that resembles a date becomes one — which is how a gene called SEPT2 became 2 September, a problem serious enough that geneticists renamed their genes rather than keep fighting spreadsheets.
An XLSX is a spreadsheet with the types already decided. Each cell carries whether it is text or a number, so Excel opens the file rather than interpreting it, and the values you see are the values that were written.
The conversion here reads the CSV once and writes each value as what the number test made of it. That settles the date problem — 2024-03-04 and SEPT2 both fail the test, so both are written as text and Excel has nothing left to reinterpret — and it settles the very long identifiers, which fail it too. It does not settle leading zeros: 01234 passes the number test and 1234 is what reaches the sheet, whether or not the field was quoted. One decision, made once and stated here, rather than an import dialog that different people answer differently.
The other half of CSV misery is the delimiter. The format is named for commas and frequently does not use one: exports from systems configured for German, French, Spanish or most other European locales typically use semicolons, because the comma is already doing duty as the decimal point.
Open such a file expecting commas and every row lands in a single column. The separator is detected from the file here, which handles the common cases, and you can set it explicitly in the settings under the result if the detection was wrong — convert again and the whole thing takes a second. Tabs are handled the same way, which covers exports that are really TSV under a .csv name.
It is worth being clear about the ceiling. Formatting, colours, column widths, frozen panes, formulas, charts, filters and multiple sheets do not survive the conversion because they were never in the file. A CSV holds a grid of values; everything else that makes a spreadsheet a spreadsheet is absent by design.
What you get is a clean, single-sheet workbook with your data correctly typed — which is the right starting point. Formatting takes a minute in Excel; recovering a column of postcodes that lost their leading zeros three steps ago takes considerably longer.
Look at what CSVs usually contain. Customer records, order histories, payroll runs, mailing lists, exports from a CRM or a shop. It is close to the definition of data that should not be handed to a company you found through a search result.
This conversion runs entirely in your browser: the parser and the spreadsheet writer are both JavaScript that the page downloaded, and the file is read from your disk into your own tab. Nothing is sent, and you can verify that rather than trust it — open your developer tools, watch the network tab, and convert something. It also means the per-file ceiling is the free tier’s 100 MB rather than anything an upload imposes, and there is no queue behind other people.
The other way a CSV arrives broken is the encoding. A file written as UTF-8 and read as a legacy code page turns accented letters into pairs of symbols; read the other way round, they vanish altogether.
The reliable tell is a familiar word. If a name you know contains an A with a circumflex followed by a symbol, you are looking at UTF-8 being read as Windows-1252. If it contains a question mark instead, the information is already gone and the export needs redoing. This page reads UTF-8, which is what nearly every current export produces.
XLSX has a hard ceiling of 1,048,576 rows and 16,384 columns per sheet. A CSV has no ceiling at all, so it is entirely possible to be holding a file that cannot become one worksheet.
If your export is above the row limit, a spreadsheet is the wrong destination rather than a smaller problem to work around. That volume of data wants a database or a Parquet file, and converting it here would only mean losing everything past the millionth row.
The first row becomes the header row of the sheet. Nothing is renamed or tidied, so whatever the export called its columns is what you get.
It is worth thirty seconds before converting, because header names travel further than people expect: pivot tables, chart legends and every later import will all use them. Fixing a column named col_7 takes a moment in the CSV and outlives every copy of the file.
Drop up to 100 CSVs at once. Each becomes its own workbook and they come back as a ZIP. They are not merged into one workbook with several sheets, because that would mean deciding which file is which sheet and in what order.
If one workbook with several sheets is what you actually want, convert them individually and move the sheets together in Excel afterwards. That way the merge is a decision you made rather than one a converter made on your behalf.
| CSV | XLSX | |
|---|---|---|
| Full name | Comma-Separated Values | Excel Workbook |
| File extension | .csv | .xlsx |
| Media type | text/csv | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| First published | 1972 | 2007 |
| Published by | — | Microsoft |
| Specification | RFC 4180 | ECMA-376 |
| Licensing | Open standard | Open standard |
| Standing today | Current | Current |
| Opens in a browser | No browser | No browser |
| Considered instead | JSON, Parquet | ODS, Parquet |
Microsoft Excel and LibreOffice Calc read both CSV and XLSX, so there is a way to check the result against the original without a second tool.
The two are aimed at different work: CSV at moving data between programs, XLSX at editing. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.
CSV was published in 1972. The specification is RFC 4180, and it is worth reading if the file has to outlive the tool that wrote it.
XLSX comes from Microsoft and dates from 2007, specified as ECMA-376. Microsoft Excel, LibreOffice Calc and Google Sheets all read it.
CSV was published in 1972 and XLSX in 2007. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.
No, and that is the one thing on this page worth saying plainly. A bare 01234 is read as the number 1234 here too, and quoting it in the CSV as "0071" makes no difference — the parser reads 71 either way. If the leading zero carries meaning, the fix has to happen at the export: a postcode column that comes out with a letter, a hyphen or any other non-digit in it stays text all the way through. Otherwise, check that column after converting and re-enter it in Excel as text.
Those are protected, up to a point that is worth knowing. Any digit string larger than 9,007,199,254,740,992 — the largest whole number a double holds exactly — fails the number test and is written to the workbook as text, so a twenty-digit reference or a long IBAN arrives intact. Below that it becomes a number, and a sixteen-digit card number is exactly the case to watch: Excel keeps fifteen significant digits, so the last one is not safe there either.
Yes, and it is the other common mess. A file exported in a country that uses a comma as the decimal separator is usually semicolon-delimited, and reading it as comma-separated puts everything in one column. The separator is detected from the file, and you can override it in the settings under the result if the guess was wrong.
No. The CSV is parsed and the workbook written inside your browser, so the file never leaves your device. That is worth more here than for most conversions — CSV exports are customer lists, payroll runs, order histories and mailing lists, and the usual alternative is uploading all of it to a website.
No, and nothing could give you them. A CSV is a plain grid of values with no colours, no column widths, no formulas and no notion of a second sheet — there is nothing in the file to carry over. What you get is a clean single-sheet workbook with your data in it, ready to format in Excel.
Up to 100 MB, which is a very large CSV — several hundred thousand rows for typical data. Because the work happens on your own machine, there is no upload time and no server limit; the constraint is your browser’s memory rather than our patience.
This page converts one into the other. If you are choosing rather than converting, CSV vs XLSX answers which to use, for what, and what each is bad at.