PDF to CSV
Extract tables from any PDF into a CSV — privately in your browser. Works on invoices, statements, expense reports, and any text-based PDF with tabular data.
Most online PDF-to-CSV converters upload your file to a server, run a parser there, and email you the result. That is a poor fit for financial documents — a bank statement, an invoice batch, a vendor report — where you do not want to copy the data onto an unknown machine. The conversion itself is not hard. The PDF has the text already; it just needs to be grouped into rows and columns. That can run in a tab.
This tool reads the PDF with pdf.js, pulls every text run with its (x, y) coordinates, clusters runs with the same y-position into a row, then splits each row into columns based on the horizontal gaps between runs. The result is a 2D table per page, exported as one CSV that opens cleanly in Excel, Google Sheets, or Numbers. It works well on any PDF where the table cells are real text — invoices, downloaded statements, financial reports. It will not work on scanned PDFs, which are images and have no text layer.
Drop a PDF to extract its tables as CSV
Stays on your device — no upload, no signup
How it works
PDFs do not have tables in the structural sense — they have text positioned at specific (x, y) coordinates. To turn that back into rows and columns, the tool does three things. First, it pulls every text item from the page with its coordinates. Second, it groups items whose y-positions are within a few points of each other into a single row. Third, it walks the row left-to-right and starts a new column whenever the gap between two text items exceeds a threshold (about 8 points, which is wider than a normal word space).
When it works well
- Bank statements, credit card statements, brokerage statements (text-based)
- Invoices and receipts with line-item tables
- Financial reports, P&L exports, accounting software exports
- Any PDF generated by an app (not scanned from paper)
When it does not
- Scanned PDFs (images of pages, no text layer)
- Statements where columns are visually aligned but the text uses spaces instead of consistent gaps
- Heavily formatted reports with multi-line cells or merged cells
- PDFs with rotated text or non-horizontal table orientation
Frequently asked questions
How do I convert a PDF to CSV for free?
Drop the PDF onto the box above. The tool reads each page, clusters text by its y-coordinate to find rows, then splits each row into columns based on the horizontal gaps between text runs. Tables are previewed below and downloadable as a single .csv file.
Is anything uploaded?
No. The PDF is parsed by pdf.js inside your browser tab. There is no upload step — open DevTools → Network and you will see zero requests for your file's bytes leaving the page.
Will it work on scanned PDFs?
No. Scanned PDFs are images, not text. There is no text layer to cluster into rows. For scans you need OCR first — try our Image to Text tool, then paste the OCR output into a spreadsheet.
Does it handle multi-page PDFs?
Yes. Each page is parsed separately, and tables from every page are concatenated into one CSV file. The page preview shows each page's table individually so you can spot issues.
Why are some columns merged or split incorrectly?
PDFs do not store table structure — they store text at coordinates. The tool guesses where columns start and end based on horizontal gaps. Statements with very tight column spacing (under ~8pt) or PDFs that use spaces instead of tabs may produce merged cells. The CSV preview makes these obvious, and you can fix them in a spreadsheet after download.
Can I extract a single table from a multi-table PDF?
Right now the tool extracts every table-shaped block of text on every page. After downloading the CSV, just delete the rows you do not want in any spreadsheet app. Per-page selection is on the roadmap.
What's the file-size limit?
Whatever your browser's memory allows. Tested cleanly on 50-page statements and 30MB PDFs. Very large PDFs (hundreds of MB) may stall the page during the read step.
Will the CSV open cleanly in Excel and Google Sheets?
Yes. The output uses standard CSV escaping: commas and quotes inside cells are wrapped in double quotes and double-escaped, and newlines inside cells are preserved correctly. Both Excel and Sheets autodetect column types on import.