Changelog
Highlights of recent releases. Every change, with issue links, is in CHANGELOG.md. Before upgrading across 3.0 or 3.13, read Upgrading.
3.18.2
November 8, 2026 · Latest
- Static fetches connect to the address SSRF protection checked, on every redirect hop. A hostname that changes its answer between the check and the connection can't reach an internal address on this path.
3.18.1
November 7, 2026
Not released on its own: these fixes ship in 3.18.2.
- YouTube URLs failed with
fetch failedwhen the response headers exceeded 16 KB. These URLs convert again. - Pages that split one piece of writing across several
<article>blocks keep all of them.X-Sourceisarticle-series, andPULLMD_ARTICLE_SERIES=offturns it off. - The docs state how Reddit access works: without credentials Reddit blocks the requests, and Reddit no longer accepts new API access requests.
3.18.0
November 4, 2026
- Upload e-mail (
.eml,.msg), saved pages (.mhtml), text, subtitles, OpenDocument, RTF, calendars, contacts, data files, feeds, notebooks and source code. All are read without the MarkItDown sidecar. comment_depth=allreturns whole Reddit threads, including comments Reddit collapses. On Hacker News it removes the depth limit.- Comments Reddit left out are noted below the thread.
- Replies to a deleted Reddit comment are kept, under
*[deleted]*or*[removed]*. - Negative Reddit comment scores read
[-3]; they showed as[+-3]. - Page titles no longer pick up the labels of inline SVG icons.
3.17.0
November 2, 2026 · Action required for old sidecars
/api/statusreports a Playwright sidecar older than 3.17.0 asdegradedand returns503. See Upgrading.- Reddit pages that aren't posts or subreddits crashed the extractor. They return
400with"code": "reddit_unsupported_page". - A blocked Reddit request stored an empty post. It returns
502, and nothing is cached. - With
DISABLE_PUBLIC_HISTORY=trueand sign-in off, anonymous deletes return403.
3.16.0
October 25, 2026
- Describe and transcribe images in Reddit posts with a vision provider.
- PullMD logs a startup warning when sign-in is off and a provider key is set.
- Image captions were cut off mid-sentence with verbose models. Captions now finish.
- Reddit text arrived HTML-escaped, so quotes showed as
>quote. Text arrives unescaped.
3.15.2
October 19, 2026
- Security fix (GHSA-26wr-prg5-vr77). A public page could steer the headless browser to an internal address with a redirect, a meta refresh, a script navigation, an iframe or a
fetch(). The Playwright sidecar now applies the same SSRF rules to every request the browser makes. Update thepullmd-playwrightimage together withpullmd; a newpullmdalone doesn't close the hole.
3.15.1
October 19, 2026
- Bot-protection pages (Cloudflare and Bunny Shield challenges) now return
502with"code": "bot_challenge"instead of a bare403or the challenge page converted to Markdown. Nothing is cached. See Troubleshooting. - If only the browser render hits a challenge, PullMD keeps the static result and notes it in
extractorReason.
3.15.0
October 14, 2026
- New recipe action
prepend-text: adds a fixed label to matched elements, for labels a page only shows with a CSS icon.
3.14.0
October 14, 2026
- New recipe action
grid-to-table: rebuilds comparison tables drawn with CSS grid as real tables. - New recipe action
replace-with-text: turns icons and logos into words. - Markdown tables come out without padding spaces, which cuts their token count sharply (a wide comparison table shrinks to about a quarter).
3.13.1
October 14, 2026
- Tables inside Webflow "HTML Embed" blocks are no longer dropped.
3.13.0
October 9, 2026 · Action required behind a proxy
- Forwarding headers are trusted only when
PULLMD_TRUST_PROXYis set. See Reverse proxy. - Login and signup are rate-limited, and form posts must come from the instance's own host.
- New hourly budget for image, audio and OCR providers:
PULLMD_LLM_RATE_LIMIT. - New size limit for fetched pages and documents:
PULLMD_MAX_FETCH_BYTES. - OAuth access tokens are accepted only on
/mcp.
3.12.0
September 21, 2026
- Share ids are 128 bits and unknown-id lookups are rate-limited, so share links can't be guessed.
- Private vulnerability reporting through
SECURITY.md.
3.11.0
September 3, 2026
- Cache retention is configurable with
PULLMD_CACHE_RETENTION_DAYS.
3.10.0
August 27, 2026
GET /api/statusreports sidecar health for monitoring. See Monitoring.- Site recipes can read structured data from embedded JSON state blocks.
3.9.0
August 1, 2026
- Download button in the web app, next to Copy and Share.
X-Suggested-Filenameheader with a ready-made file name.- Image captions work with current OpenAI models, including reasoning models.
3.0.0
June 10, 2026 · Breaking
- The Markdown body is clean by default: title, then content. Source details moved to the frontmatter.
PULLMD_SOURCE_HEADER=truerestores the old format. - Documents and YouTube through the MarkItDown sidecar. Image captions, audio transcripts and PDF OCR through OpenAI-compatible providers configured in PullMD.
- The Claude Code skill was renamed from
web-readertopullmd.