Loss-aware DOCX
OOXML parses into a typed editable model. Unsupported package data is retained verbatim or surfaced explicitly — it does not vanish on save.
- Semantic import and export
- Byte-identical reconstruction
- Compatibility dispositions
Open-source DOCX infrastructure · Apache-2.0
A deterministic Word-document runtime written in Rust. Import, edit, lay
out, render, and write .docx on native, WebAssembly, and
headless hosts — with no required server, DOM, or UI framework.
Your document never leaves the browser. The demo below runs the same Rust engine, compiled to WebAssembly.
The normalized model and deterministic layout engine stay authoritative. The canvas is a rendering surface, never the source of truth.
OOXML parses into a typed editable model. Unsupported package data is retained verbatim or surfaced explicitly — it does not vanish on save.
Shape, paginate, compose, and rasterize through one Rust pipeline with pinned inputs and regression gates on geometry and page output.
Every mutation routes through a closed command set with inverses, selection anchors, and undo/redo. Network, storage, and auth stay yours.
The engine owns document state, transactions, selection, pagination, hit testing, and serialization. Your host owns files, fonts, network access, telemetry, permissions, and product UI.
Read the architectureNo account, no hosted backend, no opaque cloud service. Every pull request runs build, test, lint, docs, and WASM gates on the pinned toolchain.
$ git clone https://github.com/CasualOffice/opendoc.git
$ cd opendoc
$ cargo test --workspace --all-features --locked
# run the same browser editor locally
$ ./webapp/build.sh
$ ./webapp/serve.py
OpenDoc already imports, edits, lays out, renders, and writes real DOCX files. It is not yet a stable SDK or a pixel-perfect replacement for Word — fidelity is tracked with generated fixtures, LibreOffice comparisons, and CI gates rather than feature checkboxes.
Semantic import → model → write-back · Layout, tables, headers/footers, floats · Browser editor with hit-testing, caret, undo/redo, save
Text wrap around floats · Inline math (OMML) · Multi-column layout · GPU backend, desktop shell, stable public SDK
Rendering, selection, formatting, tables, links, undo/redo, and save — all client-side.