If you have documents you want to put into ChatGPT, Obsidian, or anything else that reads Markdown, MdPipe converts them for you. PDF, Word, Excel, PowerPoint, HTML, images and more, a whole folder at a time.
It is one file and you double-click it. No installer, no Python, no .NET, nothing to configure. Conversion runs through Microsoft's MarkItDown, which MdPipe downloads into a folder of its own and keeps to a version it was tested with. There is a CLI in here too, for anyone who wants one.
One file. No installer. No .NET or Python required.
It is a portable, self-contained Windows 10/11 x64 executable. The first launch
downloads a private Python environment and MarkItDown into %APPDATA%\mdpipe;
later conversions work offline. Because the executable is not code-signed yet,
Windows SmartScreen may ask you to confirm that you want to run it.
When a newer version comes out, MdPipe says so and offers to fetch it: it downloads the new one, checks it is the right file and restarts into it. It asks first, every time, and where it cannot write to its own folder, on a memory stick or under Program Files, it opens the download page instead.
There are other ways to run MarkItDown, and most of them start with installing Python. I wanted one I could hand to someone who has never opened a terminal and is not about to start.
| Documents | .pdf .docx .pptx .epub |
| Spreadsheets | .xlsx .xls .csv |
| Web and data | .html .htm .xml .rss .atom .json .jsonl .ipynb |
| Text | .txt .text .markdown .md |
| Images | .png .jpg .jpeg |
| Audio | .mp3 .wav .m4a .mp4 |
| Other | .msg (Outlook mail) .zip (converts what is inside) |
That list is not written by hand. MdPipe asks the MarkItDown installed on your machine what its converters accept, so the app always tells you the truth about your own computer rather than repeating someone else's documentation. The same list is a click away in the app:
Three details worth knowing:
- Naming a file directly converts it whatever its extension. The list above only decides
what gets picked up when you drop a whole folder. If you have files with a wrong or missing
extension, tick Try every file (or pass
--all-files) and the engine will decide by what is inside them. - Markdown files are skipped when scanning a folder, on purpose: the output would land on top of the input and rewrite your own notes.
- Word and PowerPoint files from the 1990s (
.doc,.ppt) have no converter anywhere in this chain. MdPipe says so and tells you to save them as.docxor.pptxfirst.
It follows whatever language Windows is set to: Spanish on a Spanish machine, English everywhere else. Nothing to configure.
- Converts several files in one batch using drag and drop. Folders work too, subfolders included, and a whole batch shares one engine process instead of starting a new one per file.
- Stays usable while it looks through a folder, however large, telling you how many files it has found and letting you stop without losing them.
- Opens files dropped straight onto the executable, or sent to it with "Open with".
- Saves the Markdown beside the original or in a chosen folder, and remembers your choice for next time.
- Shows real download progress during the first-run setup, and conversions can be cancelled midway.
- Runs locally without uploading documents or collecting telemetry.
- Includes a CLI for scripts and automation.
- Installs the exact MarkItDown its own release was tested against, so the engine never changes without you installing a new MdPipe.
- Updates itself when a newer version is out, after asking, and never otherwise.
The repository also includes a CLI for scripts and local use. Run it from source with the .NET 10 SDK:
dotnet run --project src/MdPipe.Cli -- convert report.pdf
dotnet run --project src/MdPipe.Cli -- convert report.pdf -o report.md
dotnet run --project src/MdPipe.Cli -- statusIt takes several inputs at once: files, folders or patterns. With one file and no
--output the Markdown goes to stdout; otherwise --output is the folder to fill,
and without it each file is saved next to its original.
mdpipe convert a.pdf b.docx # several files
mdpipe convert .\docs --recursive # a folder, subfolders included
mdpipe convert *.pdf --output .\markdown # a pattern, all into one folder
mdpipe convert .\docs --all-files # try everything, not just known formats
mdpipe formats # what this machine's engine can readA file that fails does not stop the rest; you get a summary at the end and a non-zero exit code if anything failed, which is what a script wants.
The WPF application and CLI share the same conversion and setup code. MdPipe
creates its environment under AppData and does not modify the system Python or
PATH.
Each release of MdPipe is an application and a MarkItDown version that were tested together, and the executable carries the record of which one it wants. Nothing changes the engine underneath you: a new MarkItDown arrives when a new MdPipe does, and not before. There is a longer explanation of how that is arranged.
Setup also passes the Windows proxy to pip and keeps its output visible when a firewall, proxy or SSL inspection blocks the download.
There is a longer write-up with code samples on gdols.dev.
You need the .NET 10 SDK:
git clone https://github.com/gdols/MdPipe.git
cd MdPipe
dotnet run --project src/MdPipe.Wpf
dotnet testTo build the portable executable:
dotnet publish src/MdPipe.Wpf -c Release -r win-x64 --self-contained -p:PublishSingleFile=true- Official releases currently target Windows x64 only.
- The first launch needs internet access to download Python and MarkItDown.
- The executable is not code-signed, so new releases can trigger SmartScreen.
- Conversion quality depends on the source format and MarkItDown.
MdPipe is available under the MIT license. It is an independent project and is not affiliated with Microsoft. MarkItDown is fetched from PyPI at runtime and is not redistributed; see NOTICE.md.
Bug reports and small pull requests are welcome. See CONTRIBUTING.md and SECURITY.md.



