TableExtractor

Pull a table out of a PDF and keep the numbers.

Open a PDF, draw a box around the table and correct the grid the extractor guessed — drag the magenta lines until every column is right. What you see is exactly what lands in the CSV.

Exports CSV, TSV, JSON, or straight to the clipboard for Excel and Google Sheets. No upload, no account, no watermark.

6 × 4
PDF table to CSV

Drop a PDF here

Text-based PDFs only — reports, invoices, statements, price lists.

or

Your PDF is opened by the browser itself and never leaves this device: there is no upload, no server-side processing and no account.

What the tool does

The grid is yours to correct

Auto-detection gets you close. Every column and row line can then be dragged, added or deleted, and the table below updates as you move it.

Numbers survive the trip

1,284.50 and 1 284,50 both come out as a value your spreadsheet accepts. Currency symbols can be stripped and (320.00) becomes −320.00.

One selection, many pages

Apply the same box and the same columns to a page range and get a single table. Repeated headers on later pages can be dropped automatically.

The PDF never leaves the tab

The file is parsed by pdf.js inside your browser. There is no upload step, no queue and no copy of your document on a server.

Turning a PDF table into a spreadsheet

A PDF does not store tables. It stores instructions for painting glyphs at coordinates, so a table is only a table because the numbers happen to line up on the page. That is why copying a table out of a PDF reader usually produces one long column of text, and why generic converters mangle the columns of a bank statement or an annual report. TableExtractor works from the same geometry a human eye uses: it reads the position, width and font size of every text run on the page, groups runs whose baselines match into rows, and cuts columns where a vertical strip of the page stays empty all the way down.

Because that guess is never perfect, the grid is drawn on top of the page as lines you can move. Widen the column-gap threshold when a two-word heading splits a column in two; drag a row line when a two-line address gets cut in half; delete a line that landed inside a number. The table below the page render is the result, and it is editable too, so a stray footnote marker can be removed before you export. Finished tables leave as CSV with a UTF-8 byte-order mark (which is what Excel needs to read Cyrillic and accented text), as tab-separated text, as JSON keyed by the header row, or straight to the clipboard for pasting into Google Sheets.

Guides & articles

How PDFs store tables, what breaks on the way to a spreadsheet, and how to fix it.

Read more guides

Frequently asked questions

Is my PDF uploaded anywhere?

No. The file is opened by your own browser with the File API and parsed by pdf.js, which is served as part of this page. There is no upload step, no server-side processing and no storage: close the tab and the document is gone. You can disconnect from the network after the page has loaded and the tool keeps working.

Does it work with scanned PDFs?

No, and it will tell you so. A scan is a picture of a page: it has no text layer, so there are no coordinates to measure and nothing to extract. Pages without text are marked in the page rail. To work with a scan you need OCR first — Adobe Acrobat, ABBYY FineReader or the free OCRmyPDF can add a text layer, and after that TableExtractor can read the result.

What happens to merged and multi-line cells?

Everything inside one cell of the grid is joined into a single value, so a description that wraps over two printed lines comes out as one string. If the detector split it into two rows, delete the row line between them and the two lines merge. A heading that spans several columns lands in the column containing its centre; move it to the right cell in the result table, which is editable.

Can I extract the same table from several pages?

Yes. Set the selection and the columns on the first page, then enter a page range in the panel and press Extract this range. The same rectangle and the same column lines are applied to every page, rows are detected page by page, and the results are stacked into one table. Tick "Drop the repeated header" when the table header is reprinted at the top of each page.

The numbers use commas as thousand separators. Will Excel understand them?

Turn on "Rewrite numbers" and choose the decimal mark your spreadsheet expects. 1,284.50 and 1 284,50 both become 1284.50 (or 1284,50), non-breaking spaces are removed, and a value in brackets like (320.00) becomes −320.00. One ambiguity cannot be resolved by software: a group of exactly three digits after the last separator is read as a thousands group, so 1,234 becomes 1234. Check a column of totals after converting.

How do I get the table into Excel or Google Sheets fastest?

Press "Copy for Excel" and paste. The clipboard receives tab-separated text, which both Excel and Google Sheets split into cells automatically without an import dialog. If you prefer a file, download the CSV with the UTF-8 byte-order mark switched on — that is what makes Excel show Cyrillic and accented characters correctly. Excel in a Russian or European locale usually expects a semicolon delimiter, which is one of the choices.

How accurate is the automatic detection?

On a plainly laid out table with clear gaps between columns it is usually right the first time. It struggles when columns are separated by only a hair of space, when a column is empty for most rows, when the table has ruling lines but almost no whitespace, or when text is centred in wide cells. That is exactly why the grid is editable — treat auto-detection as a first pass, not as the answer.

Is there a limit on file size or page count?

There is no artificial limit — the ceiling is your device's memory, because the whole document is held in the tab. Documents of a few hundred pages open fine on a normal laptop; thumbnails are rendered only as you scroll to them. Extraction itself is fast because it reads text positions rather than rendering pages, so a 50-page range takes a couple of seconds.

Can I extract a table from an image or a screenshot?

No. TableExtractor accepts PDF files only and reads their text layer; it does not do optical character recognition, which would mean either shipping a large recognition model or sending your page to someone else's server. Both of those would break the promise that the document stays on your device.