Bank Statement to CSV
Extract transactions from a PDF bank statement into a CSV — privately in your browser. Works on most US, UK, EU, Canadian, Indian, and Australian bank statements.
Banks deliver statements as PDFs because PDFs are good for displaying a page. They are awful when what you actually need is the data: transactions in a spreadsheet, by date, with description and amount. The standard answer is a paid converter (DocuClipper, MoneyThumb, ProperSoft) for $30–50/month, which is fine for accountants who do this daily but overkill for one-off filings. The other standard answer is to retype the statement, which is brutal for a year of transactions.
This tool covers the middle: a free, browser-local converter that handles the ~80% of text-based statement layouts cleanly. It reads the PDF with pdf.js, clusters text runs into transaction rows by y-coordinate, and splits each row into columns based on horizontal gaps. Output is a single CSV that opens in Excel, Google Sheets, or Numbers — and because the parse runs locally, your account number and transaction history never leave your laptop.
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 — they have text at coordinates. To turn a statement back into rows and columns, the parser pulls every text item from each page with its (x, y) position, groups items with the same y-position into a row, then walks each row left-to-right and starts a new column whenever the horizontal gap exceeds a threshold. The result is a 2D table: one row per transaction, columns aligned to the statement's natural layout.
What works well
- Statements downloaded directly from online banking as a PDF (Chase, Wells Fargo, BoA, Capital One, Citi, Amex, RBC, TD, BMO, Barclays, HSBC, Revolut, Wise, HDFC, ICICI, SBI, Commonwealth Bank, etc.)
- Credit card statements (often cleaner than checking-account statements)
- Brokerage statements with one transaction per line
- Vendor invoices with line-item tables
What does not
- Scanned statements (images of pages) — these have no text layer to parse. OCR is required first.
- Statements where the description column wraps onto two lines (common for European SEPA payments) — the second line may end up as its own row.
- Statements with two narrow columns next to each other (under 8pt apart) — they may merge into one column.
- Rotated or multi-currency statements with vertical text.
What you can do after
- Import to QuickBooks / Xero / FreshBooks — you may need to rename columns or add a header row first.
- Categorize for tax prep — easiest by adding a Category column in Excel and using filters.
- Reconcile against accounting — pivot table by month, vendor, or category.
- Run analytics — drop into Python (pandas), R, or any BI tool.
Why convert in the browser?
A bank statement contains everything needed for identity fraud or for someone to reconstruct your financial life: full name, address, account number, balance, payees, regular subscriptions, salary date and amount. The standard online converters all upload your statement to their server. Even the ones that promise to delete after — you have to take their word for it. ToolChop's parser runs in your browser, so there is nothing to trust: the PDF stays on your device.
Frequently asked questions
How do I convert a PDF bank statement to CSV for free?
Drop the statement PDF onto the box above. The tool reads each page, groups text into transaction rows by their y-coordinate, and splits each row into Date / Description / Amount / Balance columns based on horizontal gaps. The output downloads as a single .csv file that opens cleanly in Excel, Google Sheets, or Numbers.
Are my bank statements uploaded?
No. Parsing runs entirely inside your browser via pdf.js. Bank statements contain account numbers, balances, and your full transaction history — exactly the kind of data you should not upload to a stranger's server. Open DevTools → Network and confirm nothing leaves the page.
Which banks does it work with?
Any bank that delivers statements as a text-based PDF — which is most of them. We've tested Chase, Wells Fargo, Bank of America, Citi, Capital One, Amex, RBC, TD, BMO, Barclays, HSBC, Revolut, Wise, HDFC, ICICI, SBI, and Commonwealth Bank. Layout-specific quirks (multi-line descriptions, multi-currency columns) may need a manual cleanup in your spreadsheet after import.
What about scanned bank statements?
Scanned PDFs are images, not text — there is no text layer for the tool to parse, so they will return no tables. For scanned statements you need OCR first. Try our Image to Text tool to get the raw text, then paste it into a spreadsheet manually. Per-bank scanned-statement support is on the roadmap.
Will the CSV import into QuickBooks, Xero, or Tally?
The CSV uses standard column ordering and escaping, but accounting software typically wants specific column names (Date / Description / Amount / Category) — you may need to add a header row or rename columns after download. For QuickBooks specifically, the 'three-column' CSV format (Date, Description, Amount) is what to aim for.
What if columns are merged or split incorrectly?
PDFs do not store table structure — only text positions. When two columns are very close together, the tool may merge them; when a description wraps onto a second line, it may split. The preview makes both obvious. Fix in your spreadsheet after download, or split the file by page first.
Does it handle credit card statements?
Yes — same parser. Credit card statement layouts (Amex, Chase, Capital One, etc.) are usually cleaner than checking-account statements because each transaction is one line. The CSV will typically have Date / Posting Date / Description / Amount columns.
How is this different from the paid bank-statement converters?
Paid services (DocuClipper, MoneyThumb, ProperSoft) have per-bank templates that recognize each statement's exact layout, plus OCR for scanned statements. They are more accurate, but cost $30–50/month and upload your statements to their servers. This tool is free, runs locally, and handles ~80% of text-based statement layouts cleanly. For occasional one-off conversions, it's usually all you need.
Can I import the result into Excel without formatting issues?
Yes. The CSV uses standard escaping: commas and quotes inside cells are wrapped in double quotes and double-escaped, newlines inside cells are preserved correctly. Excel's File → Open and Sheets' File → Import will both autodetect the columns.