Thirteen DOCX editors, one hostile document, 99 checks.
Every editor's code was downloaded, its own import → export path was run headlessly over a purpose-built 35-part adversarial DOCX, and the output was diffed against the input at part, element, attribute and text level. Then the output was fed back through the same editor, re-opened in LibreOffice, and opened in Microsoft Word. No claim below rests on a README.
Corrected 2026-11-01. Three checks failed rewrites that Word itself makes on save: a text box's fallback copy rewritten from its DrawingML, simple fields saved as complex fields, and an embedded HTML chunk imported into the body. eigenpal's team traced the first one. The scorer was fixed and every editor rescored; eigenpal moves from 98.5% to 100.0%. The correction is in the main report.
Round-trip scorecard
Weighted score across the 99 checks; critical features are the 29 constructs a legal or publishing workflow cannot lose. "Second pass" feeds each output back through the same editor and scores it against its own first pass. "Word opens" is the raw first-pass output opened in Word 16.115, before any repair. LibreOffice is the calibration floor, not a candidate. Every score and count in the table, the tiles and the text above is generated from the editors_trial release's own out/facts.json, verified against its manifest; the findings below are the main report's, and the method, the corpus and every finding are in the main report, the field and its context on the trial hub and the vendors page.
| Tool | Weighted | Critical | Text kept | Parts | Failed | Second pass | Word opens | |
|---|---|---|---|---|---|---|---|---|
| SuperDoc V2 | 100.0% | 29 / 29 | 100.0% | 35 / 35 | 0 | byte-identical | opened | |
| Docxodus | 100.0% | 29 / 29 | 100.0% | 35 / 35 | 0 | byte-identical | opened | |
| eigenpal | 100.0% | 29 / 29 | 100.0% | 35 / 35 | 0 | byte-identical | opened | |
| GenOffice | 98.5% | 28 / 29 | 98.8% | 35 / 35 | 1 | byte-identical | opened | |
| Folio | 97.5% | 28 / 29 | 100.0% | 35 / 35 | 2 | byte-identical | refused | |
| office-open | 93.5% | 25 / 29 | 100.0% | 35 / 35 | 5 | 32.2% on the second pass | refused | |
| Docen | 91.5% | 24 / 29 | 99.4% | 35 / 35 | 7 | 32.2% on the second pass | refused | |
| Apryse WebViewer 12.2.1 (closed source, trial key) | 89.9% | 25 / 29 | 100.0% | 30 / 35 | 9 | stable, not byte-identical | opened | |
| WordCraft | 85.9% | 21 / 29 | 97.0% | 32 / 35 | 12 | stable, not byte-identical | opened | |
| canvas-editor + plugin | 24.6% | 7 / 29 | 88.8% | 14 / 35 | 75 | stable, not byte-identical | opened | |
| Fidus Writer | 23.6% | 7 / 29 | 71.0% | 11 / 35 | 77 | stable, not byte-identical | refused | |
| docs.plus | 21.1% | 7 / 29 | 90.5% | 11 / 35 | 79 | stable, not byte-identical | opened | |
| Plate.js | 20.6% | 6 / 29 | 90.5% | 11 / 35 | 79 | stable, not byte-identical | opened | |
| LibreOffice (baseline) | 86.9% | 23 / 29 | 100.0% | 25 / 35 | 12 | stable, not byte-identical | opened |
Read the floor first. LibreOffice, converting headlessly, scores 86.9%. An open-source editor that cannot beat LibreOffice on a Word-authored document is not a fidelity tool, whatever its star count says.
What the trial found
- Three tools lose nothing. SuperDoc V2, Docxodus and eigenpal pass all 99 checks, keep all 35 parts, and reproduce their own output byte for byte on a second pass. Docxodus gets there with 25 parts untouched and 10 re-serialised, none changed, none dropped.
- Four outputs cannot be opened by Word. Folio, office-open, Docen and Fidus Writer produce files Word 16.115 refuses. Three of them fail a static check: Fidus Writer has eleven schema violations, and office-open and Docen leave five dangling relationship ids each, so the chart never draws. Folio passes every static check and Word still refuses it.
- Two editors corrupt their own output. office-open and Docen are not idempotent: re-importing their first pass yields
word/document.xmlwith an unbounda:prefix. The file looks fine, opens in LibreOffice, and breaks only when fed back in. - Two editors say what they lost. SuperDoc names a diagnostic code for each drawing family it fails closed on. Plate.js scores last but emits 38 typed diagnostics and, under its default
lossPolicy: 'reject', refuses a document it cannot carry losslessly. It is also the only editor that refuses the malformed corpus instead of reproducing the damage. - Nobody repairs anything. Handed a corpus carrying all twelve defect classes, every editor either reproduced the damage or dropped the part that carried it. Docxodus ships a repair funnel, and it repairs a different set of defects.
- Stars predict nothing. The two most-starred projects, WordCraft and Plate, score 85.9% and 20.6%, both below the LibreOffice floor of 86.9%.