Phase 2 · Production Ready Python 3.7+ Open source

PowerPoint in.
Faithful HTML out.

Convert PowerPoint presentations into portable HTML bundles with 98%+ visual fidelity.

No runtime web dependencies: Chart.js from CDN is the only external fetch in generated output.


01 · Features

Everything on the slide survives the trip

Text, charts, shapes, media and effects are rebuilt as native HTML, CSS and SVG, not baked into screenshots.

Chart rendering

Bar, line, pie, doughnut, area, scatter, radar and bubble charts are rebuilt as interactive Chart.js canvases.

Custom shapes to SVG

Arrows, flowchart blocks and freeform custom paths convert to crisp, infinitely scalable SVG.

SmartArt text extraction

SmartArt graphics fall back to clean, structured text that keeps the original hierarchy intact.

Animation preservation

Entrance effects are re-expressed as native CSS keyframes, replayed on every slide change.

Shadows & reflections

Shape shadows carry over as CSS box-shadows; reflections render in WebKit browsers.

150 DPI images

Embedded pictures export at up to 150 DPI, sharp on retina screens and projectors alike.

Video & audio embedding

Media stays media: clips and audio keep playing directly in the browser, not as posters.

Tables & hyperlinks

Fully styled tables and live hyperlinks, including merged cells and themed fills.

Embedded fonts

Fonts embedded in the deck are de-obfuscated and re-served as WOFF webfonts, so typefaces survive the trip.


Fidelity and performance numbers

98%+ Visual fidelity Pixel-close output across real-world decks
12 Chart types Rebuilt live as interactive Chart.js canvases
1–2s Per slide Typical conversion time on a laptop
100+ Slides supported Long decks convert in a single pass

02 · Quick Start

Two commands and a browser

Clone the repo, install dependencies, and point the converter at a deck. Output is a portable HTML bundle — HTML, CSS, JS and assets that open straight from disk.

terminal: install
pip install -r requirements.txt
terminal: convert
python scripts/convert_pptx_to_html_v2.py presentation.pptx output/python scripts/convert_pptx_to_html_v2.py presentation.pptx output/ 300  # custom DPI

Open output/presentation.html in any browser. No server, no build step. Pass a trailing DPI argument like 300 to control image resolution.


03 · Phase comparison

What Phase 2 adds

Phase 1 produced solid static decks. Phase 2 closes the gap on the hard parts: charts, vector shapes, motion and effects.

Capability Phase 1 Phase 2Recommended
Text formatting Supported Supported
Images 72 DPI 150 DPI
Charts Not supported SupportedNew
Custom shapes Not supported SupportedNew
SmartArt Not supported Supportedtext-only
Animations Not supported SupportedNew
Shadows & reflections Not supported SupportedNew
Visual fidelity 95% 98%+