Write your deck in Markdown. Get a polished, executive-ready .pptx -
real PowerPoint shapes, real themes, real speaker notes. No templates to wrestle,
no copy-paste, fully scriptable and diff-friendly.
md2pptx examples/leadership-demo.md -o quarterly-review.pptxMost "markdown to slides" tools render to HTML. Leadership reviews still run on
PowerPoint. md2pptx produces a native .pptx you can open, tweak, and
present in PowerPoint or Keynote - while keeping the source of truth in plain
text you can version-control and review in a PR.
- Leadership-grade by default - opinionated typography, spacing, and accent rules tuned for executive decks, not developer slideware.
- One source, many decks - concatenate multiple
.mdfiles into one deck. - Themeable - three built-in professional themes; add your own in ~20 lines.
- Speaker notes, tables, code, images, quotes, two-column layouts - all from ordinary Markdown.
- Tested & dependency-light - one runtime dependency (
python-pptx).
pip install -e . # from a clone
# or, once published:
# pip install md2pptx-leadershipRequires Python 3.9+.
# Single file (output defaults to <input>.pptx)
md2pptx deck.md
# Explicit output + theme override
md2pptx deck.md -o board-review.pptx --theme midnight
# Combine multiple files into one deck (slides are concatenated in order)
md2pptx intro.md body.md closing.md -o quarterly.pptx
# List themes
md2pptx --themesOr from Python:
from md2pptx import build
build(["intro.md", "body.md"], "out.pptx", theme="executive")---
title: Project Aurora - FY26 Strategy Review
subtitle: Scaling the platform to 10M daily active users
author: Vikrant Singh
date: Q1 FY26
footer: Confidential - Leadership Review
theme: executive # executive | midnight | slate
------on its own line starts a new slide.- The first slide with only a heading becomes the title slide.
#is the slide title; a following##becomes the subtitle.
<!-- class: section -->
Where we are<!-- class: section --> and <!-- class: closing --> switch a slide to the
full-bleed brand layouts. The plain line of text becomes the heading.
## Executive summary
- Revenue up **42% YoY**
- Driven by *enterprise* adoption
- Reliability at `99.95%`
| Metric | FY25 | FY26 |
| --- | --- | --- |
| DAU | 3.1M | 10M |
> The best architecture lets a small team move fast for years.
> - Engineering Tenets
## What's driving growth
:::columns
- Enterprise onboarding
- Usage-based pricing
+++
- Mobile DAU up **3.4x**
- Churn down to **1.8%**
:::## Executive summary
- The headline numbers
Notes:
Open with the ask. Pause for reactions. Keep this under 90 seconds.(or inline: <!-- notes: keep it short -->)
| Theme | Vibe | Background |
|---|---|---|
executive (default) |
Deep navy + teal, crisp and corporate | Light |
midnight |
Dark, modern, high-contrast | Dark |
slate |
Warm editorial, serif headings | Light |
Add your own by registering a Theme in
src/md2pptx/themes.py.
Markdown ──▶ parser ──▶ Deck (IR) ──▶ renderer ──▶ .pptx
(model.py) (python-pptx)
The parser is dependency-free and produces a plain-dataclass intermediate
representation; the renderer turns that IR into hand-placed PowerPoint shapes.
The clean split keeps the parser trivially unit-testable and the visual layer
easy to restyle. See docs/architecture.md.
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # run the suite
ruff check . # lintRegenerate the demo and its screenshots:
python examples/assets/make_diagram.py
md2pptx examples/leadership-demo.md -o out/leadership-demo.pptxMIT © Vikrant Singh - see LICENSE.



