Skip to content
Apertura
Fidelity

Measured against Office, not against our own expectations

A viewer that claims perfection loses the deal the moment somebody drops in their worst file. So here is the method, the number it produces, and the list of things that are wrong.

~1,500
Documents in the corpus
restored from source, never committed
79.3%
Formula cells agreeing with Excel
of comparable cells
0
Runtime dependencies
in every package
733
Tests
run on every change
Method

How the number is produced

There is no human judgement anywhere in the measurement, and no way for it to flatter us.

A corpus of real files, not fixtures we wrote

About 1,500 third-party documents and workbooks, collected from Common Crawl derivatives and from the test suites of pandoc, LibreOffice, POI, python-docx, PhpSpreadsheet, ExcelJS and others. Files written by applications, accepted by Office, and not chosen by us for being easy.

Office itself is the reference

Word exports each document to PDF; the pages are read back and compared with what we render, page by page. PowerPoint does the same for presentations. There is no human judgement in the measurement and no way for it to flatter us.

Ink against ink, not words against words

For presentations the headline number is how much of the drawn ink lands in the right place, not whether the words exist. A blank slide passes any test that only counts words; it fails this one.

Every formula is a labelled example

A workbook carries the value Excel computed next to the formula that produced it — about ten thousand labelled examples that need no Excel to check against.
The ceiling

Why this will never be pixel-perfect

Not a caveat buried in a footnote — it is the central design trade and worth understanding before you adopt anything.

Word stores a flow of paragraphs and computes where the pages break using its own text measurement, its own justification rules and its own rounding. A browser does that work too, and it does not do it identically. Reproducing Word exactly would mean shipping a layout engine instead of using the one already in the page — which is what the expensive server-side products do, and why they cost what they cost.

  • This is not pixel-perfect Word, and it never will be. The browser lays out text, and its line breaking is not Word’s.
  • What is achievable — and what is measured — is that the content is all there, in the right order, correctly styled, with nothing missing, overlapping or garbled.
  • If your requirement is a legally identical reproduction for print or signature, convert to PDF on a server. That is a different product and we will say so.
  • If your requirement is that a person can read the document, search it, select from it and trust what they see, that is this one.
The number that actually matters
Not the average similarity — the count of documents that come out broken. A page break three lines early is invisible to a reader. A missing table, a blank slide or garbled text is not, and that is the category being driven to zero.
Known limitations

What is wrong right now, by format

Published rather than left for you to find. Everything here is measured across the corpus, not guessed at.

Word .docxStable

  • Tab stops are approximated; explicit stop positions are not yet honoured.
  • Text wrapping around anchored drawings uses CSS floats — close to Word’s wrap polygons, but not identical.
  • East Asian numbering formats fall back to decimal.
  • Embedded fonts are declared but not yet decrypted and installed.
  • Encrypted documents are detected but cannot be opened.

Excel .xlsxStable

  • The formula library covers 300 functions; the long tail reports #NAME? rather than failing.
  • There is no dependency graph, so a workbook cannot be recalculated as a whole — only individual formulas evaluated on demand.
  • Charts are placed and labelled but not yet drawn.

PowerPoint .pptxBeta

  • SmartArt without a cached drawing falls back to the text of its data model.
  • WordArt warping (a:prstTxWarp) renders as straight text at the declared size.
  • Three-dimensional scenes (a:scene3d, a:sp3d) render flat, in place.
  • Animations and transitions are ignored — this is a viewer, not a player.
Corpus

Send us the file that breaks

It joins the corpus, which is the difference between a fix and a fix that stays. Every document ever reported is re-measured on every change, so nothing that was fixed quietly regresses.

Try yours in the demoTurnaround commitments