Convert PDF to Markdown Online Free - Local, No Upload
Pull the headings, paragraphs, lists, and tables out of a PDF and get clean GitHub-Flavored Markdown back. Text-based PDFs convert locally with no OCR service, in under 5 milliseconds median. The output keeps its structure intact — ready to read, commit to a repo, or feed to an LLM.
Three ways below, pick by scenario: use the online converter for a quick one-off, the CLI for batch jobs, the API to embed conversion in your own code.
Free Online Conversion (Files Never Leave Your Device)
The converter is powered by @firecrawl/anydoc-wasm and runs entirely in your browser via WebAssembly: files are never uploaded to any server, and it even works offline. Drop in a PDF, get Markdown instantly — copy it or download the .md file.
Drop a document here, or click to browse
Conversion runs locally in your browser — files are never uploaded
Three Ways: Pick by Scenario
Way 1: Online Converter — No Install, Fastest Start
That's the converter block above. Best for converting a few documents occasionally without installing anything. It runs the exact same engine as the CLI and the API, so the output is identical.
Way 2: One-Line CLI Command
With Node.js installed, no project setup is needed — one command does it:
# Convert a PDF, write the Markdown to a file
npx @firecrawl/anydoc report.pdf -o report.md
# Read from stdin (pipeline-friendly)
npx @firecrawl/anydoc - --format pdf < report.pdfThe first npx run downloads the CLI package; after that it runs locally. See the beginner's guide for more.
Way 3: API Integration (Node.js / Python / Rust)
Embed PDF-to-Markdown in your own code — one API across all three runtimes:
// Node.js: npm install @firecrawl/anydoc
import { toMarkdown } from '@firecrawl/anydoc'
const markdown = await toMarkdown('report.pdf')# Python: pip install firecrawl-anydoc
import anydoc
markdown = anydoc.to_markdown("report.pdf")// Rust: cargo add anydoc
let markdown = anydoc::to_markdown("report.pdf")?;Need the raw bytes of embedded images? Stop at the toDocument layer — see the API quick reference.
Details and Boundaries
- Text-based PDFs convert directly, no OCR: the built-in pdf-inspector parses the PDF text streams locally — no online services involved
- Scanned / image-only PDFs are not supported: they need OCR, and anydoc returns
unsupported— a deliberate boundary, not a bug. For OCR, use Firecrawl Parse; details in error handling & limits - Noise stripped by design: headers, footers, page numbers, and date/time placeholders are removed for clean LLM input
- Structure preserved where possible: headings, lists, and tables map to their GFM equivalents; cross-page line breaks and hyphenation are regularized
- Format detected from bytes, not extensions: a mislabeled file still converts correctly
- Speed: 4.4ms median conversion — pure Rust, no ML models, no external dependencies
FAQ
Is the PDF to Markdown conversion free?
Yes. anydoc is open source under the MIT License, and the online converter on this page is free too — it runs locally in your browser, with no usage limits and no sign-up.
Is my PDF uploaded anywhere?
No. The online converter runs via WebAssembly inside your browser, so the file never leaves your device. The CLI and API versions also convert locally.
Do scanned PDFs work?
Pure scanned / image-only PDFs don't — they require OCR, and anydoc explicitly returns unsupported. Two options: OCR the PDF into a text-based one first with a local tool (e.g. tesseract), or use Firecrawl Parse, which layers OCR on the same conversion pipeline.
Will the Markdown tables come out messy?
Tables become well-formed GFM tables. Complex multi-column layouts degrade to readable text; completeness is backed by the benchmark, but pixel-perfect reproduction is out of scope — anydoc targets information integrity, not visual cloning.
What about very large PDFs?
Normal documents are fine (4.4ms median). Decompression, nesting depth, and node count have fixed safety caps — monster files (hundreds of MB) may hit a resourceLimit error, so split them first.
Related Pages
- Sister format: Convert Word to Markdown (.doc / .docx / .docm)
- Start from zero: Getting Started: First Conversion
- All five bindings on one page: API Quick Reference
- Debugging errors: Error Handling & Limits
- Install for every language: Install
- How it stacks up: markitdown vs anydoc
- Full numbers: Benchmark