Quick Verdict
Use XLS when…
Use XLS only when you must support Excel 97–2003 or a legacy system that explicitly requires the binary XLS format. Otherwise, always use XLSX.
Use XLSX when…
Use XLSX for all new spreadsheets — smaller files, more rows/columns, better feature support, lower corruption risk, and compatibility with every modern application.
XLS vs XLSX: Feature Comparison
| Feature | XLS | XLSX |
|---|---|---|
| Introduced | 1987 (Excel 2.0 binary format) | 2007 (Office Open XML) |
| File structure | Binary (BIFF8) | ZIP of XML files |
| Max rows | 65,536 | 1,048,576 (16× more) |
| Max columns | 256 | 16,384 |
| File size | Larger | Smaller (XML compresses well) |
| Corruption risk | Higher | Lower (XML is recoverable) |
| Macro support | Yes (VBA embedded) | Disabled (use .xlsm for macros) |
| Google Sheets | Import only | Full import/export |
When XLS wins
- ✓Introduced: 1987 (Excel 2.0 binary format)
- ✓File structure: Binary (BIFF8)
- ✓Max rows: 65,536
When XLSX wins
- ✓Introduced: 2007 (Office Open XML)
- ✓File structure: ZIP of XML files
- ✓Max rows: 1,048,576 (16× more)
Frequently asked questions
Can Excel 2003 open XLSX files?
Not natively. The free Microsoft Office Compatibility Pack allows Excel 2003 to open .xlsx files with some limitations. For true compatibility with Excel 2003, save as .xls from a modern Excel. However, you'll lose access to features and the extra rows/columns.
Do Python/pandas prefer XLS or XLSX?
Python's pandas supports both via openpyxl (XLSX) and xlrd (XLS). XLSX is preferred for new files — openpyxl is actively maintained while xlrd dropped XLSX support and xlwt (for writing XLS) is deprecated. Use pd.read_excel('file.xlsx') with openpyxl for modern workflows.
More comparisons
View all format comparisons →