pdftojson.dev
PDF tables → JSON

Extract tables from a PDF as JSON.

Pull tabular data out of a PDF and into rows and columns you can use. Text in the browser; real table structure through the API.

— no file —
Runs in your browser Nothing uploaded Scanned & tables via API Free to use

Building something? Same parse, one call.

Send a PDF, get the same structured output back, plus OCR for scanned files and table extraction. Batch-ready. From $29/month.

Read the API docs →
# POST a file, get JSON curl -X POST https://api.pdftojson.dev/v1/extract \ -H "Authorization: Bearer $KEY" \ -F file=@doc.pdf \ -F format=json

A PDF doesn't store a table as rows and columns — it stores the position of every number and label, and your eye does the rest. This tool extracts the text of a table in your browser, which is fine when the layout is simple, but it can't reliably rebuild columns from positions alone.

Reconstructing an actual table — detecting columns, headers and cell boundaries — is what the API does. Send a PDF with table extraction on and get back rows and columns as structured JSON you can load straight into a dataframe or a database.

Why can't the browser tool extract tables properly?+

PDFs store text positions, not table cells. Rebuilding columns and headers from those positions needs real table detection, which runs on the API rather than in the browser.

What does the table JSON look like?+

Rows and columns as structured JSON — an array of rows, each a set of cell values — rather than a flat blob of text.

Can it handle merged cells and multi-line rows?+

Conventional tables extract well. Merged cells, multi-line cells and nested headers are harder and may need review.

Can I get the tables as CSV instead?+

Yes — see PDF to CSV. The same table detection can emit CSV or JSON.

Can it extract tables from a scanned PDF?+

Scanned tables need OCR first, then table detection. The API handles both; the browser tool needs a text layer.

How do I extract PDF tables in Python?+

Send the PDF to the extraction API. It returns the table data as JSON you can load into pandas.

How is this different from Camelot or Tabula?+

Camelot and Tabula are good if you want to run and tune your own extraction. This aims to get tables out via a browser tool or a single API call, without maintaining a pipeline.

Is my PDF uploaded?+

Text extraction in the browser stays on your device. Table detection and OCR run on the API, which needs the file.