Saving a spreadsheet as CSV feels harmless. It is a smaller file, it opens anywhere, and the numbers all look the same afterwards. Then somebody opens it a week later and the phone numbers have lost their leading zeros, the dates are in the wrong order, and every formula has turned into a frozen value.
None of that is a bug. It is what CSV is.
CSV stands for comma-separated values, and the name is the entire specification. It is a plain text file where each line is a row and commas divide the columns. That is all. There is no provision for anything else, because there is nothing else in the format to provide it with.
XLSX is a compressed package of XML documents describing a workbook: multiple sheets, cell types, formulas, formatting, charts, named ranges, validation rules. It has been the Excel default since 2007 and is an open, documented standard, so other spreadsheet programs read and write it too.
Everything except the values on one sheet:
=SUM(A1:A10) becomes the number it currently evaluates to. The calculation is gone; change an input and nothing updates.45.00 € is stored as 45.That last point causes the failures people actually notice.
Leading zeros vanish. A postcode or product code of 00123 looks like a number, so it is read as one, and a number has no leading zeros. It becomes 123.
Dates get reinterpreted. 03/04/2026 is the third of April in most of the world and the fourth of March in the United States. CSV does not say which; the reading program applies its own locale.
Long numbers turn into scientific notation. A sixteen-digit identifier may be displayed as 1.23457E+15 and, worse, rounded.
Accented characters break. CSV does not record its own encoding. Written as UTF-8 and read as something else, café becomes café. This is the single most common CSV complaint.
The separator is not always a comma. In locales that use the comma as a decimal mark, spreadsheet programs write semicolons instead. A file produced in Germany and opened with comma expectations lands entirely in column A.
It would be unfair to leave it there, because CSV survives for good reasons.
Universality. Every database, programming language, statistics package and analytics tool reads CSV. It is the lingua franca of moving data between systems that share nothing else.
Size and speed. A million rows as CSV is a fraction of the equivalent XLSX and streams line by line without loading the whole thing into memory.
Transparency. You can open it in a text editor and see exactly what is there. When an import fails, that is worth a great deal.
Durability. A plain text file will be readable in forty years with no particular effort. That is a genuine archival argument.
Use XLSX when the file is a document people will work in — anything with formulas, several sheets, formatting that carries meaning, or that a colleague will edit and send back.
Use CSV when the file is data in transit — feeding an import, exporting from a system, handing a dataset to a script or a statistician. One table of values, going somewhere that only wants values.
The question to ask is whether the recipient is a person or a program. People need the structure; programs usually want it stripped away.
When CSV is the right answer, a few habits prevent most of the damage:
2026-04-03 — which no locale misreads.