Extract, view, and export data from PowerPoint files — entirely in your browser.
Live Demo · Features · Tech Stack · Development
Extraction
- Full data extraction from both
.pptx(Office Open XML) and.ppt(MS-PPT binary) files - Text, metadata, speaker notes, tables, shapes, themes, and color schemes
- Image and media extraction (JPEG, PNG, EMF, WMF)
- Multiple file processing — drag & drop or browse
Export
- Six export formats: JSON, XML, CSV, TXT, HTML, PDF
- Media download as ZIP archive
- Customizable filename patterns and export settings
Interface
- Three themes: Light, Dark, and OLED
- Four languages: English, Spanish, German, French
- Responsive design with mobile-first bottom navigation
- Command palette (⌘K) for quick actions
- Keyboard shortcuts for power users
- PWA — installable on any device
Privacy
- 100% client-side processing — no files leave your device
- No analytics, no tracking, no server uploads
| Format | Extension | Support |
|---|---|---|
| PowerPoint 2007+ | .pptx |
Full (metadata, slides, notes, media, themes) |
| PowerPoint 97-2003 | .ppt |
Full text extraction, metadata, images |
PPTX files
- Metadata — Title, creator, dates, revision, keywords, description, app version
- Slides — Title, text content, shapes, tables
- Speaker Notes — Full notes per slide
- Themes — Color schemes, font schemes
- Media — Images, videos, audio files
- Custom Properties — Any custom document properties
PPT files (legacy)
- Full text extraction using MS-PPT binary format specification
- Unicode and ANSI support (UTF-16LE and Windows-1252)
- Metadata from OLE property streams
- Image extraction (JPEG, PNG, EMF, WMF)
- Slide organization with automatic title detection
| Format | Description | Use Case |
|---|---|---|
| JSON | Full structured data | Programming, APIs |
| XML | Structured markup | Data interchange |
| CSV | Spreadsheet format | Excel, data analysis |
| TXT | Plain text | Quick reading |
| HTML | Web page | Viewing in browser |
| Document | Printing, sharing |
| Category | Technology |
|---|---|
| Framework | React 19 |
| Language | TypeScript 5.8 |
| Styling | Tailwind CSS 4 |
| Build | Vite 6 |
| State | Zustand 5 |
| PWA | vite-plugin-pwa |
| Parsers | JSZip, CFB, pptx-parser |
| jsPDF | |
| Icons | Lucide React |
| Deploy | GitHub Pages |
- Node.js 20+
- npm
git clone https://github.com/RobyRew/powerpoint-extractor.git
cd powerpoint-extractor
npm install
npm run devnpm run buildnpm run previewDocker
docker build -t powerpoint-extractor .
docker run -p 80:80 powerpoint-extractorUses multi-stage build: node:20-alpine → nginx:alpine. Production-ready with gzip, caching headers, and SPA routing.
GitHub Pages Deployment
This project includes a GitHub Actions workflow that builds and deploys to GitHub Pages on every push to main.
- Fork or clone this repository
- Go to Settings → Pages
- Set source to GitHub Actions
- Push to
main— the site deploys automatically
The workflow sets BASE_URL=/powerpoint-extractor/ for correct asset paths.
Static Hosting
Run npm run build and serve the dist/ folder with any static hosting provider (Netlify, Vercel, Cloudflare Pages, etc.).
Self-hosted Umami can be wired at deploy time without rebuilding. In Dokploy → this app → Environment, set:
| Variable | Value |
|---|---|
UMAMI_SCRIPT_URL |
https://stats.cosmincalin.es/script.js |
UMAMI_WEBSITE_ID |
UUID from Umami → Settings → Websites |
A startup script in the container (docker-entrypoint.d/30-inject-umami.sh) substitutes a <!-- UMAMI --> placeholder in index.html with the real <script defer …> tag, with data-do-not-track="true" honouring browser DNT. If either env var is missing the placeholder is just stripped — no broken script tag ships.
- SheetJS/js-cfb — OLE Compound Document parsing
- pptx-parser — PPTX file parsing
- js-ppt — PPT binary format reference
- MS-PPT Specification — Microsoft binary format docs
- Lucide — Icon toolkit
Licensed under the Apache License 2.0. You are free to use, modify, and distribute this software — but you must retain the NOTICE file and give credit to the original project and author in any copies or derivative works.
Made with ❤️ by RobyRew