Skip to content
dialegein

Unstructured

Open-source partitioning of PDFs and other documents into structured elements for LLM pipelines.

Where your files are processed

Reported to stay on your device

Claimed by the vendor. Not yet independently verified. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.

The library runs on your own machine or in your own container, so documents stay local. Two exceptions, and they are different in kind: the hosted API and Pipelines products are services you upload to, and the library itself contacts an Unstructured endpoint by default to send telemetry — usage metadata, not document content, but a network call the operator may not expect from a local tool.

What it does

Unstructured turns a document into a list of typed elements — titles, narrative text, tables, list items — that a language-model pipeline can work with, and it does the same job across PDFs, HTML, Word files and more. The library is open source and runs locally in a container or a virtual environment; the same company sells a hosted API and a managed Pipelines product for teams that would rather not run it. It is the ingestion step rather than an editor: it reads documents and returns elements.

Best for: Anyone building a retrieval or model-training pipeline who needs one interface across many file types and does not want to write a parser per format. The open-source library is the reason to choose it over the hosted competitors, and it is credible for PDFs specifically.

Worth knowing: The library sends telemetry by default. Importing it and calling a partition function pings an Unstructured endpoint with package and platform details, which is a surprising default for a tool whose selling point is that it runs on your own machine, and it has to be disabled deliberately with an environment variable. Its PDF handling also splits into a fast path and a heavy one: the higher-accuracy strategy pulls in deep-learning dependencies and OCR models that are far larger than the library itself, so "pip install unstructured" is not what a production PDF pipeline actually ends up installing. And the hosted products are on a different footing from the library — they are commercial and priced per page, so teams that prototype on the open-source package and move to the hosted API are moving onto different terms.

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
Self-hosted · Linux · Windows · macOS
Website
github.com
Requires an account
Not applicable
Free tier
Yes
Watermark on the free tier
Not verified
Maximum file size
Not verified
Batch processing
Yes
Data residency
Not verified
Open source
Yes
Self-hostable
Yes
Licence
Apache-2.0 for the library; the hosted API and Pipelines are commercial
Redaction
No redaction feature
Programmatic access
Embeddable library · HTTP API
Last availability check
Responded in 425 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.

“The unstructured library provides open-source components for ingesting and pre-processing images and text documents, such as PDFs, HTML, Word docs, and many more. The use cases of unstructured revolve around streamlining and optimizing the data processing workflow for LLMs.”

What that does not establish: Recorded as `none` because partitioning is a read-only operation: the library converts a document into elements and does not write a PDF back, so there is no redaction feature and no output file in which hidden content could survive. The basis is the library's own description of its purpose, quoted above, so this is absence from a feature set rather than a test. What it does not establish: that elements returned by the library are an anonymised view of the document. Text extracted from a document carries whatever was in it, so a partitioning step is not a sanitising step and should not be used as one.

https://github.com/Unstructured-IO/unstructured

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.

  • “Unstructured sends lightweight analytics to GET https://packages.unstructured.io/python-telemetry by default: one library-load ping when it is imported and one best-effort local attempt for each top-level public partition call.”

    Checked by us — the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01. This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

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

    How we checked: Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    What this hash proves, and what it does not

  • “Start processing your data with 10,000 free pages.”

    Checked by us — the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01. This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

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

    How we checked: Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    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 Unstructured 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 1 October 2026 and 1 October 2026.
Website availability.
The vendor's site was last checked on 16 October 2026.
Behaviour testing.
We have not run this tool ourselves, so everything here rests on the vendors’ own pages.

Sources: The project repository and the vendor's pricing page, read 2026-09-22 with headless Chrome. Vendor and project documentation, not independently tested; the library was not installed and no document was partitioned.