Skip to content
dialegein

Tabula

Desktop and command-line table extraction from text-based PDFs, output to CSV, TSV or JSON.

Jobs Extract

Since 2013

Where your files are processed

No server involved

The desktop application is a local service that reads and writes files on the machine. Two outbound calls exist and neither carries a document — a GitHub version check and a statistics ping, both disableable by flag.

The app is a local JRuby service that you open in a browser at localhost:8080, so files are read and parsed on your own machine; the PDF and the extracted data are never uploaded anywhere. The project documents two exceptions that are not file transfers: a version check against GitHub and a usage-stats ping, both of which can be disabled with -Dtabula.disable_version_check=1 and -Dtabula.disable_notifications=1.

What it does

Tabula finds tables in text-based PDFs and exports them as CSV, TSV or JSON. The desktop app runs a small web interface on localhost: you open a PDF, drag a rectangle around the table, preview the result and export it, with saved selection templates and a repeat-to-next-page control for recurring layouts. The bundled CLI covers headless and batch work, including whole-directory conversion, guessed page regions, explicit column coordinates, password-protected inputs and a lattice mode for ruled tables.

Best for: Anyone who needs the numbers out of a text-based PDF report and into a spreadsheet, especially journalists, researchers and analysts who want a free local tool with a graphical selection step rather than a script.

Worth knowing: Tabula extracts tables from text-based PDFs. It has no OCR of its own, so an image-only scan needs a separate OCR step before there is anything to extract, and the project advises against running OCR on large files. The extraction itself is done by tabula-java, the Java library and command line the application is built on; this record is about the desktop application, and the two are maintained separately. The application has not been released since June 2018, and the maintainers state that none of the original authors has time to work on it, while tabula-java receives occasional updates. We have not checked either repository’s commit history for dates, so no last-commit claim is made here.

Details, and where each comes from

Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.

Versions covered
Windows · macOS · Linux · Self-hosted
Website
tabula.technology
Requires an account
No
Watermark on the free tier
Not verified
Maximum file size
Not verified
Batch processing
Yes
Data residency
Self-hosted
Open source
Yes
Self-hostable
Yes
Licence
MIT
Redaction
No redaction feature
Programmatic access
Command line
Last availability check
Responded in 61 ms 16 October 2026

Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.

What the redaction verdict rests on

From the vendor's own documentation, read 22 September 2026. Not tested by us.

What that does not establish: The vendor’s own site was read on 22 September 2026 and contains no mention of redaction, sanitisation, blackout or whiteout. Absence from a vendor’s own material is not proof that a feature does not exist — it may be undocumented, or on a page the reading did not reach — but for a NEGATIVE claim it is the strongest evidence available, and it is weaker than a positive quote. Recorded as such rather than presented as certainty.

https://tabula.technology

What the vendor says

Claims are labelled rather than repeated as fact. Where we have checked something ourselves, it says so and shows when. Checked means we read the vendor's own page and it says what we recorded — not that we tested the behaviour, unless the note says we did.

  • “Tabula is, and always has been, a volunteer-run project. We've occasionally had funding for specific features, but it's never been a commercial undertaking. At the moment, none of the original authors have the time to actively work on the project. The end-user application, hosted on this repo, is unlikely to see updates from us in the near future.”

    Checked by us — the source says this Read 21 September 2026

    Confirmed verbatim: the paragraph appears unaltered, and the sentence after the claim's end is the one that matters most to anyone considering Tabula today — "tabula-java sees updates and occasional bug-fix releases from time to time", against the end-user application being "unlikely to see updates from us in the near future". So the project is drawing a line between a maintained library and an unmaintained application, and a reader who only reads the claim would not know which part they are about to depend on. This is the kind of maintenance-status honesty the index should record, and it is the second library in this batch to state its own limits clearly, after pdfplumber.

    Standing: Re-read and matched byte for byte

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    7bd5afa0dc5997628629e896acc0741729bfd6046708c56d60f2275b00fe56db

    How we checked: https://github.com/tabulapdf/tabula rendered in headless Chrome with scripts/render-page.mjs on 2026-09-21 (visible text 15119 bytes). sourceHash is the SHA-256 of the rendered text.

    What this hash proves, and what it does not

  • “Tabula only works on text-based PDFs, not scanned documents. If you can click-and-drag to select text in your table in a PDF viewer (even if the output is disorganized trash), then your PDF is text-based and Tabula should work.”

    Checked by us — the source says this Read 21 September 2026

    Confirmed verbatim: the two sentences appear unaltered. The claim is the same boundary Camelot draws in its FAQ, verified earlier in this batch, and Tabula is where the test comes from — Camelot's FAQ quotes this exact sentence. So the index now records both projects stating the text-based-versus-scanned limit, with one attributing the test to the other, which is a small and genuine piece of provenance between two tools a reader is likely to be choosing between. The parenthetical in the claim, "even if the output is disorganized trash", is the vendor's own and is kept as written.

    Standing: Re-read and matched byte for byte

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    7bd5afa0dc5997628629e896acc0741729bfd6046708c56d60f2275b00fe56db

    How we checked: Read from the same page and render as the claim above: https://github.com/tabulapdf/tabula rendered in headless Chrome on 2026-09-21, visible text 15119 bytes. sourceHash is the SHA-256 of the rendered text.

    What this hash proves, and what it does not

Each claim is quoted from the vendor's own pages. This section describes what we have and have not checked — it is not a judgement about anyone.

Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.

Visit Tabula Report a problem

Related reading

How this record was put together

Editorial review.
No editor has signed this record off. That is not the same as nothing having been checked, and the lines below say what has.
Source reading.
2 claims taken from the vendor's own pages, read between 21 September 2026 and 21 September 2026.
Website availability.
The vendor's site was last checked on 16 October 2026.
Behaviour testing.
We ran this ourselves. The file handling was watched directly.

Sources: tabula.technology (live, check date 2026-09-16); github.com/tabulapdf/tabula README, LICENSE.md, releases and commit history; github.com/tabulapdf/tabula-java README, LICENSE, releases and commit history; GitHub REST API metadata for both repositories; source.opennews.org introducing-tabula (3 April 2013); NuGet/GitHub release tag data.