Why Markdown Headings Aren't Converting to Word Styles on Mac
Markdown headings fail to convert to Word styles when there's a syntax error (missing space after #), the converter doesn't map semantic styles, or template conflicts occur. This makes headings appear as bold text instead of proper Word Heading 1/2/3 styles, breaking document navigation and auto-generated tables of contents.
- Check syntax first — ensure space after # symbols and use ATX format (# Heading)
- Test your converter — some tools only apply visual formatting, not semantic styles
- Verify in Word — open Styles panel (⌘⌥⇧S) to confirm Heading 1/2/3 styles are applied
- Use MarkDrop — maps # → Heading 1, ## → Heading 2 automatically, no configuration needed
The Problem: When Markdown Headings Become Plain Text
You convert a markdown file to Word, open the document, and your headings look fine — they're bigger, bold, the right size. But when you try to generate a table of contents, nothing appears. When you use Word's Navigation Pane, it's empty. The headings aren't actually headings at all.
This is the most common markdown-to-Word conversion failure on Mac. The text looks like headings (larger font, bold weight), but Word doesn't recognize them as semantic heading elements. They're just formatted text.
What Proper Heading Conversion Should Look Like
When markdown headings convert correctly:
- Your
#becomes Word's "Heading 1" style - Your
##becomes Word's "Heading 2" style - And so on through
######(Heading 6) - Word's Navigation Pane shows your document structure
- You can generate automatic tables of contents
- Screen readers can navigate your document properly
These aren't just visual styles — they're semantic markers that tell Word "this is a section heading" rather than "this is some bold text."
Signs Your Headings Aren't Converting Correctly
The most obvious symptoms:
- Empty Navigation Pane: Open Word's Navigation Pane (View → Sidebar → Document Map Pane). If it's blank or only shows a few headings, your styles didn't map correctly.
- Table of Contents failures: Insert → Table of Contents produces nothing, or only captures some headings.
- Inconsistent formatting: Headings that should be the same level look different.
- Manual style panel check: Click on a heading and open the Styles panel (⌘⌥⇧S). If it shows "Normal + Bold + 18pt" instead of "Heading 1", it's not a real heading.
Understanding How Markdown Headings Should Map to Word Styles
Markdown uses hash symbols (#) to denote heading levels. Word uses semantic styles called Heading 1, Heading 2, etc. Proper conversion requires mapping one to the other, not just applying visual formatting.
Markdown Heading Syntax Basics
Markdown supports two heading formats, but ATX-style (hash symbols) is the standard:
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
The critical syntax rules:
- One space required between the
#and the heading text - Hash symbols must be at the start of a line
- Blank line before and after (recommended for parser compatibility)
There's also Setext-style for H1 and H2 (underlines with = or -), but it's less common and some converters handle it inconsistently. Stick with ATX-style for reliable conversion.
Word's Built-in Heading Styles Explained
Word documents have a style system. Every paragraph has a style applied — "Normal" by default. Heading styles (Heading 1 through Heading 9) are special:
- They create document structure that Word understands semantically
- They're used to build tables of contents
- They enable document navigation features
- They cascade — modify Heading 1, and all H1s update
When you see "Normal + Bold + 18pt" in the Styles panel, that's not a heading style — it's the Normal paragraph style with manual formatting applied on top. That manual formatting won't work with Word's structural features.
The Semantic Structure Connection
Visual formatting is easy: make text bigger and bold. Semantic structure requires the converter to:
- Parse the markdown and identify heading elements
- Map each heading level to Word's corresponding style
- Write the .docx XML with proper style references
Many quick converters skip step 2 and 3 — they just apply visual formatting. The result looks right on screen but fails when you try to use Word's structural features.
5 Common Reasons Your Headings Aren't Converting Properly
1. Syntax Errors That Break Heading Recognition
The most common mistake: no space after the hash symbols.
Wrong:
#Heading 1
##Heading 2
Correct:
# Heading 1
## Heading 2
Most markdown parsers require that space. Without it, they treat #Heading as literal text, not a heading marker.
Other syntax issues:
- Bold instead of headings: Using
**Heading**creates bold text, not a heading - Mixed formats: Combining Setext and ATX styles confuses some parsers
- Indentation: Leading spaces before
#can break heading recognition - Unicode hash symbols: Using similar-looking characters (#) instead of ASCII
#
2. Converter Configuration Problems
Not all conversion tools map headings to Word styles by default.
Pandoc (the most common command-line converter) requires specific flags to preserve heading styles. A basic command like this won't create proper styles:
pandoc input.md -o output.docx
You need to use a reference document that defines the heading styles, or configure Pandoc to use Word's default styles explicitly. Many users run Pandoc without understanding these options, getting visual-only output.
Online converters are worse — most use basic markdown-to-HTML-to-Word pipelines that apply formatting but ignore semantic structure. They're designed for speed, not accuracy.
3. Template and Style Conflicts
If you're using a custom Word template (reference.docx in Pandoc), style name mismatches can break heading conversion:
- Your template uses "Header 1" instead of "Heading 1"
- Heading styles have been deleted or renamed
- Custom styles conflict with Word's built-in heading hierarchy
Word is specific about style names. If your converter is trying to apply "Heading 1" but your template doesn't have a style with that exact name, Word falls back to Normal + formatting.
4. Character Encoding Issues
Less common but frustrating: encoding problems can corrupt heading markers during conversion.
If your markdown file is saved with the wrong encoding (not UTF-8), or if the converter assumes the wrong encoding, hash symbols might get mangled or interpreted as different characters. This is more common when:
- Converting files from Windows machines
- Dealing with legacy text editors
- Copy-pasting markdown between applications
Always save markdown files as UTF-8 without BOM (byte order mark).
How to Diagnose Your Heading Conversion Issue on Mac
Quick Diagnostic Checklist
Follow these steps in order:
- Open your markdown file in a text editor (TextEdit, VS Code, BBEdit) and verify heading syntax — confirm space after
#, no indentation before# - Create a minimal test file with just three headings and one paragraph under each — this isolates syntax vs converter issues
- Convert the test file with the same tool/method you normally use
- Open the Word document and check the Styles panel — click on each heading and press ⌘⌥⇧S to see what style is applied
If the test file works but your real file doesn't, the problem is in your markdown syntax. If the test file also fails, the problem is your conversion method.
Testing with a Sample Document
Save this as test.md:
# First Level Heading
This is a paragraph under H1.
## Second Level Heading
This is a paragraph under H2.
### Third Level Heading
This is a paragraph under H3.
Convert it to Word using your normal method. Open the result and:
- Go to View → Sidebar → Document Map Pane (or Navigation Pane in newer Word versions)
- You should see all three headings listed hierarchically
- Click on "First Level Heading" in the document
- Press ⌘⌥⇧S (or Format → Style)
- The style should show "Heading 1", not "Normal + Bold + [size]"
If the Navigation Pane is empty, your converter isn't mapping styles correctly.
Checking Word Styles Panel
The Styles panel is your definitive test. On Mac Word (tested on Word for Mac 16.x):
- Click on a heading in your document
- Press ⌘⌥⇧S (or go to Format → Style)
- Look at the style name in the panel that appears
What you want to see:
- "Heading 1" (or "Title" for your document title)
- "Heading 2"
- "Heading 3"
- And so on
What indicates failure:
- "Normal" with a + sign and additional formatting listed
- Custom style names that aren't part of Word's default set
- Multiple headings showing different styles when they should be the same level
The MarkDrop Solution: Reliable Heading Conversion on Mac
MarkDrop (mark-drop.app) handles markdown-to-Word conversion with proper heading style mapping. It's built specifically for Mac and designed to work without configuration.
Converting with Right-Click in Finder
The fastest workflow:
- Locate your
.mdfile in Finder - Right-click (or Control-click) the file
- Select "Convert with MarkDrop" → "To Word Document"
- MarkDrop creates a
.docxfile in the same directory with proper heading styles applied
MarkDrop maps # → Heading 1, ## → Heading 2, etc. automatically. No command-line flags, no reference templates, no configuration files.
Drag-and-Drop Conversion
Alternative method:
- Open MarkDrop
- Drag your
.mdfile onto the MarkDrop window - Select output format (Word, PDF, or Rich Text)
- Choose save location
Same result — headings map to proper Word styles, preserving document structure.
Limitation: MarkDrop is macOS-only. Free tier allows 5 conversions per month; Pro version ($9.99 one-time) is unlimited. If you're on Windows or Linux, you'll need Pandoc with proper configuration.
Verifying Your Heading Styles After Conversion
After converting with MarkDrop (or any tool), always verify:
- Open the
.docxfile in Word - Open the Navigation Pane (View → Sidebar → Document Map Pane)
- Confirm all headings appear in the pane with proper hierarchy
- Click on a few headings and check the Styles panel (⌘⌥⇧S)
- Try inserting a table of contents (Insert → Table of Contents) — it should populate correctly
Alternative Fixes: Other Tools and Methods
Pandoc Command-Line Solutions
Pandoc (pandoc.org) is the most powerful open-source markdown converter, but it requires specific flags for proper heading conversion.
Basic command that preserves heading styles:
pandoc input.md -o output.docx --standalone
The --standalone flag tells Pandoc to create a complete document with proper structure, not just convert content.
Using a custom reference document:
pandoc input.md -o output.docx --reference-doc=custom-template.docx
This uses your custom-template.docx file as a style template. To create one:
- Convert any markdown file with Pandoc's default settings
- Open the output in Word
- Modify the Heading 1, Heading 2, etc. styles to match your preferences
- Save as
custom-template.docx - Use it as your
--reference-docfor all future conversions
Tradeoffs: Pandoc is free and extremely flexible, but requires Homebrew installation (brew install pandoc), terminal comfort, and understanding of command-line flags. Not suitable for non-technical users or quick one-off conversions.
Creating Custom Reference Templates
If you're using Pandoc regularly, a well-configured reference document saves time.
Create your template:
- Generate a basic Word file:
pandoc --print-default-data-file reference.docx > reference.docx - Open
reference.docxin Word - Modify styles: Format → Style → Modify → [select Heading 1, etc.]
- Set fonts, sizes, spacing, colors for each heading level
- Save the file
- Place it in
~/.pandoc/or reference it explicitly in your commands
Now all conversions use your custom styles automatically (if placed in ~/.pandoc/) or when you specify --reference-doc.
When Online Converters Fall Short
Online markdown-to-Word converters (Convertio, CloudConvert, Aspose, etc.) are convenient but unreliable for heading styles.
Problems with online converters:
- Files leave your machine — privacy/security concern for sensitive documents
- Most don't map semantic styles — they apply visual formatting only
- No configuration options — you get whatever their default pipeline produces
- File size limits — many cap free conversions at 1-2 MB
- Rate limiting — restricting daily conversions on free tiers
Use online converters only for:
- Non-sensitive documents
- Quick tests where you don't care about perfect structure
- Situations where you can't install local software
For reliable heading conversion, use Pandoc or MarkDrop instead.
Best Practices for Markdown Headings That Convert Cleanly
Syntax Best Practices
Write headings that any parser can handle:
- Always use ATX-style headings (
#symbols), not Setext underlines - Include one space between
#and text:# Headingnot#Heading - Start headings at column 1 — no leading spaces or tabs
- Add blank lines before and after headings for maximum parser compatibility
- Use closing hashes optionally —
# Heading #is valid but not required
Structural Best Practices
Maintain logical heading hierarchy:
- Start with H1 — your document should have exactly one
#heading (the title) - Don't skip levels — don't jump from H1 to H3 without an H2 in between
- Use H2 for main sections, H3 for subsections under those, H4 for sub-subsections
- Rarely go beyond H3 — if you're nesting deeper than three levels, your document structure may be too complex
This matters because:
- Screen readers rely on proper heading hierarchy
- Word's Navigation Pane displays hierarchy visually
- Some converters break if heading levels skip around illogically
Avoiding Common Pitfalls
Things that break heading conversion:
- Using bold as headings:
**This looks like a heading**creates bold text, not a semantic heading - Mixing heading formats: ATX-style for some headings, Setext underlines for others
- Special characters in headings: Emoji, unusual punctuation, or Unicode can confuse some converters (though most handle this correctly now)
- Inline code in headings:
# Heading with `code`works in most parsers but can cause issues with less robust converters - Trailing punctuation: Avoid
# Heading:or# Heading.— keep heading text clean
Verifying and Fixing Headings in Your Word Document
If you've already converted a document and suspect heading style issues, here's how to verify and fix them on Mac.
Checking the Styles Panel
The Styles panel tells you exactly what style is applied to selected text.
- Open your Word document
- Click on a heading that should be Heading 1
- Press
⌘⌥⇧S(Command-Option-Shift-S) to open the Styles panel - Look at the highlighted style name
If it says "Normal" or shows "Normal +" with additional formatting, your heading isn't using a proper heading style.
To see all instances of incorrect heading styles:
- Open the Styles panel (
⌘⌥⇧S) - Hover over "Normal" in the list
- Click the dropdown arrow → Select All [number] Instance(s)
- This highlights all text using the Normal style
- Manually review the selections — any that should be headings need fixing
Using Navigation Pane for Verification
The Navigation Pane (called Document Map Pane in some Word versions) shows your document's heading structure.
To open it:
- Go to View → Sidebar → Document Map Pane
- Or View → Navigation Pane (depending on your Word version)
What you should see:
- All your headings listed hierarchically
- Proper indentation showing heading levels (H1 at the left, H2 indented under H1, etc.)
- Click on any heading in the pane to jump to that section in the document
If the pane is empty or missing headings, those headings don't have proper styles applied.
Manual Style Corrections
If headings didn't convert correctly, you can fix them manually:
- Click on the text that should be a heading
- Open the Styles panel (
⌘⌥⇧S) - Click on the appropriate heading style (Heading 1, Heading 2, etc.)
- The text now uses that heading style
For bulk corrections:
- Use Find and Replace (⌘F) to search for text you know is a heading
- When Word highlights it, apply the heading style
- Click "Find Next" and repeat
Or use Word's style-based find and replace:
- Edit → Find → Advanced Find and Replace
- Click Format → Style → Normal (to find all text using Normal style)
- In "Replace with", click Format → Style → Heading 1 (or whichever level)
- Review each match before replacing to avoid applying heading styles to body paragraphs
Creating a table of contents to test:
- Place cursor where you want the TOC (usually near the top of the document)
- Go to Insert → Table of Contents → Automatic Table 1
- Word generates a TOC based on all properly styled headings
If headings are missing from the TOC, they don't have heading styles applied correctly.
Frequently Asked Questions
Why are my heading styles not showing in Word?
Heading styles don't show in Word when the converter applied only visual formatting (bold + larger font) instead of semantic heading styles. Check the Styles panel (⌘⌥⇧S) — if it shows "Normal + Bold" instead of "Heading 1", the styles weren't mapped correctly during conversion. This usually happens with basic online converters or incorrect Pandoc commands. Reconvert using MarkDrop or Pandoc with the --standalone flag to fix it.
How do you format headings in Markdown?
Use hash symbols (#) at the start of a line, followed by a space, then your heading text. One hash for H1, two for H2, and so on up to six hashes for H6. Example: # Main Title, ## Section Heading, ### Subsection. Always include the space after the hash symbols — #Heading without a space won't be recognized as a heading by most parsers.
What is the best way to convert Markdown to Word on Mac?
MarkDrop is the most reliable option for Mac users who want proper heading style mapping without command-line knowledge. Right-click any .md file in Finder and select "Convert with MarkDrop" to get a .docx with correct heading styles. For advanced users comfortable with Terminal, Pandoc with pandoc input.md -o output.docx --standalone also works well. Avoid online converters if you need proper semantic styles.
How do I check if my Word document has proper heading styles?
Open the Navigation Pane (View → Sidebar → Document Map Pane) — all headings should appear in a hierarchical list. Click on a heading, then press ⌘⌥⇧S to open the Styles panel. It should show "Heading 1", "Heading 2", etc., not "Normal + Bold". You can also test by inserting a table of contents (Insert → Table of Contents) — if headings are missing from the TOC, they don't have proper styles applied.
Can I convert Markdown headings without using command line tools?
Yes. MarkDrop provides right-click Finder integration and drag-and-drop conversion without any command-line usage. For occasional conversions, some online tools like CloudConvert attempt heading style mapping (though less reliably than local tools). On Mac, MarkDrop is the easiest non-terminal option that guarantees proper heading style conversion. The free tier allows 5 conversions per month; Pro version is $9.99 one-time for unlimited conversions.
Try MarkDrop free
5 free conversions per month. Right-click any .md file to get a formatted .docx.
Download MarkDrop