Present anywhere. No PowerPoint required.
OpenPresenter is an open-source web application for opening and presenting .pptx
files directly in a modern browser. Microsoft PowerPoint, Microsoft Office,
LibreOffice, and a server-side conversion service are not required.
- Local, browser-side PPTX validation, ZIP extraction, XML parsing, and rendering
- Responsive 16:9, 4:3, and custom slide dimensions
- Text runs with basic font, size, color, bold, italic, underline, alignment, and bullets
- Embedded PNG, JPEG, GIF, and SVG images
- Basic rectangles, rounded rectangles, ellipses, lines, triangles, fills, and borders
- Thumbnail navigation, slide overview, and mobile-friendly viewing
- Presentation mode with keyboard controls, auto-hiding controls, and fullscreen support
- Graceful per-slide and per-element failure handling
- The browser validates the selected file and ZIP signature.
- JSZip reads the Office Open XML package locally.
- The parser reads
ppt/presentation.xml, relationships, ordered slide XML, and media. - PowerPoint EMU coordinates are normalized into responsive percentages.
- React renders slide content with HTML, CSS, and SVG.
The normal application flow does not intentionally upload the presentation to a server. Extracted images use temporary blob URLs that are revoked when the loaded presentation is released.
The current MVP supports basic text, embedded raster/SVG images, common geometric shapes, solid slide backgrounds, rotation, opacity in the normalized model, and z-ordering. Support is intentionally progressive rather than pixel-identical to Microsoft PowerPoint.
Not currently supported: SmartArt, charts, tables, groups, advanced theme/layout inheritance, animations, PowerPoint Morph, audio/video, macros, ActiveX, 3D models, advanced WordArt, and exact Microsoft font substitution. Unsupported content should not prevent other slides from opening.
Requirements: Node.js 20 or newer and npm.
npm install
npm run devQuality checks:
npm run checkProduction build and local preview:
npm run build
npm run preview- Next: Right Arrow, Down Arrow, Space, Enter, or Page Down
- Previous: Left Arrow, Up Arrow, Backspace, or Page Up
- First/last: Home or End
- Fullscreen: F
- Exit presentation: Escape
Import the repository into Vercel and select the Vite framework preset. The core application is a static frontend: Vercel serves the built assets while PPTX parsing and rendering run in the visitor's browser.
OpenPresenter does not intentionally transmit selected presentations in its normal local workflow and does not cache them permanently. PPTX files remain untrusted input, so archive size/entry limits, package-structure validation, safe relationship resolution, XML error handling, and React text nodes are used to reduce risk. See SECURITY.md for reporting guidance.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
OpenPresenter was created by Arjunrenvon.
