Tool — statement decoder

Decode a statement PDF

private by design

Upload nothing. Drop your bank or credit card statement PDF below and every cryptic descriptor — AMZN MKTP US*R57TQ0XY1, SQ *DAILY GRIND, ACHMA VISB — gets matched against our curated descriptor database, with a link to the plain-English explanation for each one.

What the decoder does

  1. Reads the PDF in your browser. The file is opened locally by the PDF reader — it never touches a server, our logs, or an analytics script. This is a hard privacy guarantee, not a setting.
  2. Rebuilds each statement row. Statements are layouts, not text files. The decoder reconstructs rows from each line’s position on the page — which also handles the two-column statements that Amex and business cards love.
  3. Matches against our descriptor database. Each transaction line is scored against the same descriptor database the rest of this site uses. Matched lines link to their full explanation — including the actual merchant behind the descriptor.

When it won’t work

  • Scanned or photographed statements. A scan is a picture; there’s no text to read. Export a fresh PDF from your bank’s website instead.
  • Vague descriptors. If a merchant bills under a random processor name (common with app stores and marketplaces), even a perfect match can’t tell you who exactly charged you — the match page will say so.
  • Merchants outside our database. Unmatched lines get a search link rather than a dead end — the search box covers the same descriptor set and often surfaces the closest match.

What it doesn’t do

  • No signup, no account, no email required.
  • No server storage — after you close the tab, the parsed statement is gone.
  • No charges, no calculations, no balance arithmetic. It decodes descriptor text only.

Frequently asked questions

Is it safe to upload my bank statement?

There is no upload. The PDF is read by pdf.js inside your browser tab and matched against a local database — no network requests are made with the contents, nothing is stored, and nothing is sent to us or to an analytics service.

Why did my statement show no matches?

Scanned image statements (photos of paper) have no text layer and cannot be read. Also, our database covers the most common descriptors, not every merchant — unmatched lines get a search link instead, which often finds the merchant or a close variant.

Can it read two-column statements?

Yes. The decoder reconstructs rows using each line’s position on the page, so two-column layouts (common on Amex and business cards) are handled before matching.

Does the password prompt send my PDF password anywhere?

No. The password is passed directly to the PDF reader inside your browser to unlock the file for parsing. It is never transmitted, logged, or saved.

Is a match a guaranteed identification?

No. Descriptors are matched by pattern against known merchant billing lines, and the same descriptor can be used by multiple merchants (for example SQ * appears on every Square seller’s charge). Treat matches as a strong hint, then verify the amount and date against your receipts.

Pattern matching is a hint, not a verified audit — the same descriptor can be shared by many merchants (every Square seller bills as SQ *). Confirm amounts and dates against your receipts before disputing anything. Not financial advice.