Makerro

Makerro / PDF statement to CSV

Convert a PDF bank statement to CSV

Your bank gives you a .pdf. Your spreadsheet wants .csv. This pulls the transaction table out of the PDF on your own device โ€” the file is never uploaded, because there is nowhere to upload it to.

  • Runs offline
  • No account
  • First 3 pages free

april-statement.pdf

01/04/26 UPI-SWIGGY-PAYMENT 428.00
02/04/26 SALARY CREDIT APR 2026 1,85,000.00
03/04/26 NEFT DR-RENT APRIL 32,000.00
08/04/26 ACH D- HOUSING LOAN EMI 41,250.00

april-statement.csv

Date,Description,Amount,Balance
2026-04-01,UPI-SWIGGY-PAYMENT,-428.00,213910.90
2026-04-02,SALARY CREDIT APR 2026,185000.00,398910.90
2026-04-03,NEFT DR-RENT APRIL,-32000.00,366910.90
2026-04-08,ACH D- HOUSING LOAN EMI,-41250.00,325660.90

Convert a PDF statement

Drop your .pdf statement here

or drag it onto this panel

Nothing is uploaded. The file is read on this device.

It shows you what it found, because it might be wrong

A PDF does not contain a table. It contains glyphs at coordinates, and the table is something you infer from where they sit. This tool does that inference โ€” group text into rows by its vertical position, cut columns where there is a vertical gap, and take a row as a transaction when it holds a date and at least one amount โ€” and then it shows you the result before you download anything.

That is the whole difference between this and a converter that simply emits a file. Above, every column has a dropdown saying what the tool thinks it is, and every row is marked โœ“ if it became a transaction, + if it was folded into the description above it, or dimmed if it was ignored. If the guess is wrong, change it: the preview and the download update immediately, without re-reading your file.

What it refuses, and why that is the point

A scanned statement โ€” a photograph or a fax of a page โ€” has no text in it at all. This tool says so and stops. It does not fall back to OCR, because OCR on a column of money means guessing whether that is a 3 or an 8, and a guessed amount in a file you will reconcile against is worse than no file. An encrypted PDF says so too, and tells you to save an unprotected copy first. Neither case produces an empty CSV with a header row, which is the failure that makes people think the conversion worked.

If you can get OFX instead, get OFX instead

A PDF is a picture of your data laid out for printing; OFX and QFX are your data. Extraction from a PDF is inference and can be wrong at the edges; reading an OFX file cannot. Most banks offer both, and the export menu is usually one click from where you found the PDF. If yours does, use the OFX and QFX converter and skip the guessing entirely. This page exists for the banks that do not.

Common questions

Is my statement uploaded?
No, and it cannot be. The page is a static file, the PDF is parsed in your tab by a copy of pdf.js served from this same site, and the CSV is assembled in memory and handed to your downloads folder. Disconnect from the internet and convert one: it still works.
Why did some rows come out blank or missing?
Usually because a column is mapped wrongly โ€” the tool tells you how many rows had a date but no readable amount, which is the signature of that mistake. Check the money column in the mapping table. If a row's date sits in a column of its own, mark that one as the date.
Why is 03/04/2026 sometimes the wrong day?
Because it is genuinely ambiguous, and a statement whose every date falls in the first twelve days of a month contains no evidence either way. When there is evidence โ€” any date with a day above 12 โ€” the tool uses it and ignores the dropdown. When there is not, it says so above the table rather than picking silently.
Is anything logged?
Your statement is not, and cannot be. The page counts itself: when it loads, and when a file is converted, it sends the number of pages, rows, columns and transactions and nothing else. No filename, no payee, no amount, no cookie. The code that sends it accepts numbers only, which is what makes that a rule rather than a promise.