> Source: https://txtfetch.com/tools/xls-to-text > Plain-text twin — every page on txtfetch.com has one. https://txtfetch.com/text --- # Your old .xls workbook, as text. No code required. Drop a real Excel 97-2003 workbook below. Watch every sheet's cells become plain text right here, in your browser. No Excel install, nothing uploaded. Drop a legacy Word (.doc), Excel (.xls), or PowerPoint (.ppt) file below to see the actual text it extracts to. These 97-2003 binary formats get read right here in your browser. Nothing is uploaded. ## whats-hard-about-xls A .xls file is a stream of typed records: BOF, a cell record, another cell record, EOF, repeat. Most of a sheet's actual strings aren't in the cell records at all. They live in one shared string table, the SST, built once for the whole workbook. Cells store just an index into it. Read a cell in isolation and you get a number pointing at another number, not a word. That shared string table has its own trap. A single string can be split across a record boundary, a CONTINUE record, mid-character. The continuation record starts with its OWN option byte, which can switch the encoding. A string can start as plain 8-bit text and finish in UTF-16 partway through, inside what reads as one continuous piece of text. Miss that reset and the tail end of long strings comes out corrupted. Sheet order is defined by a separate BOUNDSHEET record. It lists each sheet's name and a byte offset pointing at where its data actually starts in the stream. That physical position doesn't reliably match the declared order. Trust the order sheets happen to be laid out in the file and they come out shuffled. This tool follows BOUNDSHEET's own list instead, the same lesson the .xlsx tool already applies to modern workbooks. ## what-to-do-next Got the text out and want the API call for it directly? The panel above already has it, with your file's real name. Extracting many workbooks, or files bigger than this browser tool's 25 MB cap? [See the full legacy-Office extraction guide (.doc, .xls, .ppt) →](https://txtfetch.com/extract/legacy-office) ## faq **Does this tool upload my spreadsheet anywhere?**: No. The whole read happens in your browser. The file's bytes never leave your machine. Only the finished text ever leaves, and only if you choose to copy or download it. **Does it get the sheet order right?**: Yes. Sheet order and names come from the workbook's own BOUNDSHEET records, not from wherever each sheet's data happens to sit physically in the file. That physical position doesn't reliably match the declared order. **How does it handle the shared string table, and strings split across records?**: It reads the SST as one continuous table across any CONTINUE records that follow it, honoring a fresh option byte at every split. The encoding a string switches to partway through, 8-bit to UTF-16 or back, is read correctly rather than corrupted at the boundary. **Which cell types does it read?**: Shared-string labels, inline labels, numbers, all four of the compact RK number encodings, multi-cell RK runs, and formula cells. For formula cells it reads their last cached value, string, number, or boolean, not the formula text itself. **Are hidden sheets included?**: Yes, and flagged. Hiding a sheet in Excel doesn't remove its data, so this tool includes hidden sheets in the extracted text and marks each one "(hidden)". **What happens with a workbook that has charts in it?**: The sheet's own cells come out normally; the chart's cached series values don't. That distinction takes care to get right. A chart embedded in a worksheet opens a complete nested block inside that sheet's own records. Read the structure flatly and the chart's end marker looks like the sheet's. Every cell on the sheet then disappears, with nothing to tell you it happened. **Does it handle an encrypted or password-protected .xls?**: No. It reports the file as encrypted and stops, rather than returning a garbled attempt. txtfetch's API will reject it too, unless it's decrypted first. **Does it work on the even older Excel 5.0/95 format?**: No. That's BIFF5/7, stored in a differently-named "Book" stream rather than "Workbook", with its own record shapes this reader doesn't parse. It's named honestly rather than misread. txtfetch's API still handles it. **Is there a file size limit?**: This tool reads up to 25 MB entirely in your browser. Larger workbooks, or a batch you want to automate, go through the same extraction via the API, which has no such limit. ## That was one file. The API does the queue. This page read your XLS on your own machine. The API reads a folder of them. [Read the quickstart →](https://txtfetch.com/docs) [Get an API key →](https://app.txtfetch.com/signup)