How to Batch Convert Markdown to Word on Mac (3 Methods)

Quick answer

Select multiple .md files in Finder and use MarkDrop's right-click menu to convert them all to .docx at once. No terminal, no scripting, no one-at-a-time uploads.

When you need batch conversion

Single-file conversion is fine when you're working on one document. But many workflows involve dozens or hundreds of Markdown files that all need to become Word documents at the same time.

Converting files one at a time through an online tool or manual Pandoc commands doesn't scale. Here are three methods that handle batch conversion properly.

Method 1: Pandoc for loop

If you already have Pandoc installed, a simple shell loop converts every .md file in a directory. This is the most common approach for developers who are comfortable with the terminal.

Basic batch conversion

Open Terminal, navigate to the folder with your .md files, and run:

for f in *.md; do pandoc "$f" -o "${f%.md}.docx"; done

This converts every .md file in the current directory to a .docx file with the same name. The ${f%.md}.docx syntax strips the .md extension and replaces it with .docx.

Recursive batch conversion

If your Markdown files are nested in subdirectories (like an Obsidian vault), use find instead:

find . -name "*.md" -exec sh -c 'pandoc "$1" -o "${1%.md}.docx"' _ {} \;

This finds every .md file in the current directory and all subdirectories, converting each one in place.

Tradeoffs

Method 2: Reusable bash script

If you batch convert regularly, wrap the Pandoc loop in a script you can run anytime. This adds error handling, progress output, and makes the process repeatable.

#!/bin/bash
# md2docx-batch.sh — Convert all .md files in a directory to .docx

DIR="${1:-.}"
COUNT=0
ERRORS=0

for f in "$DIR"/*.md; do
  [ -f "$f" ] || continue
  OUTPUT="${f%.md}.docx"
  if pandoc "$f" -o "$OUTPUT" 2>/dev/null; then
    echo "Converted: $(basename "$f")"
    ((COUNT++))
  else
    echo "FAILED: $(basename "$f")"
    ((ERRORS++))
  fi
done

echo ""
echo "Done. $COUNT converted, $ERRORS failed."

Save this as md2docx-batch.sh, make it executable with chmod +x md2docx-batch.sh, and run it with ./md2docx-batch.sh /path/to/folder.

Tradeoffs

Method 3: MarkDrop (drag and drop)

MarkDrop lets you select multiple .md files in Finder and convert them all at once — no terminal required. Select your files, right-click, and choose "Convert with MarkDrop." Every file gets converted to .docx and saved alongside the originals.

How to batch convert with MarkDrop

  1. Select multiple .md files in Finder (Cmd+click or Shift+click)
  2. Right-click and choose "Convert with MarkDrop" from the Services menu
  3. Done — each .md file gets a matching .docx file in the same folder

You can also drag a batch of files directly onto the MarkDrop app icon in your Dock or Applications folder.

Tradeoffs

Which method should you use?

Method Setup Speed Ease
Pandoc loop Homebrew + Pandoc Fast Terminal required
Bash script Pandoc + script file Fast One-time setup
MarkDrop Install app Fast Point and click

If you're already in Terminal, the Pandoc loop is the quickest path. If you batch convert regularly from the command line, the bash script saves time. If you want the simplest workflow, MarkDrop lets you do everything from Finder.

Try MarkDrop free

Batch convert Markdown files from Finder. 5 free conversions per month.

Download MarkDrop

Frequently asked questions

Can I convert multiple Markdown files to Word at once on Mac?

Yes. You can batch convert Markdown files to Word using a Pandoc shell loop, a custom bash script, or a native Mac app like MarkDrop that supports multi-file drag and drop.

How do I batch convert Markdown to Word with Pandoc?

Use a for loop in Terminal: for f in *.md; do pandoc "$f" -o "${f%.md}.docx"; done. This converts every .md file in the current directory to a .docx file with the same name.

What is the fastest way to batch convert Markdown files on Mac?

The fastest method is selecting multiple .md files in Finder and using MarkDrop's right-click menu or drag-and-drop to convert them all at once. No terminal required.