OpenOOXML
The open-source project building native OOXML engines in Rust — DOCX, XLSX & PPTX, compiled to WebAssembly for the web.
01 Project
A project, not a product
OpenOOXML develops the engines that make Office documents first-class citizens of the web: parsing, layout, editing, and rendering for the OOXML formats, written in Rust and developed in the open under Apache 2.0.
The engines run wherever Rust or WebAssembly runs — browsers, servers, and embedded inside agent pipelines. Products built on top, like BetterOffice, package them as ready-to-use editors and SDKs.
- Rust, end to endEvery engine is written in Rust. No JS reimplementation, no headless office suite behind an API.
- WASM on the webThe same engines compile to WebAssembly and run in the browser at near-native speed.
- Real-time collaborationMultiplayer editing is built into the core — concurrent edits merge natively.
- Native OOXML editingDocuments are edited in their own format. No lossy conversion on open, none on save.
- Agent-readyEngines run headless and embed directly inside agent pipelines — parse, edit, and render without a display server.
- Apache 2.0Permissive license, developed in the open. Independent of any office suite codebase.
02 Architecture
One foundation, three formats
The formats share more than they differ, so the code does too. Packaging, graphics, typesetting and collaboration live in shared Rust crates; DOCX, XLSX and PPTX are format engines on top. Everything lives in one repository: openooxml/betteroffice.
- opcOpen Packaging Conventions — the parts, relationships and zip container every OOXML file sits on.
- drawingmlShapes, images, charts and effects. DrawingML is shared by all three formats, so the engine is too.
- layoutText shaping, line breaking and pagination — one typesetting core for documents, cells and slides.
- syncFormat-agnostic real-time collaboration. Concurrent edits merge in the core, not in a bolt-on layer.
03 Performance
Milliseconds, not seconds
Time from file to first rendered frame, against LibreOffice running headless. The green bars are the engines running as WebAssembly — inside a browser.
~22× faster — in the browser
~37× faster — in the browser
~27× faster — in the browser
Apple M4 Max, 64 GB RAM · LibreOffice headless, file → first rendered frame · preliminary figures, benchmark suite to be published
04 Compatibility
A drop-in replacement for eigenpal
eigenpal was a popular DOCX editor, deprecated when its maintainers moved to a commercial product. The project maintains an independent Apache 2.0 implementation of the same public API — API-compatible and drop-in.
Existing projects can switch without touching a single import:
npm i @eigenpal/docx-editor-core@npm:@betteroffice/docx