README.md

August 16, 2026 · View on GitHub

BetterOffice: the open-source office suite, built on native OOXML engines in Rust

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.

license npm downloads crates.io downloads PyPI downloads betteroffice.dev openooxml.org

Packages

Documents — .docx

packageregistrywhat it does
betteroffice-docxcrates.iotyped Rust API for opening, editing, laying out, and saving DOCX documents
@betteroffice/docxnpmframework-free .docx editor core — parsing, CRDT editing, and page layout in Rust through WebAssembly
@betteroffice/docx-reactnpmdrop-in React .docx editor
betteroffice-docxPyPIPython API for reading, editing, laying out, and rasterizing DOCX documents

Spreadsheets — .xlsx

packageregistrywhat it does
betteroffice-xlsxcrates.iotyped Rust API for opening, editing, calculating, rendering, and saving XLSX workbooks
@betteroffice/xlsxnpmframework-free spreadsheet core powered by the Rust engine through WebAssembly
@betteroffice/xlsx-reactnpmdrop-in React spreadsheet editor
betteroffice-xlsxPyPIPython API for opening, recalculating, styling, rendering, and saving XLSX workbooks

Presentations — .pptx

packageregistrywhat it does
betteroffice-pptxcrates.iotyped Rust API for opening, editing, rendering, and saving PPTX presentations
@betteroffice/pptxnpmframework-free .pptx editor core — slide model, masters, and rendering in Rust through WebAssembly
@betteroffice/pptx-reactnpmdrop-in React .pptx editor
betteroffice-pptxPyPIPython API for reading, editing, saving, and laying out PPTX presentations

What to install for which language, with a first example each: npm, crates.io, PyPI.

Structure

  • crates/ — the Rust engines
  • packages/ — the TypeScript editor packages
  • bindings/ — the Python bindings
  • apps/webbetteroffice.dev (Next.js on Cloudflare Workers)
  • apps/docs — documentation

Development

bun install
bun run build:xlsx-wasm # compile the ignored spreadsheet wasm asset
bun run build:docx-wasm # compile the ignored document wasm assets
bun run dev          # web app
bun run rust:check   # fmt + clippy + tests for the engines

Contributing

Contributions are welcome. We ask for a one-time signature of the Contributor License Agreement on your first pull request (corporate version).

License

Apache-2.0 — third-party attribution in THIRD-PARTY-NOTICES.md.