← All projects

BENCH 01·DOCX EDITORS·2026

The DOCX editors trial

Thirteen DOCX editors, twelve open-source and one commercial, measured by round trip: each one's own code imports an adversarial Word document and exports it again. SuperDoc, Docxodus and eigenpal score 100% on 99 checks. Eight reports, ten hostile packages.

The editors trial's main report on benchmarks.law: title, TL;DR and the score table

/ Overview

A contract leaves Word, goes through an editor, and comes back. Did it survive? The trial answers that for thirteen editors, with LibreOffice as a baseline, using each editor’s own import and export code, not a demo: a purpose-built adversarial document goes in, the output is scored construct by construct, and Microsoft Word opens every result.

/ What it found

  • Three editors keep everything. SuperDoc, Docxodus and eigenpal score 100% on the 99-check corpus, keep all 35 package parts, and reproduce their own output byte for byte.
  • Two write malformed XML on a second pass. office-open and Docen drop a namespace binding when they re-import their own output.
  • Popularity does not predict fidelity. The two most-starred projects score 85.9% and 20.6%.
  • The one that reports its losses is the one that scores last. Plate names every construct it drops, and by default refuses a document it cannot keep, rather than writing a degraded one.

Eight reports cover serialization by namespace, pass-through, malformed parts, rendering against Word’s pixels, and ten hostile packages (zip bombs, external references, scripts) that test what each editor refuses.

/ The rules

benchmarks.law is the standard I would want as a buyer, written down before any result existed.

  • No invitation required. Tools are tested whether or not the vendor agrees.
  • No quiet exits. A result stands once it is run. A vendor may reply, and the reply is printed beside the finding.
  • No machine judges. A language model never decides whether another tool got it right.

Every figure is generated from the measurement, every release moves each editor to its newest version that is at least five days old, and a change from one release to the next is reproduced twice before it is published.

/ Disclosure

I also write Jubarte, a DOCX engine. It is not one of the thirteen; its run on the hostile packages is a separate report.