XLS is the pre-2007 Excel binary. CSV is one table and nothing else, with no formulas and no cell formatting. LibreOffice sits between the two, and this page says exactly what happens to an XLS file on the way to becoming a CSV one.
What runs when an XLS file becomes CSV
LibreOffice 24.2, on a machine we rent and watch. Your XLS file is uploaded once, LibreOffice runs once, the CSV comes back, and neither file is kept. XLS to CSV is one of the 3649 pairs that engine was probed on with a real file, which is why it has a page here and why the pairs the probe could not prove do not.
What survives from the XLS into the CSV
Every value, as a value. What a formula worked out lands in the CSV as the number it produced, ready for anything that reads CSV.
A CSV that anything can open. No version, no schema, no library: this is the format you reach for when the thing on the other side is a script rather than a person.
What XLS to CSV costs you
Everything that is not the content itself: styling, headings, images, and any structure the XLS file used to describe itself. A CSV is one flat thing, on purpose.
Formulas, replaced by what they currently work out to. Measured on this pair: the SUM in the XLS file arrives as its answer and not as a SUM, so the CSV is a snapshot and not a model.
Every sheet but the first. LibreOffice writes one sheet into a CSV because a CSV has no way to hold two, and it takes the first one. A twelve-tab workbook comes back as one table, and the engine says so in a header rather than letting you find out later.
Where XLS and CSV files come from
XLS. Excel wrote it before 2007, and things still produce it: old line-of-business software, machines nobody has updated, exports from systems written in the nineties. It stops at 65,536 rows and 256 columns, a ceiling XLSX raised sixteenfold, and a growing number of tools now refuse it outright because it is an OLE2 binary rather than a zip of XML.
CSV. Everything writes it and nothing agrees on it. There is an RFC, 4180, and it describes common practice rather than commanding it: quoting, escaping and line endings all vary by producer. A CSV is the lowest common denominator, which is both why it is everywhere and why it surprises people.
If a model is going to read the CSV
Structure is what survives from the XLS file, and structure is what a model needs. XLS in, CSV out, with the heading tree intact instead of flattened into one long paragraph.
XLS to CSV, measured rather than promised
Running XLS to CSV against the real engine with a real file, LibreOffice wrote 89 bytes of CSV in 0.9 seconds, machine otherwise idle. That is one XLS file on one day and not an average, which is why the number is given together with the file that produced it.
The XLS to CSV verdict was reached by reading the internal type and finding a witness word, meaning the output was read back and recognised. Which check was used matters, because they do not all prove the same thing, and a status code of 200 proves nothing whatsoever about whether the CSV file has anything inside it.
The same XLS file, sent somewhere else
Other outputs the probe measured out of an XLS file, so the cost of choosing CSV can be read against something. Sizes do not compare across engines, because each family was probed with its own XLS witness file.
XLS to PDF: 18,519 bytes in 1.0 seconds, verified by a format signature.
XLS to HTML: 2,101 bytes in 1.0 seconds, verified by reading the internal type and finding a witness word.
Other ways into CSV, and what they measured
Among the published routes into CSV, XLS is the second largest output of the 5 measured. The witness files differ, so this ranks the probe run and not your document.
ODS to CSV: 89 bytes in 1.1 seconds.
YAML to CSV: 39 bytes in under a tenth of a second.
XLSX to CSV: 89 bytes in 1.1 seconds.
JSON to CSV: 39 bytes in under a tenth of a second.
What we will not pretend about XLS to CSV
An XLS file over 25 MB is refused before the upload finishes rather than after it, so you do not wait for a rejection.
An XLS to CSV run that passes 90 seconds is killed, and the LibreOffice process is killed with it. A run left behind would sit on one of the machine's two cores until somebody noticed.
LibreOffice is serialised on purpose, one document at a time per worker, because each soffice instance takes 150 to 300 MB on a machine with 3.8 GB. Measured ceiling: 23 XLS conversions in flight and roughly 0.9 a second sustained. Past that the queue answers 429 rather than falling over, which was tested at 32 at once.
Two thirds of the pairs you could imagine in this family do not exist, and it is worth knowing why before you go looking for one. LibreOffice converts inside whichever application opened your file: from a spreadsheet it writes spreadsheets, flat text, HTML and PDF, and it will not write a .docx no matter how it is asked. It returns nothing at all rather than something wrong. Of 113 combinations probed on this engine, 64 came back with a real file and the rest were refused outright.
This pair is one of the 64. It was proved by sending a real XLS file through the live route and reading the CSV that came back: not its extension, its internals, plus a marker word planted in the source and found again in the output. The traits named further up this page come from a second probe that looks for each of them one by one.
The engine tells the truth about the first-sheet limit rather than hiding it: the response carries an X-Sheets-Exported header saying so. It is mentioned here because a header is easy to miss and a missing sheet is not.
One XLS file at a time, chosen in the browser. There is nothing else to set up and nothing else on offer.
XLS to CSV: what people ask
What actually converts my XLS file to CSV?
LibreOffice does it, 24.2, on a machine we rent and watch. Not a browser trick and not somebody else service: the XLS file is uploaded once, LibreOffice runs once, the CSV comes back, and neither file is kept afterwards.
How long does XLS to CSV take?
On the file the probe used, LibreOffice took 0.9 seconds and wrote 89 bytes of CSV. That is one real measurement on one real XLS file, not an average and not a promise about yours: a larger XLS takes longer, and past 90 seconds the run is stopped.
What do I lose going from XLS to CSV?
The one to know about first: Everything that is not the content itself: styling, headings, images, and any structure the XLS file used to describe itself. A CSV is one flat thing, on purpose.
Why is my CSV so much smaller than the XLS?
Because a CSV holds the content and nothing else. Styling, fonts, images, headings and the file structure around them are all gone by design. Formulas are gone too, replaced by the values they had worked out at the moment of conversion.
My workbook had several sheets. Where are the others?
Only the first one is in the CSV, because a CSV is one table and has no way to hold a second. LibreOffice takes the first sheet. If you need them all, convert to ODS or XLSX instead, or run the conversion once per sheet from your own file.
Is XLS to CSV free?
There is a free allowance every month, and one XLS to CSV conversion costs half a credit against it. When the allowance runs out the tool says so and stops, rather than quietly handing you a worse CSV.