PPTist: a Vue 3 web slide editor you build on, not a PowerPoint replacement
PowerPoint-ist(/'pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for the editing and presentation of PPT online. It also supports AIPPT and local PPTX file preview.
At a glance
- What is it?
- PPTist is an AGPL-3.0 Vue 3 and TypeScript application for editing and presenting slides in the browser. Its own README rates it five stars for building a web presentation product and only two stars for replacing Office PPT, and that gap is the whole story.
- Who is it for?
- Adopt PPTist if you are a web developer who needs an editing and presentation core to extend with your own node types and features, and you accept AGPL-3.0. Do not adopt it if you want a ready-made tool or an out-of-the-box AIPPT service; the README says it should not be used directly as a tool and does not support out-of-the-box use.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 31 days ago.
- What is it written in?
- Mainly Vue, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem PPTist solves, and the developers it is written for
Building a slide editor in the browser means implementing text boxes, shapes, lines, charts, tables, video, audio, formulas, grouping, alignment, layer order, undo and redo, and then a presentation mode on top. PPTist is an existing implementation of that layer. The README states the target audience plainly: developers with web slide development needs and basic web development experience. It also states what the project is not. The demonstration link is for demonstration only and offers no online services, and the project should not be used directly as a tool because it does not support out-of-the-box use. That is an unusually blunt positioning statement, and it saves a lot of wasted evaluation time. If you need a finished product, the README tells you to look elsewhere.
The recommended use case in the README is a web slide editing and presentation application, rated five stars. Three other use cases get two stars: AI PPT generation, PPT file preview, and Office PPT authoring. Low-code platforms, H5 editors, image editors and whiteboards are explicitly not recommended. The summary line in the README is the clearest statement of intent: build a presentation product different from Office PPT, rather than an editing relay station for Office PPT.
How the editor is put together: Vue 3, TypeScript, ProseMirror and no UI kit
The stack is visible in package.json. The framework is Vue 3.5 with Pinia for state, TypeScript throughout, and Vite as the build tool with vue-tsc for type checking. The README highlights that the project does not rely on a UI component library, which is why styling customization is described as easier. That choice has a cost: there is no design system to inherit, so every control in the editor is maintained inside the repository.
Text editing is not a textarea. The dependencies include the full ProseMirror set (prosemirror-model, prosemirror-state, prosemirror-view, prosemirror-commands, prosemirror-history, prosemirror-schema-basic, prosemirror-schema-list, prosemirror-inputrules, prosemirror-keymap, prosemirror-gapcursor, prosemirror-dropcursor). That is the rich text engine behind text elements and speaker notes. Charts run on echarts, math formulas on hfmath, and persistence on dexie, which is an IndexedDB wrapper, plus crypto-js. The PPTX pipeline is split between pptxtojson for import and pptxgenjs for export, with jsonrepair and file-saver alongside them. Small utilities matter here: number-precision handles floating point arithmetic on element coordinates, nanoid generates ids, mitt is the event bus, and vuedraggable handles reordering. None of these are incidental. An editor that moves rectangles on a canvas needs exact arithmetic and stable identity, and those two packages are the reason.
The data flow follows the same shape as most canvas editors: elements live in a store, edits dispatch through the store, the canvas renders from it, and history snapshots feed undo and redo. The README lists a selection panel for hiding elements, layer sorting and element naming, which implies the document model tracks per-element metadata beyond geometry. For AI integration, the README points to AI_PPT_SCHEMA.md as the definition of page data that an AI can generate directly, and states that this supports non-template generation in theory.
Installing PPTist and running your first edit
The README gives the install steps directly and requires node.js version 20 or higher. Run npm install to pull the dependencies, then npm run dev to start the Vite dev server. According to the README, the browser access address is http://127.0.0.1:5173/.
npm install
npm run devOpen that address and you land in the editor with a default slide. The README lists the editing surface: add elements, drag to move, rotate, scale, marquee select, group, lock, magnetic alignment, align to canvas or to other elements, and evenly distribute. Right-click menus and shortcuts are advertised as available throughout. For a production build, package.json defines npm run build, which runs type-check and build-only in parallel, and npm run preview to serve the result.
npm run build
npm run previewThe import and export path is the part to try early. The README lists import for PPTX, JSON and pptist files, and export for PPTX, JSON, images, PDF (print) and pptist files. There is no documented CLI for conversion, so the way to test fidelity is through the running application: import a real deck of yours, then export it and compare. The README's own numbers are overall fidelity of roughly 85 percent or more for PPTX import and roughly 95 percent or more for PPTX export. Those are the project's figures, not a benchmark, and the README itself advises evaluating with your actual sample files if you need pixel-perfect results.
Where PPTist breaks down: fidelity, positioning and the AGPL licence
The first limitation is stated by the project itself. PPTX import and export will lose details. The README names complex layouts, animations, charts, themes and masters as areas where some details are inevitably lost, and says 100 percent fidelity cannot be guaranteed. Animations, special charts, deeply nested structures and non-standard elements are called out for preview specifically. If your workflow is round-tripping Office files between PPTist and PowerPoint, you are using the project in a mode its author rates two stars.
The second limitation is AIPPT. The README supports template-based generation and provides AI_PPT_SCHEMA.md for direct page data generation, but warns that results depend heavily on model capability, prompt design, and asset generation or retrieval. It positions PPTist as a foundation for carrying, editing and processing structured generation results rather than a complete commercial AIPPT solution. Anyone shopping for a turnkey AI deck generator is looking at the wrong repository.
The third is licensing. PPTist is AGPL-3.0. That is a network copyleft licence: if you modify it and let users interact with it over a network, the source of your modified version is expected to be offered to those users. The README has a commercial use section, and for anything beyond experimentation you should read it and the LICENSE file rather than take a summary from an article. There is no separate commercial licence mentioned in the README, so the AGPL terms are the terms.
One more practical point: the README states there is no online service behind the demo link. Self-hosting is the only path, and the repository ships no deployment configuration at the top level beyond vite.config.ts, so hosting is your problem to solve.
PPTist against building on Reveal.js or writing your own canvas editor
The closest comparison in the related searches is PptxViewJS, and the difference is scope. A PPTX viewer renders a file for display. PPTist is an editor: it holds a mutable document model, supports element creation and transformation, and exports back out. If you only need to display slides, a viewer is a smaller dependency with a narrower failure surface. If you need users to change the slides, a viewer will not get you there.
The other realistic alternative is building the editor yourself, which is what teams often assume will be cheap. It is not. The dependency list in package.json shows how much sits under the surface: a ProseMirror schema for text, echarts for charts, pptxgenjs for export, pptxtojson for import, plus history, snapping, grouping and layer management. Writing that from scratch is months of work before the first useful feature. PPTist gives you that layer already assembled, and the README's five-star recommendation is precisely for customizing it rather than replacing it.
The trade-off you accept in return is opinionated structure. Because there is no UI component library, you are not fighting a design system, but you also inherit the project's own components and must learn them. The README's claim that the code is controllable and leaves no technical debt is a claim about the author's intent, not something you can verify from a README. Read src/ before you commit.
Maintenance, upgrades and what the repository tells you
The repository is not archived, and the last push was on 2026-08-16. The version in package.json is 2.0.0 and the package is marked private. No releases were retrieved, so versioning appears to happen through the master branch rather than through tagged releases, which means upgrading is a matter of tracking commits. The README mentions that Gitee and GitCode mirrors are synchronized regularly, so contributors in China have a faster path to the same code.
Upgrade cost depends on how far you diverge. If you fork and edit src/ directly, every upstream change is a merge conflict you own. The README's five-star scenario is customizing nodes and features, which is exactly the scenario that makes upstream rebasing expensive. There is no plugin or extension API documented in the README, so extension happens by editing the project itself. Plan for that: keep your custom nodes in clearly separated directories, and treat the rest of src/ as a vendored dependency you occasionally pull forward.
The toolchain is worth noting for upgrade planning. vue-tsc, eslint, husky and commitlint are configured in the repository, so npm run lint and npm run type-check are available as gates before you take an upstream change. Node 20 or higher is required by the README, and that floor will move as Vite and Vue move.
Editorial conclusion
Adopt PPTist if you are a web developer who needs an editing and presentation core to extend with your own node types and features, and you accept AGPL-3.0. Do not adopt it if you want a ready-made tool or an out-of-the-box AIPPT service; the README says it should not be used directly as a tool and does not support out-of-the-box use. Before committing, verify two things with your own files: the PPTX import and export fidelity on your real decks, and whether the doc/Q&A.md answers your integration question.
Frequently asked questions
What is the PPTist app used for?
PPTist is a web-based slide editing and presentation application built with Vue 3 and TypeScript. The README states its target audience is developers with web slide development needs, and that it should not be used directly as a tool because it does not support out-of-the-box use.
How do I install and run PPTist locally?
The README requires node.js version 20 or higher, then npm install followed by npm run dev. It states the browser access address is http://127.0.0.1:5173/.
Can PPTist import and export PowerPoint PPTX files?
Yes. The README lists PPTX under both import and export, with overall fidelity of roughly 85 percent or more for import and roughly 95 percent or more for export. It also warns that animations, special charts and deeply nested structures may show fidelity differences, and advises evaluating with your actual sample files.
What licence does PPTist use?
The repository is licensed under AGPL-3.0, and the README has a separate commercial use section. Because AGPL-3.0 carries network copyleft obligations, read the LICENSE file and that section before using it in a product.
Does PPTist generate slides with AI?
It supports template-based AIPPT generation and defines a page data structure in AI_PPT_SCHEMA.md for AI to generate directly. The README rates this use case two stars and says results depend heavily on model capability, prompt design and asset generation, so it is a foundation rather than a complete AIPPT solution.
Community notes