StatementDecoder

PDF tools

Convert PDF to JSON

Extract a PDF's table as JSON with stable, predictable keys — an array of row objects named by the document's own column titles. Made for code: pandas, Node, ETL jobs, anything that would rather parse structure than scrape text.

CSVExcelJSONMarkdown

Choose a PDF (or CSV, Excel — up to 5 MB)

Stable keys

Keys come from the document's printed column titles — the same document shape yields the same schema every run.

Fields + rows for money docs

Invoices and receipts add extracted header fields (vendor, number, dates, totals) alongside the line-item rows.

Loads in one line

json.load() → pandas DataFrame, or JSON.parse() → straight into your pipeline.

How it works

  1. 1Upload the PDF.
  2. 2We extract the table — and, for invoices/receipts, the header fields.
  3. 3Download JSON and load it straight into your pipeline.

What you download: A JSON array of row objects keyed by the document's own column titles; invoices and receipts also carry their extracted fields and a totals-reconcile verdict. Pair it with the Markdown export when you're feeding an LLM.

PDF data extraction that behaves like an API response

Scraping text out of PDFs in code means regexes that break on the next document. This gives you the shape an API would: rows as objects, keys from the real column titles, values verbatim. Deterministic extraction means the same report layout produces the same JSON schema next week — your parser stays boring, which is the point.

Invoices in JSON — with the maths checked

For invoices and receipts, the JSON includes the extracted header fields (vendor, invoice number, dates, PO, subtotal, tax, total) and a reconciliation verdict: we independently check that line items sum to the subtotal and that subtotal plus tax equals the total. Your pipeline can branch on reconciled: true instead of trusting every extraction blindly.

JSON for machines, Markdown for models

If the consumer is code, JSON is right. If the consumer is an LLM — a summarisation prompt, a RAG index — Markdown usually beats JSON: the model reads headings and tables natively without you flattening structure into strings. Both come from the same upload; take whichever fits the job, or both.

What about scanned PDFs?

Digital PDFs with a real text layer give exact results — we read the document's own characters and coordinates, not a picture of them. If you upload a pure scan with no selectable text, we detect it and tell you honestly instead of returning garbage rows.

Free converter

Convert your statement — and understand it too

A free account converts a statement page every day to CSV, Excel, QIF or OFX — with every transaction matched to a real merchant name, not a cryptic descriptor. No card required; files deleted after 24 hours.

No bank logins · card numbers redacted before storage · everything deleted after 24 hours

Questions

How do I convert a PDF to JSON?

Upload above and download the JSON — an array of row objects keyed by the document's column titles. First document free.

Are the JSON keys stable across documents?

Keys mirror the document's printed column titles, so identical layouts produce identical schemas run after run.

Do you offer an API?

The web app is the interface today; the JSON download is designed to slot into scripts and ETL in the meantime.

How are invoice fields represented?

Invoices and receipts include vendor, number, dates, subtotal, tax and total alongside the line-item rows, plus a reconciled true/false verdict on whether the printed figures add up.

What about nested or multiple tables?

Each detected table flattens to rows; the Markdown export preserves the fuller document structure including every table.

Is my data stored?

Files are never stored — the original is deleted within 24 hours, parsed data follows your plan's retention window, and you can delete everything instantly. Card and account numbers are redacted before anything is saved.

More PDF tools

Converting a bank statement instead? Use the bank statement converter — it adds merchant names, categories and reconciliation.