Chrome extension
Drag, drop or paste a PDF URL; convert from the popup or the inline button on any page. Use it anonymously, or sign in for API keys, MCP and paid tiers – same capabilities as the web app.
Add to ChromeConvert PDF to clean, LLM-ready Markdown for humans and agents – tables, formulas and OCR, in the browser, via API or MCP.
The same conversion engine powers every entrypoint. Whether a person uses the PDF to Markdown converter in the browser or an agent posts a URL to the API, the output is structured Markdown – not a flat text dump.
Pick the surface that fits your workflow. They share the same slots, limits and retention rules – the API and MCP never bypass product rules.
Drag, drop or paste a PDF URL; convert from the popup or the inline button on any page. Use it anonymously, or sign in for API keys, MCP and paid tiers – same capabilities as the web app.
Add to ChromeThe full workbench on the site: upload or URL, settings, slots, status, preview and download – anonymous, or signed in for higher tiers.
Open the web appCreate jobs, poll status, fetch Markdown and clean slots over HTTPS with a bearer API key. Stable DTOs, predictable errors, OpenAPI spec.
See the APIConnect compatible agents to a managed MCP endpoint – a thin wrapper over the same API, so tool calls obey the same limits and slots.
Connect MCPImport our ready-made action spec into a ChatGPT Custom GPT, and your GPT can convert PDFs to Markdown as a built-in tool – no code.
Set up the actionOne predictable lifecycle, two ways to drive it: call the REST API from your own code, or use the equivalent hosted MCP tools in a compatible agent. Never claim a result before status=ready.
POST a PDF URL or upload bytes. Get back a job id and slot. Idempotency-Key is honored but optional.
Poll the job until ready or error, or register a signed webhook on paid tiers instead of polling.
Download the result once ready. Read truncated and pages to know if a long document was returned partially.
Free a slot when you're done. Deleting queued or processing jobs is destructive – confirm it in user-facing clients.
# 1. create a job from a PDF URL
curl -X POST https://pdf2md.dev/api/v2/jobs \
-H "Authorization: Bearer p2m_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/report.pdf"}'
# → { "job_id": "job_9f3c…", "status": "queued" }
# 2. poll status
curl https://pdf2md.dev/api/v2/jobs/job_9f3c… \
-H "Authorization: Bearer p2m_…"
# → { "status": "ready", "pages": 24, "truncated": false }
# 3. fetch the Markdown
curl https://pdf2md.dev/api/v2/jobs/job_9f3c…/download \
-H "Authorization: Bearer p2m_…"
# 4. free the slot
curl -X DELETE https://pdf2md.dev/api/v2/jobs/job_9f3c… \
-H "Authorization: Bearer p2m_…"
Image-only and scanned PDFs are OCR'd into selectable Markdown, including Cyrillic. Force OCR when you need it.
Columns become genuine Markdown tables instead of jumbled lines, so structure stays readable for people and models.
Mathematical notation is preserved rather than flattened into garbled characters.
Embed images as base64 or use lightweight placeholders – your choice, depending on whether you need the pixels.
Preview the rendered Markdown or read the raw source, then copy to clipboard or download a .md file.
Hyperlinks and footnotes are carried over as Markdown links, not dropped or flattened into plain text.
We convert up to the time budget and return what we managed – the rest is truncated. Paid tiers raise every limit. Compare plans →
Authorization: Bearer p2m_… over HTTPS; revoke any key at any time.Everything an agent needs to integrate without reading source code: setup hub, machine-readable manifests and an OpenAPI spec.
No account is needed for everyday conversion in either the Chrome extension or the web app. A free Google account unlocks API keys, hosted MCP and paid tiers – and those work the same in both the extension and the web app.
Sign in with Google, generate a key, and send it as Authorization: Bearer p2m_… over HTTPS. Keys are secrets you store securely and can revoke at any time. This is separate from the device-signed path the extension uses.
A managed Model Context Protocol endpoint that exposes conversion as agent tools. It's a thin wrapper over the same REST API, so tool calls respect the same slots, limits and retention.
More slots, larger files, longer time budgets, longer retention, webhooks, batch create, higher rate limits, and higher queue priority backed by a dedicated paid conversion pool so paid jobs don't wait behind the free backlog. See the pricing page for live limits.
Converted results are stored temporarily and auto-deleted after the retention window for your tier (1 hour on free, longer on paid). You can also delete any job manually at any time.
Each tier has a time budget. We convert up to that budget and return what we managed as a partial result flagged with truncated=true and a per-tier note, rather than failing outright. Higher tiers have longer budgets.
Yes. The free tier gives 3 slots, 10 MB files, a 15-minute time budget and 1-hour retention – anonymous in the browser, no card. A free Google account additionally enables an API key and hosted MCP.
Yes. Image-only and scanned PDFs are OCR'd into selectable Markdown, including Cyrillic. You can also force OCR in the settings when a PDF has a bad text layer.
Conversion and OCR handle a wide range of languages, including mixed-language documents and Cyrillic. The Chrome extension's interface is localized in 50+ languages.
Yes. Paste a direct PDF URL in the extension or the web app, or POST a url to the API – no need to download the file first.
On paid tiers you can register signed webhook endpoints (and per-job callback_url) to be notified when a job is ready, instead of polling for status.
No. Files and results are stored only temporarily to run the conversion and are auto-deleted after the retention window. We don't use your documents to train models.