pypi / unstructured
unstructured
What changed in unstructured 0.18 to 0.27, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.
4 breaking3 security1 new APIs and options3 performance4 behavior and defaults18 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initunstructured 0.2730 changes
Breaking changes 4
A line break in a quoted CSV or TSV cell is read as whitespace rather than a literal \n.
CSV and TSV cells are now read as held in the file.
Text is classified as an email address only when all of it is an email address.
A line break is now read as a newline instead of a vertical tab.
New APIs and options 1
Element metadata exposes the DOCX paragraph style name.
Performance 3
PDF partitioning avoids reading every page with pdfminer just to determine whether the PDF has text.
Decode buffers are freed sooner when restoring original elements, reducing how long they remain allocated.
Image buffers are freed sooner during figure extraction, reducing how long they remain allocated.
Behavior and default changes 4
Addresses in Alabama and Wyoming are recognized.
GIF frames are charged at the canvas size Pillow decodes them at.
Chunk combine thresholds are measured in tokens when max_tokens is set.
Text is translated chunk by chunk instead of as a single whole.
Fixes and other changes 18
Analysis bounding-box overlays are rendered at the pdf_image_dpi used for partitioning.
Bounding boxes are compared correctly for elements without a page number.
A box nested within another is recognized when the tolerance is zero.
A bulleted list following its lead-in line is retained as list items.
combine_text_under_n_chars is capped at new_after_n_chars.
An empty text body returns no elements.
TSV partitioning honors infer_table_structure.
Files with the .markdown extension are detected as Markdown rather than plain text.
_mean ignores unmeasured scores, matching its sibling functions.
An attached email is partitioned instead of raising AssertionError.
The Cc, Bcc, and Message-ID headers are read regardless of letter case.
Commas inside quoted sender or recipient names are preserved.
Cell text such as N/A and None is preserved instead of being emptied.
Text extraction honors explicitly specified encodings.
Empty entries in an address group are now dropped.
The encoding argument is now honored when partitioning JSON.
The encoding argument is now honored when partitioning NDJSON.
Very large split elements are no longer repeated in every chunk.
unstructured 0.242 changes
Security 2
unstructured: Stored XSS via unescaped HTML generation
unstructured: Server-Side Request Forgery in the URL-based partitioning
unstructured 0.181 changes
Security 1
Unstructured has Path Traversal via Malicious MSG Attachment that Allows Arbitrary File Write