v0.42.1 — Convert documents, PDFs, Office files & more to Markdown — locally. Available for macOS (Windows version in development).
A self-contained web app built on Microsoft's MarkItDown library. All conversion happens on your machine. No files or URLs are ever sent to an external server.
- Drag-and-drop or browse to upload files
- URL conversion — paste a YouTube link or any web page URL
- Live Markdown preview alongside the raw output
- Copy to clipboard or download as
.md - Stats bar — characters, words, lines, and estimated token range
- Quit button — shuts down the server and shows a clean stopped page
- Auto-quit on tab close — closing the browser tab automatically exits the app
| Category | Formats |
|---|---|
| Documents | PDF, DOCX, PPTX, XLSX, XLS, EPUB |
| Data | CSV, JSON, XML |
| Web | HTML, YouTube URLs, web pages |
| Archives | ZIP |
| Images | JPG, PNG |
| Audio | WAV, MP3 |
Max file size: 100 MB
Download the MarkItDown.dmg installer from the v0.42.1 Release page. No Python installation required.
- Download
MarkItDown.dmgfrom the v0.42.1 release. - Double-click the DMG to open it.
- Drag MarkItDown.app (left) into the Applications folder (right).
- Eject the DMG.
- Open Applications in Finder and right-click
MarkItDown.app→ Open → click Open in the dialog.This one-time step is required because the app is not signed with an Apple Developer ID. After the first launch you can double-click as normal.
- Your default browser opens automatically to
http://127.0.0.1:5001. - To quit, click the Quit button in the top-right corner of the UI, or simply close the browser tab — the app exits automatically.
- macOS 12 (Monterey) or later
- Apple Silicon (arm64) or Intel Mac
Download MarkItDown.exe from the Releases page. No Python installation required.
- Download
MarkItDown.exefrom the latest release. - Double-click
MarkItDown.exeto launch it.Windows SmartScreen warning: Click More info → Run anyway. This one-time step is required because the app is not code-signed. After the first launch you can double-click as normal.
- Your default browser opens automatically to
http://127.0.0.1:5001. - To quit, click the Quit button in the top-right corner of the UI, or simply close the browser tab — the app exits automatically.
- Windows 10 or Windows 11 (64-bit)
Use this if you want to modify the app or the pre-built .app doesn't work on your system.
- macOS 12 or later (also works on Windows)
- Python 3.10 or higher
Check your Python version in Terminal:
python3 --versionIf you have 3.9 or lower, download the latest Python from python.org.
Open Terminal (Cmd + Space → type Terminal → press Enter) and run each command:
# 1. Navigate to the project folder
cd /path/to/CC_Markdown
# 2. Create a virtual environment
python3 -m venv .venv
# 3. Activate it (your prompt will show (.venv) when active)
source .venv/bin/activate
# 4. Install dependencies
pip install "markitdown[all]" flaskTip: If you see an Xcode prompt, click Install and wait for it to finish, then re-run the
pip installcommand.
cd /path/to/CC_Markdown
source .venv/bin/activate
python app.pyThe app starts a local server and opens http://127.0.0.1:5001 in your browser automatically.
To stop, click the Quit button in the UI, close the browser tab, or press Control + C in Terminal.
Open Command Prompt (Win + R → type cmd → Enter):
cd C:\path\to\CC_Markdown
python -m venv .venv
.venv\Scripts\activate
pip install "markitdown[all]" flaskNote: If Python is not found, re-run the installer from python.org and check "Add Python to PATH".
Run:
python app.pyUse this to rebuild MarkItDown.exe after making changes to app.py.
- A GitHub account with a fork of this repository (the build runs in GitHub Actions on a Windows runner — no local Windows machine needed)
- Alternatively: a Windows machine with Python 3.10+ and
pip install pyinstaller
- Push your changes to your repository.
- Go to Actions → Build Windows EXE → Run workflow.
- Download
MarkItDown-Windows-x64.zipfrom the completed run's artifacts. - Extract the zip —
MarkItDown.exeis inside.
Open Command Prompt and run:
cd C:\path\to\CC_Markdown
python -m venv .venv
.venv\Scripts\activate
pip install "markitdown[all]" flask pyinstaller
pyinstaller MarkItDown_win.spec --noconfirmOutput: dist\MarkItDown.exe (single self-contained executable, ~120 MB)
Use this to rebuild MarkItDown.app after making changes to app.py.
pip install pyinstallerbash build.shThe script will:
- Kill any running instance on port 5001
- Clean previous build artifacts
- Run PyInstaller with
MarkItDown.spec - Ad-hoc sign the
.appbundle - Create a
MarkItDown.dmginstaller with a drag-to-Applications layout - Report the bundle and DMG size and location
Output: dist/MarkItDown.app (~166 MB) and dist/MarkItDown.dmg (~90 MB)
First launch on another Mac: Right-click → Open → Open (one-time Gatekeeper bypass). This is expected for apps without an Apple Developer ID.
| Problem | Fix |
|---|---|
| "Port 5001 already in use" (macOS) | Run lsof -ti :5001 | xargs kill -9 then restart |
| "Port 5001 already in use" (Windows) | Run netstat -ano | findstr :5001, note the PID, then taskkill /PID <pid> /F |
| Windows SmartScreen blocks the EXE | Click More info → Run anyway (one-time, no certificate) |
| App didn't quit after closing tab | The watchdog allows 12 s after the last heartbeat — wait a moment |
| App won't open on another Mac | Right-click → Open → Open (one-time Gatekeeper step) |
| "command not found: pip" | Use python3 -m pip install ... instead |
| Xcode prompt on macOS | Click Install, wait for it to finish, re-run pip install |
| Conversion returns empty output | Check the error box in the UI for the full Python traceback |
CC_Markdown/
├── app.py # Single-file Flask app (HTML/CSS/JS embedded)
├── MarkItDown.spec # PyInstaller config — macOS .app bundle
├── MarkItDown_win.spec # PyInstaller config — Windows .exe (onefile)
├── build.sh # macOS build script (clean → bundle → sign → DMG)
├── .github/
│ └── workflows/
│ └── build-windows.yml # GitHub Actions workflow — builds Windows EXE
├── dist/
│ └── MarkItDown.app # Pre-built macOS application
└── .venv/ # Python virtual environment (not committed)
MIT — see LICENSE.
Built on Microsoft MarkItDown (MIT).