Casual Editor vs. OnlyOffice Document Server

Casual Editor vs OnlyOffice Document Server — which open-source web .docx editor to self-host

Honest technical comparison between Casual Editor (Apache-2.0, Go gateway, ~50 MB Docker image, .docx round-trip 44/44 pristine) and OnlyOffice Document Server (AGPL-3.0, C++ DocService + Node + RabbitMQ, ~1.5 GB image, full office suite). License, architecture, deployment shape, fidelity, integration model, maturity.

If you’ve shortlisted “self-hostable open-source web .docx editor,” your two real options are Casual Editor and OnlyOffice Document Server. This page is the honest comparison between them.

The single biggest decision factor: license. Casual Editor is Apache-2.0; OnlyOffice’s open-source edition is AGPL-3.0. For most embedded / commercial-product use cases, that’s the answer right there. Past that, the architectures and footprints differ substantially.

At a glance

Casual EditorOnlyOffice Document Server
LicenseApache-2.0 — truly permissiveAGPL-3.0 + commercial offering
File formats.docx, .odt, .md, .txt, PDF export.docx, .odt, .pdf, plus sheets + slides via sister modules
ScopeDocuments only (sister projects for sheets + slides)Full suite — docs + sheets + slides + forms
Docker image size~50 MB compressed~1.5 GB
RAM at idle~100 MB~1.5 GB
Backend stackGo gateway (~120 LOC y-websocket protocol)C++ DocService + Node UI + RabbitMQ
Sync engineYjs CRDT + y-websocketOT (Operational Transform)
MaturityM1 backend live · public preview15+ years, mature
.docx fidelity44 of 44 fixtures pristine (per-tag audit)Mature, well-tested edge cases
AuthPluggable host integration (inline / WOPI / JWT-API)JWT + integration hooks
Integration modelDirect UI + WOPI hostWOPI/JWT — designed to embed into Nextcloud / Seafile / etc.
Standalone useFirst-classDesigned to be embedded; standalone UI is utilitarian
Native mobile appsNo (web viewer + light editor at ≤768 px)Yes (iOS + Android)
Multi-format export via WASM workerYes (@schnsrw/core)Native via DocService
Concurrent users per processSingle Go process — high (Yjs broadcast scales well)Higher per-process but heavier per-doc

License — the elephant in the room

OnlyOffice’s open-source edition is AGPL-3.0. If you embed it in a product you ship to anyone — including SaaS users accessing it over a network — you have to release your full application’s source under AGPL. That’s a non-starter for most commercial products; OnlyOffice sells a commercial license to escape it.

Casual Editor is Apache-2.0. Embed it, fork it, wrap it, ship it to customers — no copyleft, no commercial license to buy. This is the single biggest reason to pick Casual Editor if you’re building on top.

If you’re self-hosting only for your own use (employees, a closed team) and never plan to redistribute, AGPL doesn’t affect you in practice. In that case the license question is neutral.

(The docx-editor/ folder in our repo is a fork of eigenpal/docx-editor, which was MIT upstream. We preserved the MIT notice per Apache-2.0 §4 attribution; the fork’s own modifications + the Go gateway + the whole repository are Apache-2.0.)

Architecture — different design centers

OnlyOffice is built to be embedded into a host. It assumes your authentication system, your file storage, your URL structure. WOPI is the primary integration surface; the standalone UI is functional but clearly a secondary concern. The Nextcloud

  • OnlyOffice combination is the canonical deployment.

Casual Editor is built to be used directly OR embedded. The standalone UI is a first-class web app (ribbon, file menu, recent files, share dialog). The WOPI host integration is there if you want to plug it into Nextcloud or another DMS, but it’s not the only path.

If your shape is “I want to give my users a great .docx editor right now,” Casual Editor makes that one-line easy (docker run -p 8080:8080 schnsrw/casual-editor:latest). If your shape is “I have a document management system and I want a .docx renderer inside it,” OnlyOffice’s WOPI-first design fits better.

.docx fidelity

File featureCasual EditorOnlyOffice
Paragraphs + runs + formatting
Tables (borders, shading, merged cells)
Lists (multi-level, custom bullets)
Headers + footers (section-scoped, different first page)
Comments + tracked changes
Math equations
Hyperlinks (text + image)
Footnotes / endnotes
Drop caps
Custom XML / ContentControlspartial
DrawingML (shapes, images, textboxes)
Complex chart typesre-rendersnative
All system fonts✅ (auto-load @font-face)

Casual Editor’s per-tag round-trip audit shows 44 of 44 fixtures pristine today. The audit covers the OOXML surface a typical business document uses. OnlyOffice has a decade of fixes for exotic edge cases (legal contracts with nested ContentControls, scientific papers with complex equations, very specific page-layout edge cases). For mainstream documents both round-trip without surprise. For your most exotic .docx files, OnlyOffice has more tested surface — though the gap is narrower than the maturity difference suggests.

Resource footprint

OnlyOffice Document Server ships a kitchen-sink stack:

  • C++ DocService doing the actual .docx parsing + rendering
  • Node UI server for the web client
  • RabbitMQ for job queuing
  • Redis for session state
  • Postgres for persistence

~1.5 GB Docker image. ~1.5 GB RAM at idle. Multiple processes per host. Production-tested at scale; correspondingly heavy.

Casual Editor is a Go binary + the built web SPA bundled together:

  • Single Go process (the gateway)
  • Built web SPA served from the same port
  • Stateless — no DB, no on-disk update log; rooms live in memory while a session is active

~50 MB Docker image. ~100 MB RAM at idle. Single process. Per-doc memory is ~370 KB; thousands of active rooms fit comfortably in a few GB.

If you’re sizing for “tiny VPS that just works,” the Casual Editor footprint is roughly 30× smaller. If you have hardware to spare and want the integrated suite, OnlyOffice’s larger footprint isn’t an issue.

Integration shape

OnlyOffice’s primary integration surface is WOPI. You implement the WOPI endpoints (CheckFileInfo, GetFile, PutFile) on your host; OnlyOffice talks to your host. Authentication is JWT-signed URLs. The host owns file storage.

Casual Editor exposes a similar shape — the pluggable host.Integration interface in Go has three concrete implementations (inline, wopi, jwt-api). Same separation of concerns: editor renders, host owns the file. You can pick the inline impl for the simplest case (file storage in-process, suitable for the demo) or wire WOPI/JWT for production.

If you’re already running Nextcloud / Seafile / ownCloud with the WOPI client, OnlyOffice is the friction-free choice — both ends of the WOPI contract are mature. Casual Editor’s WOPI side is M1-level; the inline path is more battle-tested.

When to choose what

Pick Casual Editor if:

  • License matters — Apache-2.0 lets you embed, fork, or ship without copyleft obligations.
  • You only need documents right now (Casual Sheets is the sister project for .xlsx; Casual Slides for .pptx).
  • You want a small footprint — a $5/mo VPS comfortably handles a small team.
  • You’re building on top of a document editor and need clean extensibility.
  • You want a source tree you can read in a weekend (~10k LOC web
    • ~120 LOC Go gateway, vs OnlyOffice’s hundreds of thousands).
  • You want the .docx round-trip to be measured and tracked (the 44/44 fixture audit, the per-tag gap matrix).

Pick OnlyOffice if:

  • You need .docx + .xlsx + .pptx in a single binary today.
  • You’re embedding into a document-management system (Nextcloud, Seafile, ownCloud) that already has WOPI integration.
  • You need native mobile apps.
  • The AGPL doesn’t affect your distribution model (internal use, or you have an AGPL-compatible product, or you’re buying the commercial license).
  • You want the most-tested edge-case .docx fidelity on the exotic features (deep ContentControls, complex chart types, legacy form fields).
  • You want a production-tested deployment with thousands of installations behind you.

Both are real choices. The AGPL question usually decides for you.

What about the rest of the suite?

Casual Sheets (.xlsx, v0.2.1) and Casual Slides (.pptx, v0.0.0 pre-tag) are sister projects in the same suite. Sheets is production-grade today; Slides is fidelity-mature but infra-immature. Neither matches OnlyOffice’s maturity on those formats yet.

If you need the full office suite today, OnlyOffice covers all three formats in one binary while Casual Editor only covers .docx. As Casual Sheets and Casual Slides reach v0.2.x parity, the suite story closes — but today, OnlyOffice’s “everything in one image” is genuinely the right choice if all three formats matter equally to you.

Try Casual Editor

docker run -p 8080:8080 schnsrw/casual-editor:latest

Compare image size, RAM use, and startup time directly against an OnlyOffice Document Server container — the differences are substantial.

Live demo: https://doc.schnsrw.live/. Source: github.com/schnsrw/docx.

For the spreadsheet sister, see Casual Sheets vs OnlyOffice.