Batch-convert a folder of Word and PDF files to Markdown
One file is a drag-and-drop. Three hundred files — a documentation export, a decade of meeting minutes, a knowledge base leaving SharePoint — need automation. Here are the four ways Milldown does folder-scale conversion, from zero-setup to fully scripted, all running locally on your Mac.
1. Drop the whole folder
The simplest batch is no batch at all: drop a folder onto Milldown and it converts everything inside, recursively, producing a mirrored tree of .md files that preserves your directory structure. Mixed contents are fine — Word, PDF, PowerPoint, Excel, EPUB, and scanned documents each go through the right converter, with OCR applied on-device where needed.
2. Watch folders: conversion as infrastructure
Point Milldown at a folder and every document that lands there is converted automatically into a Markdown/ subfolder. This turns conversion into plumbing: set a watch on your scanner’s output folder, a shared drop folder, or wherever your browser downloads reports, and the Markdown just appears. Watch folders persist across app restarts (they’re stored as security-scoped bookmarks, so access survives restarts and app updates) and outputs land in their own subfolder precisely so they never get re-converted in a loop.
3. The CLI, for scripts and repeatability
Install the command-line tool from the app menu (Install Command-Line Tool) and you get full option parity in scripts. It converts one file per invocation — for a whole tree, loop:
# one file
milldown report.pdf -o report.md
# a whole tree: the CLI takes one file at a time, so drive it from find
find ./contracts -type f \( -name '*.pdf' -o -name '*.docx' \) -print0 |
while IFS= read -r -d '' f; do
milldown "$f" -o "${f%.*}.md"
done
If what you want is a mirrored tree with no scripting at all, that is what dropping the folder on the app does (option 1) — the recursive mirroring lives there, not in the CLI.
Because it’s the same local engine, a CI job or a cron script gets identical output to the app — useful when conversion is a step in a larger pipeline, like preparing a corpus for RAG.
4. Shortcuts and the URL scheme
Milldown registers a milldown://convert URL scheme, which makes it scriptable from Apple Shortcuts, Alfred, Raycast, or anything that can open a URL. A two-step Shortcut — receive files, open milldown://convert — can put “Convert to Markdown” in the Share sheet everywhere on your Mac. There’s also the zero-automation path: right-click any file in Finder → Services → Convert to Markdown.
Scale note: everything above runs on-device, so throughput is your Mac’s, not a server queue’s — a 200-page text PDF takes under 15 seconds, and there are no per-file fees, upload limits, or rate caps. The token counter totals the whole batch, so you can see what a corpus will cost before sending any of it to a model.
Picking the right mode
| Situation | Use |
|---|---|
| One-off migration of an archive | Drop the folder |
| Documents arrive continuously | Watch folder |
| Part of a scripted pipeline | CLI |
| Ad-hoc, from anywhere in macOS | Services menu or Shortcuts |
Convert the whole archive
Folders in, Markdown trees out — recursively, automatically, and entirely on your computer. Free for 7 days.
Download for macOSmacOS 14+ · Apple Silicon · $39 one-time after trial (excl. VAT) · no subscription