Milldown converts PDFs, Office documents, web pages — even scans — into clean, token-efficient Markdown. Your documents are converted entirely on your Mac — never uploaded.
Sending documents to an AI costs tokens, and every conversation turn and RAG query re-bills the whole document. But the saving depends entirely on what you'd otherwise have done — so Milldown only claims one where a cheaper path genuinely existed.
Plain text is the one format that's diffable, portable, permanent, and readable by everything — including people. Whatever brings you here, the mill is the same.
Token-efficient input for Claude, ChatGPT, and your vector store — with chunk export in Markdown or JSONL and a savings counter that proves the ROI.
Feed your Obsidian vault or Notion workspace. Watch folders keep a Markdown mirror of everything; YAML front matter carries titles, sources, and dates.
Docs that diff. Convert a whole folder tree, commit the Markdown mirror, and review document changes in pull requests like code. CLI included.
Formats die; plain text doesn't. Provenance front matter records the source path, timestamp, and SHA-256 of every original — each conversion is a citable record.
From .docx drafts to Hugo/Jekyll-ready Markdown with publishing front matter. Clean headings, real tables, no pasted-from-Word debris.
A scanned PDF is invisible to a screen reader. On-device OCR turns it into structured, navigable text — without uploading anyone's documents.
Web converters upload your contracts, reports, and records to someone else's server. Milldown bundles the entire conversion engine inside the app.
Convert → clean → measure → pack → paste. From the window, the menu bar, Finder, or your own automations.
PDF, Word, PowerPoint, Excel, HTML, CSV, JSON, XML, EPUB, ZIP archives, Jupyter notebooks, Outlook messages, and images — powered by Microsoft's open-source MarkItDown engine.
Paste a URL and get a clean article — Wikipedia formatting, or a YouTube video's full transcript with its title, description and metadata.
No embedded text? Milldown recognizes it with Apple's Vision framework, entirely on-device.
Shows tokens and dollars saved, priced against Claude, GPT, Gemini or open-weight rates — or a custom rate you enter. Projects over 1×, 10× or 100× uses, and stays silent where there's no honest saving to claim.
Strips repeated page headers, footers, page numbers and invisible characters, and tells you exactly how much it removed. Never touches code blocks. One click, fully revertible.
Merge a folder's worth of documents into one paste-able Markdown file with a table of contents.
Split by headings into 512–2,048-token chunks — numbered Markdown files or a single JSONL, ready for your vector store.
Provenance headers (source, timestamp, SHA-256) for archives and pipelines, or Hugo/Jekyll headers for publishing.
Install the milldown command and script conversions in the terminal, CI, or anywhere else — same engine, full option parity.
Drop a folder and get a Markdown mirror of its entire structure — subfolders preserved, ready to commit or index.
Drop files in a folder; a Markdown mirror appears automatically. Set it once, forget it.
Drop a file on the menu-bar icon — the Markdown lands on your clipboard, ready to paste into any AI chat.
Right-click any file → Convert to Markdown. Open With works too.
Trim the junk before you paste — token counts recompute live as you type.
milldown:// URL scheme works from Shortcuts, scripts, and launchers, with a confirmation step so nothing converts behind your back.
Quit and reopen — your file list and converted Markdown come back exactly as you left them. No re-converting, no re-OCR.
Drag any converted file from Milldown onto your Desktop or into Claude or ChatGPT — it arrives as a real .md file.
Convert .xlsx to plain CSV instead of Markdown tables — about 39% fewer tokens for the same sheet data. One toggle.
A corrupt or truncated Office file is refused with an explanation, instead of quietly handing you a page of binary noise labelled "converted".
Open a shell with milldown already on its PATH, without installing anything system-wide.
Stop a long batch mid-run with one click. Progress shows exactly how many files are done.
Drag files or a whole folder, paste a URL, or right-click in Finder. Batch as many as you like.
Preview the Markdown, clean up conversion noise, watch the token counter drop.
Copy into Claude or ChatGPT, save to disk, export chunks, or build a context pack.
Try everything free for 14 days. Then one purchase — no subscription, no account.
Looking for how something works? The user guide covers every feature in detail.
No. Your documents are converted entirely on your Mac — including OCR — and are never uploaded. Milldown makes exactly four kinds of network request, none of which carry a file from your disk: fetching a web page or YouTube transcript you explicitly paste, checking milldown.app for app updates, and verifying your licence key with our licensing service. There's no account and no telemetry, and converting local files works with Wi-Fi off.
Two optional features are the exception, and they're clearly marked as such in Settings: Azure Document Intelligence and Azure Content Understanding send your document to Microsoft. Both are off by default.
PDF (including scanned), Word (.docx), PowerPoint (.pptx), Excel (.xlsx/.xlsm), HTML, CSV, JSON, XML, RSS/Atom, EPUB, ZIP archives, Jupyter notebooks (.ipynb), Outlook messages (.msg), plain text and Markdown, and JPEG/PNG images — plus any web page, Wikipedia article or YouTube video by URL.
Legacy Office formats (.doc, .ppt, .xls) and Apple formats (.pages, .key, .numbers) need saving as their modern equivalents first. Milldown tells you which one rather than failing silently.
Because the only transcription available in the underlying engine uploads your audio to a cloud speech service. That would break the promise that nothing leaves your Mac, so audio conversion is disabled rather than quietly shipped. YouTube transcripts are different — those are captions YouTube already published, fetched as text.
Locally, with the o200k tokenizer, comparing the Markdown against the realistic alternative for that file type. For PDFs that's native PDF upload, which bills every page as an image as well as text. For web pages it's the raw page source a scraper would ingest. For spreadsheets it's Milldown's CSV mode against its own Markdown-table output.
Some files honestly show no saving. A Word document costs about the same in Markdown as the plain-text extraction any tool would do anyway — claiming 97% by comparing against the raw OOXML inside the file would be measuring against something nobody does. A video has no raw path at all: a transcript is the only way to give one to an LLM. In those cases Milldown shows the token count and explains why there's no comparison, rather than inventing a flattering one.
Whichever you pick: Claude Opus 5, Sonnet 5 or Haiku 4.5, GPT-5 or GPT-5 mini class, Gemini Pro or Flash class, open-weight/self-hosted, or a custom rate you type in. The presets are list prices at release and providers revise them often, so they're presented as editable defaults — if you're on negotiated or batch pricing, enter what you actually pay.
The 10× and 100× projections assume uncached pricing. With prompt caching enabled, repeat-use savings are roughly 3–5× smaller, though still real.
It strips conversion noise without touching your content: repeated running headers and footers (short lines that appear four or more times, the signature of per-page boilerplate), standalone page numbers, trailing whitespace, invisible characters like zero-width and non-breaking spaces, and runs of blank lines collapsed to one. It never touches anything inside a fenced code block, it tells you how much it removed, and Revert Cleanup restores the original exactly.
Yes — that's a first-class use case. Refine ▸ Export RAG Chunks splits on heading boundaries into numbered Markdown files at roughly 512, 1,024 or 2,048 tokens; Export Chunks as JSONL produces one JSON object per line for direct ingestion. Provenance front matter attaches the source path, timestamp and SHA-256 so every chunk stays traceable.
Both. Drop a folder and Milldown mirrors the entire tree, subfolders preserved. Watch folders go further: nominate a folder and anything added to it is converted automatically into a "Markdown" subfolder, so a Markdown mirror maintains itself.
Yes. Install the milldown command from the app menu and it works anywhere — scripts, Makefiles, CI — with full option parity. Or open a ready-made terminal from the app if you'd rather not install anything system-wide. There's also a milldown:// URL scheme for Shortcuts and launchers, which asks for confirmation so nothing converts behind your back.
Free for 14 days — every feature unlocked, no account needed. Then $39 one-time covering up to 3 Macs, for personal and commercial use. A $149 Team licence covers 10 seats. Prices exclude VAT/sales tax, which is added at checkout where applicable — Stripe, as merchant of record, handles the tax and issues your receipt.
Your purchase includes 12 months of updates. After that the app keeps working forever; renewing at $19/year simply continues the new versions. Nothing is billed automatically, and no feature is ever switched off. There is a 14-day money-back guarantee.
Apple Silicon Macs (M1 and later) running macOS 14 Sonoma or newer. Intel Macs are not supported. The download is around 175 MB because the conversion engine is bundled inside the app — there's nothing else to install, and no Python on your system is touched or required.
Conversion stops; nothing else changes. Documents you've already converted stay in the app and on disk, and everything you saved is plain Markdown you own outright. Entering a license key resumes immediately.
Conversion is powered by Microsoft's open-source MarkItDown engine (MIT license), bundled inside the app, with Milldown's native macOS interface, on-device OCR via Apple's Vision framework, token analytics, and workflow tools built on top. Milldown is not affiliated with Microsoft.
Every document you send to an AI without Milldown costs 2–3× the tokens it should.
Launching soon — request early access