Open an old Excel 97-2003 workbook
Free, no sign-up, and the file never leaves your computer.
An .xls file is one stream of records — four bytes of header and a payload — with structure implied by order rather than written down.
It is read directly into the same grid the modern format uses. Nothing is converted, and nothing is sent anywhere.
The workbooks everything else refuses
Excel 97-2003 encrypts a workbook marked “read-only recommended” with a fixed password it knows, then opens it again without ever asking anybody — so the file is technically encrypted while being, in practice, open. Most readers see the encryption flag and refuse. Eight of the real-world workbooks in our corpus are exactly this case. There is also the shared string table, which is written across record boundaries: a string cut in half by the end of a record resumes with an encoding flag of its own, and joining the bytes before reading them produces mojibake from the first boundary onward.
Everything below is parsed from the file, not approximated
Read from the bytes the format actually stores, into a model that does not know which generation produced it.
The container and the cells
Text
Formulas
Formatting
Beyond the grid
Pictures
Encrypted workbooks
What this does not do
Every renderer has a list like this. Most do not publish it.
- Charts are read as their substream and skipped rather than drawn, as in the modern format.
- The Excel 95 exclusive-or obfuscation and the CryptoAPI scheme of Excel 2002 are detected but not decrypted.
- Excel 4.0 and earlier have no substreams at all and are refused rather than half-read.
- Pivot tables are not reconstructed; their cached result is what the sheet shows, and that is what is read.
If a file of yours renders wrong, send it to admin@genom.dev. It joins the corpus everything is measured against, which is what makes a fix stay fixed.
Things people ask
- Is my workbook uploaded anywhere?
- No. The file is opened by JavaScript running in this tab and is never sent anywhere — there is no upload, no server-side conversion and no copy kept. You can confirm it: open your browser’s network panel, then open a file. Nothing leaves. This also means the page works with no connection at all once it has loaded.
- Can it open password-protected .xls files?
- It opens the RC4 scheme of Excel 97-2003, including the fixed-password case described above. The Excel 95 exclusive-or obfuscation and the CryptoAPI scheme of Excel 2002 are detected but not decrypted.
- What about Excel 4.0 and earlier?
- Refused rather than half-read. Those files have no substreams at all, and producing a partial workbook from one would be worse than saying no.
- Do formulas survive?
- Yes. Excel never stored the text you typed — it stored parsed postfix tokens — so the formula is rendered back from those, including the parentheses Excel kept so that =(A1+A2)*3 comes back as itself.
The viewer, and the parser on its own
The parser produces a model that knows nothing about CSS or the DOM, so the same call runs in Node for extraction, search and conversion. Excel 97-2003 and its other generation are one package.
import { DocumentViewer } from '@genomdev/react';
<DocumentViewer file={file} fit="width" />;