Everything that draws a page goes through the engine. The editor is the application around it: it owns the document session, the tools and the panels, and it hosts every plugin through one typed contract, @paged-media/plugin-api. Click a node to read its license, maturity and proof points.
One engine, every kind of page
paged is built in layers that each stand on a public boundary: an open engine that reads and lays out IDML, a viewer and an editor that run it in the browser, 8 plugins for the content a publication holds, and the SDK all of them are written against.
The engine at the centre, the editor around it
One display list, 3 backends
The engine parses an IDML package into a typed model, resolves it into a scene, shapes and breaks the text, composes the pages — and then writes one display list. Every way of putting the page somewhere reads that same list.
- CPU
- A software rasteriser for headless rendering and the fidelity tests run against InDesign.
- WebGPU
- The browser path: the viewer, the editor and the cover of this site.
- Print-grade PDF written from the same commands, not from a screenshot.

130 operations, one undo
Every change to a document — a typed character, a dragged frame, a filled table cell, a plugin placing a chart — is one of 130 typed operations sent over a single channel into the engine. The engine applies it, recomposes only what it touched, and records it for undo.
There is no second path. A tool, a panel, a script and a plugin all speak the same operations, which is why one undo stack covers all of them.
A tool, a script and a plugin make the same edit the same way.
Everything in a document has an address
Pages, frames, stories, paragraphs, table cells and a caret inside a line are named by one address grammar of 30 forms. Every property an address can carry is described by one of 403 typed schemas — so the inspector, the scripting surface and a plugin read and write the same fields with the same types.
A .paged file is valid IDML
A .pageddocument is a ZIP package that is also a valid IDML file: InDesign opens it as one. Next to the IDML parts it carries each plugin's content in that content's own native form — the web plugin's HTML, the sheet plugin's workbook, the drawing plugin's vectors — and an index of which part belongs to whom.
Nothing is locked inside a private blob. Take the plugins away and the document is still an IDML; keep them and every live object can still be edited as what it is.
Scripts run next to the engine
The editor ships a paged.* scripting surface, evaluated in the same worker as the engine. A script addresses objects with the object model and changes them with the same operations a tool sends — so a batch job lands on the same undo stack as a hand edit.
Four layers you can use on their own
paged core
A Rust engine that reads InDesign documents and lays them out the way InDesign does — then paints them on the CPU, on WebGPU, or into print-grade PDF from one display list.
paged viewer
Drop the engine's renderer into a web page and an InDesign document becomes a live, zoomable page — no server, no conversion step, no plugin.
paged editor
An InDesign-class layout application that runs entirely in your browser tab: the engine in a worker, a cockpit that follows what you are editing, and every plugin in the same chrome.
plugin SDK
The same contract every first-party plugin is written against: a typed host, the object model, the scripting surface and a validator — so a plugin of yours sits in the editor exactly like ours.
8 plugins, one contract
Every first-party plugin is written against @paged-media/plugin-api — the same contract the SDK gives you. Each one built a chapter of The Paged Annual.
paged.draw
Illustrator-class vector drawing inside the layout: pen and shape tools, pathfinder, live paint, symbols and blends, on the same page as your text.
paged.image
Photoshop-class image editing on WebGPU — layers, masks, adjustment layers, healing and content-aware fill — and a PSD that comes back byte for byte when you did not touch it.
paged.sheet
A spreadsheet engine in the page: real Excel workbooks with live formulas, tables and charts that paginate like print, and save back as XLSX.
paged.data
Catalogues, price lists and directories generated from your data: SQL over CSV, JSON, Parquet and Excel in the browser, bound to the layout and kept in sync.
paged.web
InDesign can't speak web; web tools can't speak print. paged.web lays out HTML and CSS inside frames, flows it across pages, and bakes it to native items InDesign opens.
paged.doc
Open a Word .docx as native, editable layout — lists, tables, images, footnotes, headers and footers — and save your edits back into the same file.
paged.slide
PowerPoint decks on the engine: every preset shape, every built-in table style, charts and SmartArt, laid out within a point of PowerPoint.
paged.publish
The format lanes: IDML written back in InDesign's own spelling with untouched parts kept verbatim, and PDFs opened as editable text, vector and image frames.
Every plugin →
Who may use what
Every part is dual-licensed. The engine, the viewer, the SDK and the format lanes are MPL-2.0 OR PMEL; the editor and the content plugins are AGPL-3.0 OR PMEL. PMEL is the alternative to the open-source license for those who need other terms — write to enterprise@paged.media.
| Part | License | Maturity | Version | Repository |
|---|---|---|---|---|
| paged core | MPL-2.0 OR PMEL | released | 0.71.3 | core ↗ |
| paged viewer | MPL-2.0 OR PMEL | released | 0.71.3 | core ↗ |
| paged editor | AGPL-3.0 OR PMEL | product preview | — | editor ↗ |
| plugin SDK | MPL-2.0 OR PMEL | canary — usable, moving fast | 0.2.48-canary.0 | plugin-sdk ↗ |
| paged.draw | AGPL-3.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.16 | plugin-draw ↗ |
| paged.image | AGPL-3.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.18 | plugin-image ↗ |
| paged.sheet | AGPL-3.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.15 | plugin-sheets ↗ |
| paged.data | AGPL-3.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.11 | plugin-data ↗ |
| paged.web | AGPL-3.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.12 | plugin-web ↗ |
| paged.doc | AGPL-3.0 OR PMEL | canary — usable, moving fast | — | plugin-doc ↗ |
| paged.slide | AGPL-3.0 OR PMEL | coming — not yet in the editor | — | plugin-slide ↗ |
| paged.publish | MPL-2.0 OR PMEL | canary — usable, moving fast | 0.1.0-canary.0 | plugin-publish ↗ |