Devtoolwatch BoardGet it every Monday

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.

Updated Nov 1, 2026. Review written Oct 22, 2026 from the project's own sources; usage data refreshed every Monday.

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.

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 unstructured

With Docker

docker pull downloads.unstructured.io/unstructured-io/unstructured:latest

Requirements

  • 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

  1. Install Unstructured with the extras for your document types, such as pip install "unstructured[docx,pptx]".
  2. Install system dependencies you need, such as poppler-utils and tesseract-ocr for PDFs and images, or libreoffice for MS Office docs.
  3. Import partition from unstructured.partition.auto and call it on a file path to get a list of elements.
  4. 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.

New GitHub stars per week for Unstructured12 weeks from Aug 9, 2026: 34, 27, 31, 41, 25, 36, 53, 28, 33, 21, 53, 43 new stars, an average of 35 a week.Aug 9week of Oct 25
New GitHub stars per week for the last 12 weeks, from GitHub's stargazer history (today's stargazers by the week they starred).
Show the weekly numbers
New GitHub stars per week for Unstructured
Week ofNew stars
Aug 9, 202634
Aug 16, 202627
Aug 23, 202631
Aug 30, 202641
Sep 6, 202625
Sep 13, 202636
Sep 20, 202653
Sep 27, 202628
Oct 4, 202633
Oct 11, 202621
Oct 18, 202653
Oct 25, 202643

On Hacker News

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:

RAG, data and memory ranked by momentum, the week of Oct 25–31, 2026
RankToolStarsDownloads/wk
#1XERJXERJ is a local-first search engine and MCP server for AI agents, packaged as one Rust binary with an Elasticsearch-compatible API.17.9k–
#2MemvidMemvid is a single-file memory layer for AI agents that packages data, embeddings, search indexes, and metadata into one portable .mv2 file.17.3k–
#3LEANNLEANN is a Python vector database and RAG library that recomputes embeddings on demand to keep indexes small on personal devices.13.7k–
#4GraphifyGraphify is an AI coding assistant skill that turns a codebase, with its docs, PDFs, images and videos, into a queryable knowledge graph.140k480.7k
#5MarkItDownMarkItDown is a lightweight Python utility from Microsoft that converts PDFs, Office documents, images, audio and other files to…193.2k4.7M
#6FirecrawlFirecrawl is an API and open source project to search, scrape, crawl, and interact with web pages, returning LLM-ready markdown or JSON…197.4k2.9M

All RAG, data and memory tools, ranked

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

  1. Unstructured-IO/unstructured on GitHub
  2. Unstructured README
  3. unstructured on PyPI
  4. Unstructured website
  5. Release 0.27.33 (Oct 22, 2026)
  6. Release 0.27.32 (Oct 20, 2026)
  7. Release 0.27.30 (Oct 19, 2026)
  8. Hacker News: Understanding What Matters for LLM Ingestion and Preprocessing
  9. Hacker News: Unstructured Serverless API
  10. Devtoolwatch Board, the week of Oct 25–31, 2026

Unstructured README badge

Maintainers can show the tool's weekly Board rank in their README:

Devtoolwatch badge for Unstructured

[![Devtoolwatch](https://index.devtoolwatch.com/badge/unstructured.svg)](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].