Skip to main content

pptx-typst

pptx-typst is a bidirectional presentation conversion tool. It converts PowerPoint (.pptx) decks into editable Typst projects and exports a documented, statically resolvable Typst slide subset to editable PowerPoint.

It also provides a file-based presentation IR for AI-agent workflows. An agent can inspect and revise supported slides in readable Typst source, then export the result to PPTX without driving a live PowerPoint session or issuing a sequence of UI/MCP actions for each edit. This is useful for structured deck revisions, repeatable transformations, and generating slides from data. Supported text and shapes stay editable; conversion reports identify objects that are approximated, image-backed, or unsupported.

Version 0.1.0 is the first public product release. It is a working tool for presentations within its documented supported subset; it does not claim to reproduce every PowerPoint or Typst feature. It preserves common text, images, shapes, tables, transparency, and reusable master/layout structure. Review each conversion report and inspect important slides before delivery.

Use Typst as an AI-editable presentation IR

pptx-typst is more than a format bridge. For supported presentations, it gives an AI agent a structured, text-based project to read, edit, diff, and validate instead of requiring the agent to manipulate OOXML package parts directly or drive a live PowerPoint UI through repeated MCP calls. The conversion commands operate on files, so PowerPoint does not need to be open for import, source edits, or export. This avoids repeated UI/MCP calls for routine object changes; it does not remove the need to render and review the finished slides.

For an existing deck, convert it once, make edits to the generated project, compile a preview, and export the changed source:

pptx-to-typst source.pptx --output working-deck
# An agent or script edits working-deck/main.typ and supported assets.
typst compile working-deck/main.typ working-deck/preview.pdf
typst-to-pptx working-deck/main.typ --output revised-deck.pptx

The Typst project keeps slide objects, reusable masters/layouts, and asset references visible as source. This makes repeated edits and batch transformations easier to review in version control. Inspect conversion_report.json before editing and after export: the IR represents the documented subset, not every OOXML feature. For a new deck, start with pptx-typst init; see the agent workflow guide for recommended patterns and boundaries.

Install

Python 3.10 through 3.13 is supported.

python -m pip install pptx-typst==0.1.0

The PyPI project name is available, but the 0.1.0 distribution has not been uploaded yet. Until publication, install from a trusted source checkout with python -m pip install ..

The Python package performs conversion. Install the Typst CLI separately to compile generated Typst projects to PDF. EMF/WMF conversion uses the packaged Windows PowerShell/GDI+ helper on Windows, or Inkscape when available on Linux and macOS. Without a compatible renderer, the original media is retained and the conversion report warns that the object may not render. Some SVG masking and SVG-to-PowerPoint rasterization paths need Cairo native libraries; affected operations report a fallback or unsupported object when Cairo is unavailable.

PowerPoint to Typst

pptx-to-typst presentation.pptx --output presentation-typst
typst compile presentation-typst/main.typ presentation.pdf

The generated project contains main.typ, template.typ, asset_manifest.json, conversion_report.json, and shared media under assets/media/. The forward converter retains original assets and emits supported text, shapes, images, tables, masters, and layouts as editable Typst objects. EMF/WMF may also have a derived rendering asset. Use pptx-to-typst --help for layout, masking, and text options.

Typst to PowerPoint

typst-to-pptx presentation-typst/main.typ --output presentation-roundtrip.pptx

The reverse converter handles the documented static Typst subset; it does not evaluate arbitrary Typst programs, dynamic expressions, or user-defined macros. It writes a conversion_report.json next to the output. Review warnings for unsupported constructs and editability changes.

Start a Typst presentation

pptx-typst init my-deck
typst compile my-deck/main.typ my-deck/preview.pdf
typst-to-pptx my-deck/main.typ --output my-deck.pptx

The starter project includes a supported main.typ, helper module, original SVG artwork, and three editable slides using one shared master and three layouts. Its copy and metrics are illustrative. To generate only the helper module, run pptx-typst module --output pptx-typst.typ.

The helper module provides PptxMaster, PptxLayout, and PptxSlide for reusable hierarchy, plus static PptxPlace, PptxGroup, PptxClip, PptxBox, PptxText, PptxImage, PptxRect, PptxEllipse, PptxLine, and PptxTable constructs. Title, centered-title, and body placeholders are supported in the defined subset. See the placeholder support report and master/layout report.

Font preflight and validation

Check requested fonts before final export:

pptx-typst-fonts my-deck/main.typ --report my-deck/font_report.json

Typst font paths do not install or embed fonts for PowerPoint. The preflight checks Typst and the local Office-facing font inventory separately; unavailable checks are reported as unknown. Optional --pptx, --typst-pdf, and --powerpoint-pdf inputs compare requested font names, exported DrawingML, and rendered PDF font names.

Compare source geometry with a generated project:

pptx-typst-validate presentation.pptx presentation-typst --out presentation-typst/geometry-audit.json

Reports identify unsupported and approximated objects with slide numbers, source shape IDs when available, fallback behavior, and expected fidelity or editability loss. A successful command does not mean every source object was reproduced.

Supported feature subset

PowerPoint feature PowerPoint to Typst Typst to PowerPoint
Text and title/body placeholders Editable text with supported paragraph and inheritance properties Editable text and native supported placeholders
Images and common vector media Original assets retained; EMF/WMF may use a render derivative PNG/JPEG and SVG when the required Cairo path is available
Shapes, lines, fills, transparency Common geometry and styling; complex masks and some shapes may be approximated Common rectangles, ellipses, lines, and supported static shapes
Tables Editable text, dimensions, alignment, fills, and common borders; merged cells unsupported Basic rectangular tables
Masters and layouts Reusable hierarchy preserved Native parts for statically resolvable declarations
SmartArt and charts A stored SmartArt drawing cache may be emitted as a static SVG; charts unsupported Unsupported
Animation and transitions Unsupported Unsupported

Font substitution can change text metrics, wrapping, and alignment. SmartArt cache artwork and OLE previews are not independently editable. Native chart data, animations, complex group transforms, some masks, and arbitrary Typst programs are outside the supported subset. Conversion reports should be reviewed and important slides visually inspected.

Examples and validation

These comparisons use the same slide from each input PowerPoint and generated Typst project. They show representative results from the local Windows/PowerPoint benchmark, not pixel-equivalent output.

Example PowerPoint and Typst comparison
Quarterly marketing meeting Slide 6 comparison Quarterly marketing meeting slide 6 comparison
Back to school night Slide 12 comparison Back to school night slide 12 comparison
Classical neutrals marketing Slide 15 comparison Classical neutrals marketing slide 15 comparison
Japandi linear marketing Slide 1 comparison Japandi marketing slide 1 comparison
Blue spheres Slide 7 comparison Blue spheres slide 7 comparison

The original FIELD / FORWARD semantic-layout example is also available. The frozen 100-deck benchmark and its methodology are documented in the stabilization report; the separate 29-deck measurement report provides benchmark methodology and results. The source PowerPoint files are not included.

Python API

The supported reverse conversion function is available as pptx_typst.typst_to_pptx:

from pptx_typst import typst_to_pptx

report = typst_to_pptx("presentation-typst/main.typ", "presentation.pptx")

Development

python -m pip install -e ".[test]"
python -m pytest -q
python -m pip install --upgrade build twine
python -m build
python -m twine check --strict dist/*

Open an issue for questions or bug reports.

License

The software is licensed under the Apache License 2.0.

Metadata

Release files for pptx-typst 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pptx-typst 0.1.0
File Size Uploaded Provenance
pptx_typst-0.1.0.tar.gz 4.0 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pptx-typst 0.1.0
File Interpreter ABI Platform
pptx_typst-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 4.1 MB

Release files / pptx_typst-0.1.0.tar.gz

Download URL pptx_typst-0.1.0.tar.gz
Size 4.0 MB
Tags Source
SHA-256 checksum
How to use checksums
bf511833789664665864eebc48350ddef9444a2d5527ef42fa0b5367bd6451a5
BLAKE2b-256 checksum
How to use checksums
1c5451cdb69c27803111763dddb0d9aa70f850e74c3e089bc8cbef014752da9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / pptx_typst-0.1.0-py3-none-any.whl

Download URL pptx_typst-0.1.0-py3-none-any.whl
Size 101.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
13c139757e1492ff4626cedfdde2cfbfd7f75ed20da5b955b26cc7c615741ec4
BLAKE2b-256 checksum
How to use checksums
497176106bd5763fdbb186677d8e909cf933cb1f151bc8b2b73b83777200f465
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for pptx-typst 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pptx_typst-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page