# What changed in trafilatura

> 47 changes in trafilatura 2 from its official release notes, upgrade guides and advisories: 1 deprecations, 2 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/trafilatura/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## trafilatura 2

### Deprecations

- The release adds more deprecation warnings. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)

### New APIs and options

- Adds the extract_with_metadata method. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Extraction adds support for meta name image. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)

### Performance

- Deduplication is simpler and faster. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- XPath performance is faster using XSLT extensions. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)

### Behavior and default changes

- Boilerplate pruning is more targeted to reduce over-extraction. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Subelem processing was further improved, mostly for math, code, and Markdown. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- The text recovery and extraction sequence was revamped for better overall recall and forum extraction. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Title extraction was improved. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Spacing is improved in item, cell, and code blocks. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- The detector supports all Justext languages known to it. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)

### Fixes and other changes

- Brackets inside inline code in link text are no longer escaped. (2.3.1) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.1)
- The output contains fewer duplicated segments. (2.3.1) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.1)
- Image paragraphs are no longer repeated in the output. (2.3.1) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.1)
- Text after inline code is no longer repeated in the output. (2.3.1) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.1)
- Document handling was simplified and made more correct. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Downloads and decompression were overhauled, with more robust handling of relative URLs and zstd frames. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Link discovery improved for sitemap namespaces, Atom links, and JSON feeds. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Markdown output improved for spacing, bold spans, CommonMark escaping, and LaTeX math. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Metadata handling improved for word boundaries, JSON-LD types, OpenGraph, license links, list values, canonical URLs, and TXT/Markdown headers. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Fallbacks now preserve requested images. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Scoped caches are now accepted. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Text extraction improved for forms, link farms, inline code and links, infinite scroll, boilerplate widgets, nested lists, and text after blocks. (2.3.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.3.0)
- Image extensions are matched case-insensitively. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Metadata values are quoted so the Markdown header remains valid YAML. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Angle brackets in Markdown link destinations are escaped. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- A space after inline formatting is preserved in Markdown list items. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- List items whose only content is a link are retained. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Superscript and subscript boundaries are preserved in Markdown output. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Processing for nested elements was improved. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Text inside nobr tags is retained. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Output formatting bugs were addressed. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Text in sub-elements is handled better. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Table processing is more accurate. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- Question headers in Yoast FAQ blocks are retained. (2.2.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.2.0)
- None values in code blocks are replaced. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Fixes eager matching by the doctype regular expression. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Code is changed to handle potential empty strings. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- The fencedframe element is cleaned during extraction. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- The tokenizer now strips the Ideographic Full Stop. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Images are preserved when links are included. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Refines image source URL handling and fixes table extraction bugs. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Links in tables are preserved when --links is enabled. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- The no_fallback setting is propagated to the fast argument. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Fixes an AttributeError that node pruning could raise in certain cases. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Code in pre-tags is detected using indicators, and code formatting issues are fixed. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
- Table extraction is made more robust. (2.1.0) — [release notes](https://github.com/adbar/trafilatura/releases/tag/v2.1.0)
