Unstructured review
Unstructured is an open-source Python library that ingests and pre-processes PDFs, HTML, Word docs, images and other documents into structured data for LLMs.
TL;DR
Unstructured is an open-source Python library for partitioning documents like PDFs, HTML, Word files and emails into structured elements. It is for developers preparing document data for LLM and RAG workflows. A single partition function detects the file type and routes it to the matching parser, and the company also offers a separate paid-tier Transform API.
- 15.7kGitHub stars
- +43new stars, week of Oct 25
- 581.8kdownloads a week, −11% vs 4-week avg
- #38in RAG, data and memory this week
Unstructured at a glance
- Category
- RAG, data and memory
- Maintained by
- Unstructured (organization, @Unstructured-IO on GitHub)
- License
- Apache 2.0
- Language
- HTML, Python, Shell
- Repository
- github.com/Unstructured-IO/unstructured
- Website
- www.unstructured.io
- PyPI package
- unstructured 0.27.33
- Latest release
- 0.27.33 on GitHub, Oct 22, 2026
- First published
- Sep 26, 2022
What Unstructured does
- Unstructured partitions PDFs, HTML, Word docs, images, emails and other documents into structured elements.
- Unstructured's partition function detects the file type and routes it to the appropriate file-specific partitioning function.
- Unstructured runs OCR on images and PDFs using tesseract, with tesseract-lang for additional language support.
- Unstructured includes chunking functions that split partitioned elements into chunks.
- Unstructured provides connectors for data ingestion, with batch processing available through the separate unstructured-ingest project.
- Unstructured offers an opt-in langdetect-rs backend for language detection during partitioning.
How it works
Unstructured runs as a Python library you import, or inside a prebuilt Docker container for x86_64 and Apple silicon. You call partition or a file-specific function such as partition_pdf on a file and get back a list of elements. Some formats rely on system tools: libmagic, poppler, tesseract and libreoffice. By default the library sends lightweight analytics pings that exclude document content.
How to install and start using Unstructured
With pip (all document types)
pip install "unstructured[all-docs]"With pip (base only)
pip install unstructuredWith Docker
docker pull downloads.unstructured.io/unstructured-io/unstructured:latestRequirements
- Python 3.11 or later, below 3.14.
- libmagic-dev for filetype detection.
- poppler-utils and tesseract-ocr for images and PDFs.
- libreoffice for MS Office documents.
First steps
- Install Unstructured with the extras for your document types, such as pip install "unstructured[docx,pptx]".
- Install system dependencies you need, such as poppler-utils and tesseract-ocr for PDFs and images, or libreoffice for MS Office docs.
- Import partition from unstructured.partition.auto and call it on a file path to get a list of elements.
- Print the elements with print("\n\n".join([str(el) for el in elements])) to inspect the output.
Who Unstructured is for
- Developers preparing documents as input for LLM and RAG pipelines.
- Python projects that must parse many file types through one interface.
- Teams extracting text from scanned PDFs and images with OCR.
Limitations to know
- Unstructured's own README reports lower table and text accuracy for the open-source library than for the company's Transform API.
- Unstructured needs extra Python extras and system packages for many formats, such as PDFs, images and Office files.
- Unstructured sends analytics pings by default when imported and on partition calls.
- Building Unstructured's Docker image locally can fail due to upstream changes in the wolfi-base image.
Is Unstructured growing? Usage data
In the week of Oct 25–31, 2026, Unstructured ranked #370 on the Devtoolwatch Board and #38 in RAG, data and memory, with a momentum score of 14 out of 100. Its main package had 581.8k downloads that week, −11% against its own 4-week average.
Show the weekly numbers
| Week of | New stars |
|---|---|
| Aug 9, 2026 | 34 |
| Aug 16, 2026 | 27 |
| Aug 23, 2026 | 31 |
| Aug 30, 2026 | 41 |
| Sep 6, 2026 | 25 |
| Sep 13, 2026 | 36 |
| Sep 20, 2026 | 53 |
| Sep 27, 2026 | 28 |
| Oct 4, 2026 | 33 |
| Oct 11, 2026 | 21 |
| Oct 18, 2026 | 53 |
| Oct 25, 2026 | 43 |
On Hacker News
- Understanding What Matters for LLM Ingestion and Preprocessing, 60 points and 1 comments (Apr 21, 2024)
- Unstructured Serverless API, 5 points and 2 comments (Dec 1, 2024)
The Board ranks tools by four signals each week: new stars, new stars for the repo's size, added downloads and download growth beyond the market. How the ranking works.
Unstructured alternatives
Other RAG, data and memory tools on the Board in the week of Oct 25–31, 2026, by momentum:
| Rank | Tool | Stars | Downloads/wk |
|---|---|---|---|
| #1 | XERJXERJ is a local-first search engine and MCP server for AI agents, packaged as one Rust binary with an Elasticsearch-compatible API. | 17.9k | – |
| #2 | MemvidMemvid is a single-file memory layer for AI agents that packages data, embeddings, search indexes, and metadata into one portable .mv2 file. | 17.3k | – |
| #3 | LEANNLEANN is a Python vector database and RAG library that recomputes embeddings on demand to keep indexes small on personal devices. | 13.7k | – |
| #4 | GraphifyGraphify is an AI coding assistant skill that turns a codebase, with its docs, PDFs, images and videos, into a queryable knowledge graph. | 140k | 480.7k |
| #5 | MarkItDownMarkItDown is a lightweight Python utility from Microsoft that converts PDFs, Office documents, images, audio and other files to… | 193.2k | 4.7M |
| #6 | FirecrawlFirecrawl is an API and open source project to search, scrape, crawl, and interact with web pages, returning LLM-ready markdown or JSON… | 197.4k | 2.9M |
Recent Unstructured releases
Unstructured FAQ
Is Unstructured free and open source?
Yes. Unstructured's source code is on GitHub (Unstructured-IO/unstructured) under the Apache 2.0 license, so you can use it for free. Its website also links to a pricing page (https://www.unstructured.io/pricing) for any paid plans.
How do I install Unstructured?
Run pip install "unstructured[all-docs]". The unstructured package needs Python 3.11 or newer, below 3.14. The install section above has the other options from the project's README.
Is Unstructured still maintained?
Yes. The Unstructured-IO/unstructured repository was last updated on Oct 22, 2026, and the latest release, 0.27.33 on GitHub, came out on Oct 22, 2026.
How popular is Unstructured?
Unstructured has 15.7k GitHub stars as of Nov 1, 2026. It gained 43 new stars in the week of Oct 25–31, 2026, against a 12-week average of 35 a week. Its main package had 581.8k downloads that week, −11% against its own 4-week average. That made it #38 among RAG, data and memory tools on the Devtoolwatch Board.
Unstructured vs Docling: how do they compare?
Unstructured and Docling are both tracked by Devtoolwatch as RAG, data and memory tools. Unstructured has 15.7k GitHub stars and Docling has 69.9k. In the week of Oct 25–31, 2026, Unstructured's main package had 581.8k downloads and Docling's had 904.2k. Docling is a Python SDK and CLI that parses PDF, DOCX, HTML and other formats into a unified document representation for gen AI. Docling review.
What are the best alternatives to Unstructured?
Other RAG, data and memory tools on the Devtoolwatch Board in the week of Oct 25–31, 2026, by momentum: XERJ (#1), Memvid (#2), LEANN (#3), Graphify (#4), MarkItDown (#5). The alternatives table above has their numbers.
Is Unstructured open source?
Yes. The unstructured library is open source under the Apache-2.0 license. The README states the open-source library is, and will stay, completely free. The company separately offers a Transform API and platform products.
How do I use the Unstructured library in Python?
Unstructured is used by importing partition from unstructured.partition.auto and calling it with a filename. It detects the file type and returns a list of elements. You can also call file-specific functions such as partition_pdf or partition_text.
What file types can Unstructured process?
Unstructured processes PDFs, HTML, Word docs, PowerPoint, images, plain text, XML, JSON, emails, spreadsheets and more. Plain text, HTML, XML, JSON and emails need no extra dependencies; other types need extras.
Does Unstructured send telemetry?
Yes. Unstructured sends lightweight analytics by default: one ping on import and one per top-level partition call. The README states these never include document content, filenames, paths, credentials or persistent identifiers.
Can Unstructured run in Docker?
Yes. Unstructured publishes multi-platform Docker images for x86_64 and Apple silicon. Pull the latest image, create a container, and shell into it to run partition functions in Python.
Sources
- Unstructured-IO/unstructured on GitHub
- Unstructured README
- unstructured on PyPI
- Unstructured website
- Release 0.27.33 (Oct 22, 2026)
- Release 0.27.32 (Oct 20, 2026)
- Release 0.27.30 (Oct 19, 2026)
- Hacker News: Understanding What Matters for LLM Ingestion and Preprocessing
- Hacker News: Unstructured Serverless API
- Devtoolwatch Board, the week of Oct 25–31, 2026
Unstructured README badge
Maintainers can show the tool's weekly Board rank in their README:
[](https://index.devtoolwatch.com/tools/unstructured/)How this page is made: Devtoolwatch writes each review from the project's README, releases, package metadata and website, with an AI model, then checks every claim against the source it cites and drops what the sources don't support. The numbers come from Devtoolwatch's daily GitHub snapshots, GitHub's stargazer history, and the npm and PyPI download APIs. Spotted an error? Email [email protected].