Create JavaScript PowerPoint Presentations
npm install pptxgenjs!jsdelivr downloads
!NPM Downloads
!GitHub Repo stars
!GitHub License
!TypeScript defs
PptxGenJS lets you generate professional PowerPoint presentations in JavaScript - directly from Node, React, Vite, Electron, or even the browser.
The library outputs standards-compliant Open Office XML (OOXML) files compatible with:
- β
Microsoft PowerPoint
- β
Apple Keynote
- β
LibreOffice Impress
- β
Google Slides (via import)
Design custom slides, charts, images, tables, and templates programmatically - no PowerPoint install or license required.
- Supports every major modern browser - desktop and mobile
- Seamlessly integrates with Node.js, React, Angular, Vite, and Electron
- Compatible with PowerPoint, Keynote, LibreOffice, and other OOXML apps
- Create all major slide objects: text, tables, shapes, images, charts, and more
- Define custom Slide Masters for consistent academic or corporate branding
- Supports SVGs, animated GIFs, YouTube embeds, RTL text, and Asian fonts
- Ridiculously easy to use - create a presentation in 4 lines of code
- Full TypeScript definitions for autocomplete and inline documentation
- Includes 75+ demo slides covering every feature and usage pattern
- Instantly download .pptx files from the browser with proper MIME handling
- Export as base64, Blob, Buffer, or Node stream
- Supports compression and advanced output options for production use
- Convert any HTML Try PptxGenJS right in your browser - no setup required. - Basic Slide Demo - Build a basic presentation in seconds > Perfect for testing compatibility or learning by example - all demos run 100% in the browser. Choose your preferred method to install PptxGenJS: `` ` Use the bundled or minified version via jsDelivr: ` > Includes the sole dependency (JSZip) in one file. π Advanced: Separate Files, Direct Download Download from GitHub: Latest Release ` PptxGenJS works seamlessly in modern web and Node environments, thanks to dual ESM and CJS builds and zero runtime dependencies. Whether you're building a CLI tool, an Electron app, or a web-based presentation builder, the library adapts automatically to your stack. - Node.js β generate presentations in backend scripts, APIs, or CLI tools > _Vite, Webpack, and modern bundlers automatically select the right build via the exports - CommonJS: dist/pptxgen.cjs.js PptxGenJS PowerPoint presentations are created via JavaScript by following 4 basic steps: #### Angular/React, ES6, TypeScript ` // 1. Create a new Presentation // 2. Add a Slide // 3. Add one or more objects (Tables, Shapes, Images, Text and Media) to the Slide // 4. Save the Presentation #### Script/Web Browser ` // 2. Add a Slide // 3. Add one or more objects (Tables, Shapes, Images, Text and Media) to the Slide // 4. Save the Presentation That's really all there is to it! Convert any HTML Perfect for transforming: - Dynamic dashboards and data reports Complete API reference, tutorials, and integration guides are available on the official docs site: https://gitbrent.github.io/PptxGenJS Please file issues or suggestions on the issues page on github, or even better, submit a pull request. Feedback is always welcome! When reporting issues, please include a code snippet or a link demonstrating the problem. Sometimes implementing a new library can be a difficult task and the slightest mistake will keep something from working. We've all been there! If you are having issues getting a presentation to generate, check out the code in the - Use a pre-configured jsFiddle to test with: PptxGenJS Fiddle Thank you to everyone for the contributions and suggestions! β€οΈ Special Thanks: - Dzmitry Dulko - Getting the project published on NPM PowerPoint shape definitions and some XML code via Officegen Project If you find this library useful, consider contributing to open-source projects, or sharing your knowledge on the open social web. Together, we can build free tools and resources that empower everyone. Copyright © 2015-present Brent Ely to one or more slides with a single line of code β Explore the HTML-to-PPTX feature
π Live Demos
- Full Feature Showcase - Explore every available featureπ¦ Installation
$3
bash`
npm install pptxgenjsbash`
yarn add pptxgenjs$3
html`html`π Universal Compatibility
$3
- React / Angular / Vite / Webpack β just import and go, no config required
- Electron β build native apps with full filesystem access and PowerPoint output
- Browser (Vanilla JS) β embed in web apps with direct download support
- Serverless / Edge Functions β use in AWS Lambda, Vercel, Cloudflare Workers, etc. field in package.json._$3
- ES Module: dist/pptxgen.es.jsπ Documentation
$3
typescript
import pptxgen from "pptxgenjs";
let pres = new pptxgen();
let slide = pres.addSlide();
let textboxText = "Hello World from PptxGenJS!";
let textboxOpts = { x: 1, y: 1, color: "363636" };
slide.addText(textboxText, textboxOpts);
pres.writeFile();
`javascript
// 1. Create a new Presentation
let pres = new PptxGenJS();
let slide = pres.addSlide();
let textboxText = "Hello World from PptxGenJS!";
let textboxOpts = { x: 1, y: 1, color: "363636" };
slide.addText(textboxText, textboxOpts);
pres.writeFile();
`π₯ HTML-to-PowerPoint Magic
into fully formatted PowerPoint slides - automatically and effortlessly.`javascript`
let pptx = new pptxgen();
pptx.tableToSlides("tableElementId");
pptx.writeFile({ fileName: "html2pptx-demo.pptx" });demos
- Exportable grids in web apps
- Tabular content from CMS or BI toolsπ Full Documentation
π οΈ Issues / Suggestions
Here is a small jsFiddle that is already configured and uses the latest PptxGenJS code.π Need Help?
directory. TherePptxGenJS
are demos for browser, node and, react that contain working examples of every available library feature.
- View questions tagged on StackOverflow. If you can't find your question, ask it yourself - be sure to tag it pptxgenjs`.
- Ask your AI pair programmer! All major LLMs have ingested the pptxgenjs library and have the ability to answer functionality questions and provide code.π Contributors
- Michal KacerovskΓ½ - New Master Slide Layouts and Chart expertise
- Connor Bowman - Adding Placeholders
- Reima Frgos - Multiple chart and general functionality patches
- Matt King - Chart expertise
- Mike Wilcox - Chart expertise
- Joonas - react-pptxπ Support the Open Source Community
π License
Dist Tags
latest4.0.1beta4.0.1-beta.2