Rust-native OOXML engines with collaboration and agent editing at the core.
WebAssembly for browsers. Headless APIs for servers. Native Rust where you need it.
-
Documents, spreadsheets, and slides. Open, edit, render, and save DOCX, XLSX and PPTX files with high fidelity. Native OOXML editing preserves untouched file parts losslessly when round-tripping.
-
Agent editing with human review. Review attributed agent edits through tracked changes, inline diffs, and before-and-after previews. Accept or reject changes directly in the editor.
-
Real-time collaboration. People and agents edit the same file together, with live cursors and selections. Concurrent changes merge automatically, and offline edits sync when peers reconnect.
-
Undo and redo. Navigate editing history and undo accepted agent proposals as a single step.
-
Embed or automate. Drop React editors into your app, build on the framework-free JavaScript cores, or use Rust and Python APIs for headless processing and agent workflows.
-
Open source and self-hostable. Apache-2.0 licensed, with control over your document storage, deployment, and collaboration infrastructure.
Try it out, or explore the docs for setup, APIs, and format support.
| package | registry | what it does |
|---|---|---|
betteroffice-docx |
crates.io | typed Rust API for opening, editing, laying out, and saving DOCX documents |
@betteroffice/docx |
npm | framework-free .docx editor core: parsing, CRDT editing, and page layout in Rust through WebAssembly |
@betteroffice/docx-react |
npm | drop-in React .docx editor |
betteroffice-docx |
PyPI | Python API for reading, editing, laying out, and rasterizing DOCX documents |
| package | registry | what it does |
|---|---|---|
betteroffice-xlsx |
crates.io | typed Rust API for opening, editing, calculating, rendering, and saving XLSX workbooks |
@betteroffice/xlsx |
npm | framework-free spreadsheet core powered by the Rust engine through WebAssembly |
@betteroffice/xlsx-react |
npm | drop-in React spreadsheet editor |
betteroffice-xlsx |
PyPI | Python API for opening, recalculating, styling, rendering, and saving XLSX workbooks |
| package | registry | what it does |
|---|---|---|
betteroffice-pptx |
crates.io | typed Rust API for opening, editing, rendering, and saving PPTX presentations |
@betteroffice/pptx |
npm | framework-free .pptx editor core: slide model, masters, editing, and rendering in Rust through WebAssembly |
@betteroffice/pptx-react |
npm | drop-in React .pptx editor |
betteroffice-pptx |
PyPI | Python API for reading, editing, saving, and laying out PPTX presentations |
VSDX packages build from this repository; see the VSDX guide.
@betteroffice/agents lets agents search, read, edit and preview DOCX, XLSX
and PPTX files through a TypeScript SDK or the betteroffice-mcp server.
What to install for which language, with a first example each: npm, crates.io, PyPI.
Generated by the Benchmarks action; per-document results are on the benchmarks site.
Page agreement is reported separately from SSIM.
| BetterOffice (3a49caad) | LibreOffice (26.2.3.2) | |
|---|---|---|
| Exact page counts | 63/63 | 44/63 |
| Absolute page error | 0 | 57 |
| SSIM | 0.8519 | 0.7694 |
| Scored/total | 63/63 | 63/63 |
| Render time (avg) | 430 ms | 773 ms |
| Parse success | 100.00% | 100.00% |
| BetterOffice (3a49caad) | LibreOffice (26.2.3.2) | |
|---|---|---|
| SSIM | 0.9170 | 0.9030 |
| Scored/total | 103/103 | 103/103 |
| Render time (avg) | 159 ms | 1351 ms |
| Parse success | 100.00% | 100.00% |
| BetterOffice (3a49caad) | LibreOffice (26.2.3.2) | |
|---|---|---|
| SSIM | 0.7661 | 0.6892 |
| Scored/total | 207/208 | 195/208 |
| Recalc accuracy | 99.60% | 85.87% |
| Recalc time (avg) | 64 ms | 405 ms |
| Parse success | 100.00% | 100.00% |
For how scores, timings and coverage are measured, see the benchmark methodology.
crates/— the Rust enginespackages/— the TypeScript editor packagesbindings/— the Python bindingse2e/— browser tests, corpus scenarios, and the shared test harnessapps/web— betteroffice.dev (Next.js on Cloudflare Workers)apps/demo— editor playgroundapps/docs— documentation
bun install
bun run dev:demo # editor playground; builds the wasm bundles on first run
bun run dev # betteroffice.dev site (no wasm needed)
bun run dev:docs # documentation site
bun run rust:check # fmt + clippy + tests for the enginesRun bun run test:e2e:browser for headless browser tests of all three editors.
The E2E guide also covers pinned corpus scenarios,
cross-SDK checks, and operation profiles.
Use the Office visual quality harness to export Word, PowerPoint, and Excel references, compare local renders, or refresh the fidelity scores with the manual action.
Contributions are welcome. We ask for a one-time signature of the Contributor License Agreement on your first pull request (corporate version).
Apache-2.0 — third-party attribution in THIRD-PARTY-NOTICES.md.