Layout
Key difference- Lite (free)
- Yoga WASM flexbox
- Pro
- Same
- PptxGenJS v4.0.1
- Manual x/y/w/h

Compare
PaperJSX uses a Yoga flexbox engine — your slides reflow automatically when the data changes, with editable charts, animations, and a declarative JSON contract.
[01] Side by side
These are the PPTX capabilities that materially change production workflows once the deck has to survive edits, variable data, and repeated generation.
| Capability | Lite (free) | Pro | PptxGenJS v4.0.1 |
|---|---|---|---|
| Layout | Yoga WASM flexbox | Same | Manual x/y/w/h |
| Line breaking | Knuth-Plass (TeX-grade) | Same | Basic |
| Chart types | 6 with embedded Excel | 15+ (ChartEx) | 10 with embedded Excel |
| Animations | — | Entrance, exit, morph | Not supported |
| Template import | — | .potx file import | Code-defined defineSlideMaster() |
| Typography | Basic font metrics | HarfBuzz WASM (CJK, RTL) | RTL attrs, Asian font names |
| Diagrams | 6 generators | Same | Not supported |
| API style | JSON declarative | Same | Imperative slide.addChart() |
[02] Layout engine difference
PptxGenJS asks you to place every element with explicit x, y, width, and height values. The layout-aware route lets the slide reflow from a flexbox JSON tree, so the layout adapts when content length changes.
const slide = pptx.addSlide();slide.addText('Q2 Board Update', {x: 0.6,y: 0.8,w: 8.6,h: 0.5,fontSize: 24,bold: true,});slide.addText(['Revenue up 34% QoQ','NRR reached 118%',], {x: 0.6,y: 1.7,w: 8.6,h: 1.6,breakLine: true,});
{type: 'slide',children: [{type: 'stack',gap: 20,children: [{ type: 'text', text: 'Q2 Board Update', fontSize: 24 },{type: 'stack',gap: 8,children: [{ type: 'text', text: 'Revenue up 34% QoQ' },{ type: 'text', text: 'NRR reached 118%' },],},],},],}
[03] The real tradeoff
Both libraries can generate PowerPoint files. The real difference is whether your team wants to keep owning layout logic in application code or move that problem into a layout engine.
Layout-aware route
Best when variable content keeps blowing up hand-placed slides and the deck still has to stay editable.
Coordinate-first route
If the structure is stable and the content rarely changes, explicit x/y placement can be enough for now.
One minute in the playground shows what hours of coordinate debugging cannot fix.