In a Nutshell

Resources

You have private files - contracts, research papers, internal docs - and you need them in Markdown. Most online converters require you to upload those files to a third-party server. That is a problem if your documents contain sensitive information.

This guide shows you three ways to convert PDFs, Word documents, HTML pages, EPUBs, and more into clean Markdown - all running locally on your machine. Your data never leaves your device. You get a desktop app for beginners, a Python script for batch processing, and the raw Microsoft MarkItDown CLI for full control.

Pick the method that matches your comfort level and start converting.

The Desktop App

Tutorial

The LeanProductivity MarkItDown Bulk Converter is the easiest option. Download it, install it, and use it like any other Windows program. No Python, no GitHub, no command line required.

One thing to note: the installer is not code-signed. You might get a warning from your browser or Windows SmartScreen when downloading or running it. Getting a certificate costs almost 250 Euro per year - not something a solo creator can justify. If that bothers you, skip ahead to the manual methods where you have full visibility into every step.

What the App Does

Once running, you get a straightforward interface:

  • Input folder - point it to the folder containing your source files
  • Output folder - where the converted Markdown files go
  • File type selection - choose which formats to convert

The app supports a wide range of formats: Microsoft Word, Excel, PowerPoint, PDF, HTML, EPUB, images, audio, and video files. Check the GitHub repository documentation for the full list.

Key Features

  • Dry run mode - simulates the conversion without creating files, so you can preview what will happen before committing
  • Smart skip logic - only converts files that are new or have changed since the last run, based on timestamps
  • Force convert - override the skip logic and process everything regardless of timestamps
  • Folder structure preservation - if your input folder has sub-folders, the output mirrors that structure
  • Logging - creates a detailed log file showing the status of every file (new, overwritten, skipped)
  • Parallel processing - handles large batches efficiently

Conversion Quality

The converted Markdown preserves headings, paragraphs, and basic formatting. Tables come through but sometimes need manual cleanup. PDF formatting can be hit-or-miss depending on the source file’s structure. Even with these quirks, batch converting locally is still much faster and safer than doing it manually or through an online tool.

Microsoft MarkItDown (CLI)

For full control and transparency, you can use Microsoft’s MarkItDown project directly. This is the open-source foundation that powers the desktop app. It requires some setup but gives you complete visibility into what is happening on your machine.

Prerequisites

You need three things installed:

  1. Git - download from git-scm.com
  2. Python (latest version) - download from python.org
  3. Pip - usually installed automatically with Python

Check if they are installed by running these commands in a terminal:

git --version
python --version
pip --version

Setup Steps

Clone the repository:

git clone https://github.com/microsoft/markitdown.git

Enter the project folder and create a virtual environment:

cd markitdown
python -m venv .mid

Activate the virtual environment:

.mid\Scripts\activate

Install the required packages:

pip install -e .

Converting a Single File

Use the CLI to convert one file at a time:

markitdown input/demo-files/document.docx > output/document.md

The converted file appears in the specified location, ready to use in Obsidian or any other Markdown-based system.

The Python Batch Script

If you want the control of the CLI but need to convert multiple files at once, the batch script offers a middle ground. It is a stripped-down version of what powers the desktop app - command-line based, no graphical interface.

What It Includes

  • Batch conversion of entire folders
  • File type selection (enter one or multiple formats separated by commas)
  • Folder structure preservation
  • Conversion summary in the terminal (files converted, skipped, errors)

What It Does Not Include

Compared to the desktop app, the script lacks:

  • Graphical interface
  • Dry run mode
  • Override warnings
  • Log file generation
  • Progress bar
  • Parallel processing

If you need those features, use the desktop app instead.

Running the Script

With Python installed and the virtual environment active:

python convert_batch.py

The script prompts you for file types. Enter a single type like docx or multiple types separated by commas like docx, html, pdf. When finished, you get a summary showing how many files were converted, skipped, or had errors.

Comparison

FeatureDesktop AppPython ScriptMarkItDown CLI
Technical skill neededNoneBasic terminalIntermediate
Batch conversionYes (parallel)Yes (sequential)One file at a time
Dry runYesNoNo
LoggingDetailed log fileTerminal outputNone
Folder structurePreservedPreservedManual
Force overwriteYesNoManual
CustomizableNoYes (edit Python)Yes (full source)
Trust requiredUnsigned installerYou run the codeYou run the code

Whether you are a no-code beginner, a curious power user, or comfortable with the command line - there is a method that fits. Choose the one that matches your workflow and let Markdown do the rest.

FAQ

Infographic

Convert Private Files to Markdown Without Uploading Online