XLS to CSV Converter — Free, Works on Old Excel Formats
Table of Contents
Old .xls files are everywhere. Legacy exports from accounting software, archives from clients still on Office 2003, ten-year-old inventory sheets someone emailed you — they all use the older Excel Binary format instead of modern .xlsx. Most online tools either quietly reject them or convert them incorrectly.
The browser-based converter here handles both .xls and .xlsx, processes your file locally without uploading it anywhere, and produces standard UTF-8 comma-delimited CSV. Here is what to know.
XLS vs XLSX — What Changed and Why It Matters
The .xls format (officially called BIFF — Binary Interchange File Format) was the standard Excel format from 1987 through Excel 2003. It stores spreadsheet data in a proprietary binary format that only Microsoft knew fully.
In 2007, Microsoft replaced it with .xlsx, which uses the Office Open XML standard — an open format based on XML files zipped together. XLSX is larger on disk, but it is standardized, readable by any tool that follows the spec, and significantly more compatible across software.
What this means for conversion:
- XLS files require a parser that knows the old binary format. Not all CSV converters include this — many only handle .xlsx.
- XLS files are smaller than equivalent XLSX files, so they open faster despite the older format.
- XLS has a row limit of 65,536 rows per sheet, versus 1,048,576 for XLSX. If you have an XLS file with a dataset that maxes out the old limit, you will see exactly 65,536 rows — which can be confusing.
- XLS does not support newer Excel features like conditional formatting rules introduced after 2003, sparklines, or slicers. These simply do not exist in old XLS files.
How to Convert XLS to CSV Free in Your Browser
The Excel to CSV converter accepts .xls files the same way it accepts .xlsx files — drag and drop or click to browse. SheetJS, the engine running in your browser, supports the full XLS binary format spec.
Steps:
- Open the converter
- Drag your .xls file onto the upload area
- If the workbook has multiple sheets, select the one you want from the sheet picker
- Click Download CSV or use the Copy button if you just need the text
The file never leaves your device. Processing happens in your browser using the SheetJS library running locally. This is important when you are handling financial data, personnel records, or any file you would rather not upload to a third-party server.
Output is always UTF-8 encoded and comma-delimited — the standard CSV format that imports correctly into Python, R, Google Sheets, databases, and any other tool that reads CSV.
Sell Custom Apparel — We Handle Printing & Free ShippingCommon Issues With Old XLS Files
Merged cells
XLS files (and XLSX files too) often have merged cells for visual formatting — a header that spans multiple columns, for example. CSV does not support merged cells. The converter places the cell value in the first column of the merged range and leaves the other columns empty. You may need to un-merge and fill down manually before converting if you need those values in every row.
Hidden rows and columns
The converter exports what is in the data, including hidden rows and columns. If your XLS file has hidden rows you want to exclude, you will need to delete them in Excel before converting — or filter them out after importing the CSV.
Dates stored as serial numbers
Both XLS and XLSX store dates as serial numbers internally. The converter outputs them as formatted date strings where possible, but very old XLS files with unusual date formatting can sometimes produce raw serial numbers. If you see large numbers (like 44927) where dates should be, that is a date serial — January 1, 1900 is day 1.
Formulas vs values
The converter exports the calculated value of each cell, not the formula. If a cell contains =SUM(A1:A10), the CSV will contain the result (say, 1500), not the formula text. This is the correct behavior for data export.
Should You Convert XLS to XLSX First?
If your goal is to get the data into CSV format, there is no need to convert to XLSX first. Go directly from XLS to CSV — it is one fewer step and produces the same result.
Converting XLS to XLSX makes sense only if you need to:
- Continue editing the file in a modern Excel version and want full feature access
- Share the file with others who cannot open .xls (some newer apps only support .xlsx)
- Reduce file size — XLSX is usually smaller for large datasets because it uses ZIP compression
- Use Excel features that were introduced after 2003 (sparklines, slicers, newer chart types)
For the purpose of getting data into a database, Python script, Google Sheets, or any other downstream tool, XLS to CSV directly is the right move. The converter handles it in one step.
Try It Free — No Signup Required
Runs 100% in your browser. No data is collected, stored, or sent anywhere.
Open Free Excel to CSV ConverterFrequently Asked Questions
What is the oldest XLS format the converter supports?
SheetJS (the engine used) supports Excel formats going back to BIFF5 — which covers Excel 5 and 7 from the mid-1990s. Very old files from Excel 2 or 3 (pre-1990s) may not parse correctly, but anything from Excel 95 onward should work fine.
My XLS file was created by accounting software, not Excel. Will it work?
Usually yes. Many accounting and ERP systems export "XLS" files that are really just the BIFF binary format — not actual Excel workbooks. If the file opens in Excel, the converter will handle it. If it is a proprietary export that only looks like XLS, you may need to open and re-save it in Excel first.
Can I convert multiple XLS files at once?
The converter handles one file at a time. If you have many XLS files to convert in bulk, you would need to process them individually through the browser tool, or use a script (Python with openpyxl or pandas can batch-convert XLS files to CSV from the command line).
Does the converter work on XLS files with macros?
Yes — macros are stored separately from the cell data in XLS files. The converter reads the cell data and ignores the macro code, so you get the data without any macro execution risk. The output CSV contains only values, with no macro capability.

