Markdown to PowerPoint: six ways, and which ones stay editable
To convert markdown to PowerPoint, run pandoc slides.md -o slides.pptx for an editable file on your own template, or use Marp or Slidev, which export slides as images unless you switch on their editable modes. For designed, on-brand decks, hand the markdown to Claude or to a deck API that returns a native .pptx.
I write almost everything in markdown, decks included, and I have run each of these paths for real work. The detail most guides miss is editability: two of the three popular developer tools export pictures of slides by default, which is fine for presenting and useless for a colleague who needs to change a number. Here is what each route actually produces, with the commands.
#Which markdown to PowerPoint tool should you use?
| Method | Editable .pptx | Look | On your brand | Scriptable |
|---|---|---|---|---|
| Pandoc | yes, native text and layouts | your reference template's layouts | via a reference .pptx | yes, CLI |
| Marp | images by default; experimental editable mode | clean, themeable with CSS | you write a CSS theme | yes, CLI |
| Slidev | images by default; pptx-editable mode | strong, Vue and code-friendly | you build a theme | yes, CLI |
| python-pptx or md2pptx | yes | whatever you code | you code it | yes, library |
| Claude file creation | yes | designed per chat, varies | only if you upload a template | no, chat |
| heydecks API or MCP | yes, native (Solo and up) | 95 hand-designed templates | Brand Kernel on every deck | yes, REST and MCP |
If you only remember one row: Pandoc is the free route to a truly editable file, and Marp and Slidev are the routes to a nicer-looking deck you will mostly present rather than edit.
#How do you convert markdown to PowerPoint with Pandoc?
Pandoc turns headings into slides and bullets into text, and writes a real .pptx with native placeholders:
pandoc slides.md -o slides.pptx --reference-doc=template.pptxThe --reference-doc flag is the important part. Pandoc copies the master slides from that file and looks for these layout names: Title Slide, Title and Content, Section Header, Two Content, Comparison, Content with Caption, and Blank. If your company template uses those names, your markdown lands on your real layouts, fonts, and colors. If a layout is missing, Pandoc warns and falls back to its default. --slide-level controls which heading level starts a new slide, and a ::: notes block becomes speaker notes.
The limit is design range. You get your template's standard layouts, filled with text. Anything richer, like a stat wall or a comparison table styled a particular way, needs manual work in PowerPoint afterward.
#How do you convert markdown to PowerPoint with Marp?
Marp is the most direct route: separate slides with ---, style them with a CSS theme, and export.
marp slides.md --pptx -o slides.pptxKnow what that file is. Marp's documentation says the PPTX contains rendered slide pages, so each slide is an image with your speaker notes attached. It looks exactly like your preview, and nobody can edit the text. Marp CLI has an experimental --pptx-editable flag that rebuilds slides as editable objects, but it requires LibreOffice Impress, drops presenter notes, and Marp warns it can fail or produce incomplete results with complex themes.
#How do you export Slidev slides to PowerPoint?
Slidev is the richest of the three: built on Vue, with live code, animations, and components. Exporting needs playwright-chromium installed in the project:
slidev export --format pptxBy default, every slide is exported as an image, so text is not selectable. Slidev also has an editable mode:
slidev export --format pptx-editableIt measures each slide in the browser and rebuilds it as PowerPoint shapes, with speaker notes. Anything without a PowerPoint equivalent stays an image, including SVG (so Mermaid diagrams and icons), canvas, iframes, KaTeX, and CSS gradients. Fonts are referenced, not embedded, so recipients need them installed.
#How do you convert markdown to PowerPoint with Python?
python-pptx writes PowerPoint objects directly, so you control every box:
from pptx import Presentation
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Q3 release notes"
slide.placeholders[1].text = "Faster exports, new chart types"
prs.save("release-notes.pptx")md2pptx sits on top of the same library and parses markdown for you, so you do not write every placeholder by hand. This route is right when decks come out of a larger program and must be deterministic. It is the wrong one if you wanted a presentable deck rather than a layout engine to maintain.
#Can Claude convert markdown to PowerPoint?
Yes. Paste or upload the markdown and ask for a .pptx. With "Code execution and file creation" switched on (it is available on every Claude plan, Free included), Claude writes the deck with code in a sandbox and gives you a download. The slides are editable and usually look better than a default Pandoc export, because Claude designs each one.
The trade-off is consistency. Each chat designs from scratch, so two decks will not match unless you upload your template every time. Claude PowerPoint options covers this route and the add-in in detail. AI deck tools like Gamma also accept pasted text, but the .pptx you export is a conversion of their web format; I compared them in the best AI for PowerPoint.
#Why does markdown to PowerPoint come out so plain?
Because markdown carries your content and almost none of your design. A heading is marked as a heading and a bullet as a bullet, but nothing in the file says what your title slide looks like, which fonts you use, or where your logo goes. The converter has to invent that, so it falls back to a safe default, and safe defaults look generic.
The fix is to give the tool your design system once and apply it to every file. Pandoc does that with a reference template for standard layouts. A deck generator does it with a stored brand and a set of designed slide types.
#How do you turn markdown into an on-brand deck with one API call?
Send the markdown and a brand to a generator that owns the design. heydecks is the AI slide creator for AI agents: its deck API takes up to 8,000 characters of input, builds the deck from 95 hand-designed slide templates, and locks it to your brand through the Brand Kernel, which you extract once from your website.
curl -X POST https://heydecks.com/v1/generate \
-H "Authorization: Bearer hd_live_..." \
-H "Content-Type: application/json" \
-d '{
"input": "# Q3 release notes\n\n## Highlights\n- Exports 3x faster\n- New chart types\n\n## Fixes\n- Font fallback on Windows",
"brand_id": "brd_..."
}'
# => 202 { "job_id": "...", "status": "queued", "poll": "/v1/jobs/..." }Poll GET /v1/jobs/{id} until it succeeds. The result holds the live deck URL plus download links for the PDF and the .pptx. Unlike Marp and Slidev's default output, heydecks exports editable PPTX: live text boxes and native tables, so a colleague can change a number. A deck costs 100 credits; the Free plan has 200 one-time credits with watermarked PDF exports, and PPTX export starts on Solo at $19 a month. The API docs have the full request and response shapes.
If an agent does the work, skip the POST. Connect the heydecks MCP server to Claude Code or Cursor and hand it the markdown file; the agent writes each slide itself and heydecks renders it:
claude mcp add --transport http heydecks https://heydecks.com/mcpThis is a release notes deck built from the same templates, on a sample brand:
If the file has to stay editable after it leaves your terminal, the editable PPTX export page shows what opens in PowerPoint.
#Frequently asked questions
#What is the best tool to convert markdown to PowerPoint?
For a free, editable file on your own template, Pandoc. For developer slides you will mostly present, Marp or Slidev. For a designed deck on your brand that code or an agent can produce, a deck API like heydecks.
#Can Pandoc convert markdown to PowerPoint?
Yes. pandoc slides.md -o slides.pptx writes a native, editable .pptx, and --reference-doc=template.pptx applies your template's masters, fonts, and colors to the standard layouts.
#Does Marp export an editable PowerPoint?
Not by default. marp --pptx embeds each slide as an image. The experimental --pptx-editable flag produces editable slides but needs LibreOffice Impress, drops speaker notes, and can fail on complex themes.
#Can Slidev export to PowerPoint?
Yes. slidev export --format pptx exports image-based slides, and --format pptx-editable rebuilds them as PowerPoint shapes with editable text. Both need playwright-chromium installed.
#Does markdown to PowerPoint keep my brand?
It keeps your structure, not your brand, because markdown has no colors, fonts, or logos. Use a reference template with Pandoc, a custom theme with Marp or Slidev, or a generator that stores your brand and applies it to every deck.
Keep reading