Overview – What is PullMD?
Anything in, clean Markdown out. PullMD is a self-hosted service that turns web pages, Reddit and Hacker News threads, PDFs and Office files, YouTube videos, images and audio into clean, token-lean Markdown, for you and for your AI agents.
Why use PullMD?
Agents are bad at reading the web. Raw HTML spends context on navigation, cookie banners and scripts, and built-in fetch tools often fail on JavaScript-heavy pages, PDFs and comment threads. PullMD sits in between: one URL or file in, only the content out.
Token counts from the PullMD README for three example pages (cl100k_base tokenizer, measured October 16, 2026):
| Page | Plain curl | PullMD | PullMD with ?query= |
|---|---|---|---|
| Encyclopedia article | 99,458 | 12,549 | 662 |
| Developer documentation page | 48,611 | 6,591 | 454 |
| Reddit thread with comments, using Reddit API credentials | blocked by a bot check | 6,381 | 644 |
The curl column is what a basic fetch tool hands an agent. The last column uses query-scoped extraction: ask a question and get back only the sections that answer it.
What a request looks like
PullMD runs on your own machine or server. After the Quickstart it listens at http://localhost:3000; on a server, use the address you gave it. To convert a page, pass its address as url:
curl "http://localhost:3000/api?url=https://docs.python.org/3/tutorial/venv.html&frontmatter=true"
PullMD fetches the page, drops everything that isn't content, and returns Markdown. frontmatter=true adds a YAML block with the source and how it was read; without it you get the body alone. The response, shortened:
---
title: 12. Virtual Environments and Packages — Python 3.15.1 documentation
url: https://docs.python.org/3/tutorial/venv.html
source: readability
fetched: 2026-10-23T23:09:08.642Z
language: en
site: Python documentation
---
# 12. Virtual Environments and Packages — Python 3.15.1 documentation
## 12.1\. Introduction[¶](#introduction "Link to this heading")
Python applications will often use packages and modules …
Your agents make the same request through the MCP server or the Claude Code skill, so you rarely type it yourself. Every field is described in Output format.
Four ways in
Paste a URL or drop a file at http://localhost:3000. Installable as a PWA.
GET /api?url=… returns Markdown, plain text or JSON.
Three tools for Claude Code, Cursor, Claude Desktop and claude.ai.
Claude Code skillA skill bundle with your instance's address built in.
What it reads
| Input | How |
|---|---|
| Web pages | Native Markdown when a site answers text/markdown (Cloudflare does), otherwise Readability and Trafilatura (the better result wins), then headless Chromium for JavaScript-heavy pages. See How extraction works. |
| Reddit and Hacker News | Detected automatically, with the comment tree. See Reddit and Hacker News. |
| Documents | PDF, Word, PowerPoint, Excel, EPUB, ZIP, CSV, JSON and XML, by URL or upload. Optional OCR for table-heavy PDFs. See Documents. |
| YouTube | Title, description and transcript with timecodes. No API key. See YouTube transcripts. |
| Images and audio | Captions and transcripts through any OpenAI-compatible model, including local ones. See Images and audio. |