CasualOffice

opendoc: Edit Word Documents with a Rust Engine

OpenDoc is an Apache-2.0 local-first Word document editor built on a deterministic Rust engine. It runs natively, headless, or in the browser through WebAssembly, and reads and writes DOCX and ODT.

NewRustApache-2.0Web AppLocal FirstDocx
Stars
34
Forks
9
Last commit
today
Contributors
3
Releases, 12 months
0

Our take

Newless than six months old and changing fast

Health score

43/100

How it is scored
Activity
53
Community
14
Issues
21
Pull requests
82
  • Merges more pull requests than 93% of the projects we track
  • Fewer contributors than 82% of the projects we track

OpenDoc is an unusually broad document-editor and engine project, but its pre-release status and reliance on one main contributor make it a higher-adoption-risk choice today.

Good fit if

  • You need a local-first browser editor or Rust engine and can work with a pre-release project.
  • DOCX and ODT support, embeddability, or headless rendering are central to your use case.
  • You can validate rendering and round-trip behavior against your own documents.

Look elsewhere if

  • You require rendering identical to Word or mature, stable public SDKs and published crates.
  • You need production-ready collaboration with relay TLS and authentication, or server-hosted version history.
  • Your workflow depends on editing SmartArt, equations, or RTF, or on PDF features such as tags, links, bookmarks, or PDF/A.
All health signals
Last commit2026-10-28 (today)
Commits, last 90 days100+
Releases, last 12 months0
Contributors3 (top contributor: 98% of commits)
Issues closed, last 90 days0+
Pull requests merged, last 90 days89 (typically merged in 0 days)
Project age3 months

Checked on 2026-10-29 with the GitHub API.

Overview

OpenDoc is a local-first editor for Word documents, built on its own deterministic Rust engine. The same engine handles import, editing, layout, and rendering natively, headless, or in the browser through WebAssembly, so the web editor can open and save documents without a document server.

It is aimed at teams that want to embed or brand a document editor, or use a Rust document engine directly. The project emphasizes loss-aware DOCX handling and exports to PDF, HTML, and Markdown as well as DOCX and ODT. It is pre-release, and rendering is not yet identical to Word.

Key Features

  • Opens and saves DOCX and ODT, opens RTF and plain text, and exports PDF, HTML, Markdown, and plain text.
  • Uses a normalized document model and reports content an export cannot preserve; an unedited DOCX saves byte-for-byte.
  • Provides a browser editor with editing, review, version history, comparison, print, and accessibility features.
  • Offers an embeddable custom element, in-process API, and postMessage bridge with host-controlled roles and capabilities.
  • Includes Rust crates for importing, editing, laying out, rendering, and exporting documents.
  • Supports experimental real-time collaboration through an optional relay that forwards changes without holding documents.
  • Applies explicit package limits when reading files and refuses macro-enabled DOCM files.

Use Cases

  • Embed a local-first document editor in a product where users should open and edit files in the browser without uploading them to a document server.
  • Build document workflows in Rust that need DOCX or ODT import, layout, rendering, or export.
  • Preview or convert documents headlessly, for example to render pages or generate PDFs.
  • Evaluate an open alternative to commercial document editors when pre-release status and imperfect Word rendering are acceptable.

What you need

Detected in the repository

  • Rust 1.88.0 or newer (from Cargo.toml)
  • A Compose file to run it with its related services
  • Automated checks on GitHub Actions

License in plain words

Apache-2.0permissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the license, the NOTICE file and a note of your changes
  • Share your changes: no
  • Includes an explicit patent grant from the contributors:

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

The browser editor requires Rust and wasm-pack:

git clone https://github.com/CasualOffice/opendoc.git && cd opendoc
./webapp/build.sh
./webapp/serve.py

Then open http://localhost:8099/editor.html?demo=1. See the README for Docker, engine, and embedding instructions.

Alternatives

  • univer: Univer is a TypeScript SDK for embedding document and other productivity experiences, while OpenDoc is a local-first Word editor with DOCX and ODT support.
ProjectLanguageLicenseStarsStatus
opendocRustApache-2.034New
univerTypeScriptApache-2.022.6kActive

Considerations

  • The project is new and changing quickly. It has recent development activity and merged pull requests, but no releases in the past year; the available contributor data is concentrated heavily in one person. No issues were closed in the measured recent period.
  • The editor and engine are pre-release. The public SDK surfaces are not stable, and the internal crates are not published.
  • The browser build requires Rust 1.88 or later and wasm-pack; the README also documents a Docker Compose option.
  • Rendering fidelity is still improving. SmartArt is shown as a placeholder, some chart types are placeholders, and equations cannot be edited or inserted. RTF opens but cannot be saved.
  • PDF export lacks tags, links, bookmarks, and PDF/A support. Collaboration is experimental, and browser version history is not stored on a server.
  • The project is licensed under Apache-2.0. Review its license and bundled third-party asset notices when distributing it.

Found this useful?

Share it with someone who would like opendoc.