A native PySide6 desktop GUI around Microsoft's
markitdown Python package.
The core flow is intentionally simple: drop a file (or paste a URL) and
it converts and saves itself to your Downloads folder automatically — no
manual "export" step required.
Important
This app converts files with the privileges of the account running it,
the same way markitdown itself does. Only convert files and URLs you
trust. See SECURITY.md for the full policy.
This is an independent, community-built GUI. It is not developed, maintained, or endorsed by Microsoft. See Credits & License below.
🌐 Website · ⬇️ Download for Windows (.exe) · Latest release
- Drag-and-drop of files/folders (recursive) onto a big, centered drop zone, click-to-browse on that same zone, "Add files" / "Add folder" buttons, and a URL field (webpage or YouTube link) — any of these starts conversion immediately, no separate "Convert" click needed.
- Auto-save to Downloads: as soon as an item finishes converting, the
resulting
.mdfile is written straight toPath.home() / "Downloads"(resolved generically, so it works on any account) using the original file's name. If a same-named file already exists there, a numeric suffix is appended (document (1).md,document (2).md, ...) so nothing gets overwritten. The queue row shows "Done — Saved to Downloads"; double-click a done row to open its containing folder. - Queue table with per-item status (Pending / Converting / Done / Error), multi-select, remove, and clear-all. The drop zone is dominant while the queue is empty and shrinks to a slim bar once items are added, so the table takes over. A subtle hover glow animation highlights the drop zone.
- Runs on a background
QThreadPoolso the UI never freezes; per-item errors are caught and shown without stopping the batch. A progress bar only appears while a batch is actively converting, and disappears when idle. - Rendered (HTML via the
markdownpackage) and Raw (editable) preview tabs. "Save a copy as..." / "Export all to..." buttons remain available as an optional way to also save elsewhere — auto-save to Downloads always happens regardless. - Advanced/optional settings (markitdown's
enable_plugins,keep_data_uris, Azure Document Intelligencedocintel_endpoint, Azure Content Understandingcu_endpoint/cu_analyzer_id, and per-item extension/mimetype/charsetStreamInfohints) live in a secondary Edit > Advanced Settings... dialog, out of the way of the main drop-and-done flow. - Light/dark QSS themes, with "follow system" or manual toggle, persisted
via
QSettings(window geometry, last export folder, theme choice). - English/Spanish (neutral) UI via a lightweight, dependency-free
translation layer (
app/i18n.py— no Qt Linguist.ts/.qmbuild step). Defaults to your system locale (Spanish fores_*, English otherwise) and can be switched anytime with the language dropdown next to the menu bar; the choice is remembered viaQSettingsand switching updates the whole UI, including already-queued rows, immediately — no restart needed.
Anything markitdown supports: PDF, Word, Excel, PowerPoint, images (EXIF
- optional OCR), audio (transcription), HTML, CSV, JSON, XML, ZIP archives, EPub, plain text, and YouTube / general web URLs. See the markitdown README for the full, up-to-date list.
- Windows — Installer (recommended: Start Menu + uninstaller):
download
markitdown-desktop-setup.exeand run it — installs per-user (no admin rights needed), adds a Start Menu shortcut, and registers a proper uninstaller. - Windows — Portable .exe (no install, just run it):
download
markitdown-desktop.exedirectly — a single file, no install, no unzip. - macOS/Linux: each release
includes a ready-to-run zip — download the one for your OS, unzip, and
run
markitdown-desktop.
A zipped Windows build (markitdown-desktop-windows.zip) is also available
on the releases page
if you prefer that format.
- Windows 10/11, macOS, or Linux
- Python 3.10+ (on Windows, check "Add python.exe to PATH" during install)
- For audio transcription only: ffmpeg on PATH
git clone https://github.com/andrest04/markitdown-desktop.git
cd markitdown-desktop
python -m pip install -r requirements.txtOn macOS/Linux, use python3 instead of python if that's how your
system exposes it.
- Windows: double-click
run.bat, or runpython main.py. - macOS/Linux: run
./run.sh, orpython3 main.py.
The "open containing folder" action (double-click a finished row) uses
explorer on Windows, open -R on macOS, and xdg-open on Linux.
main.py entry point
app/ui/main_window.py main window, drop zone, advanced settings dialog
app/ui/theme.py light/dark QSS stylesheets
app/core/converter.py MarkItDown wrapper, background worker, auto-save logic
app/core/queue_model.py queue table data model
app/i18n.py English/Spanish translation layer
Contributions and suggestions are welcome. See CONTRIBUTING.md for how to get set up and the project's conventions. This project follows the Code of Conduct.
| Link | |
|---|---|
| Issues | Open an issue |
| PRs | Open pull requests |
| Security | See SECURITY.md for how to report vulnerabilities privately |
This project wraps markitdown
by Microsoft, licensed under the MIT License.
All actual file-conversion logic is theirs — this repository only adds a
desktop GUI on top of their public Python API. All credit for markitdown
itself goes to Microsoft and its contributors.
This GUI's own code is licensed under the MIT License as well. "MarkItDown" is a name used by Microsoft's project; this repository is an unofficial, unaffiliated GUI and claims no association with or endorsement by Microsoft.
