A desktop GUI for MarkItDown, built with PySide6 and QFluentWidgets.
It focuses on fast multi-file conversion to Markdown with a modern Fluent-style interface.
- Queue-based file workflow with drag and drop.
- Batch conversion with start, pause/resume, cancel, and progress feedback.
- Results view with per-file selection and Markdown preview.
- Preview modes: rendered Markdown view and raw Markdown view.
- Save modes: export as one combined file or separate files.
- Quick actions: copy Markdown, save output, back to queue, start over.
- Optional OCR for scanned PDFs and image files, with Azure Document Intelligence first and local Tesseract fallback.
- Settings for output folder, batch size, header style, table style, OCR, and theme mode (light/dark/system).
- Built-in shortcuts dialog, update check action, and about dialog.
Download prebuilt binaries from Releases, or run from source.
- Python
3.10+ uv(recommended)
Install dependencies:
uv syncAlternative:
pip install -e .[dev]- OCR is optional and disabled by default.
- Local OCR requires a system
tesseractbinary. Install it from the official Tesseract project. If it is not on yourPATH, set the executable path in Settings. - Azure OCR requires an Azure Document Intelligence endpoint in Settings.
- Azure Document Intelligence pricing includes 500 free pages per month at the time of writing.
- For API-key auth, set
AZURE_OCR_API_KEY. - If
AZURE_OCR_API_KEYis not set, Azure OCR falls back to Azure identity credentials supported byDefaultAzureCredential.
uv run python -m markitdowngui.mainCtrl+O: Open filesCtrl+S: Save outputCtrl+C: Copy outputCtrl+P: Pause/resumeCtrl+B: Start conversionCtrl+L: Clear queueCtrl+K: Show shortcutsEsc: Cancel conversion
uv pip install -e .[dev]
pyinstaller MarkItDown.spec --clean --noconfirmThe default spec builds an onedir app in dist/MarkItDown/.
Release workflows package this folder into platform-specific .zip artifacts.
Licensed under GPLv3 for non-commercial use.
Commercial use requires a separate commercial license.
This follows the non-commercial licensing requirements of PySide6-Fluent-Widgets (qfluentwidgets).
- Fork the repository and create a branch.
- Install dev dependencies:
uv pip install -e .[dev]- Make your changes.
- Run tests:
uv run pytest -q- Open a pull request with a clear summary.
- MarkItDown (MIT License)
- PySide6 (LGPLv3 License)
- PySide6-Fluent-Widgets / QFluentWidgets (Project site)
