Skip to content
Apertura
.docxWordprocessingMLStable

Word in the browser

Paginated the way Word paginates — by measuring, not by guessing.

Word stores a flow of paragraphs, not pages. Apertura measures the content as it is actually rendered and breaks pages accordingly, which is the only way a page number in a footer can be correct. Only the pages near the viewport stay in the DOM, so a thousand-page document opens as fast as a five-page one.

sample.docx
0 requests · nothing uploaded
Loading the viewer…
formatstatusidleopened inrendered bythis browser
What is supported

Everything below is parsed from the file, not approximated

Text and styles

Paragraphs and runs with the complete w:rPr and w:pPr property sets, and the six-layer style cascade: document defaults → table style → numbering → paragraph style chain → character style chain → direct formatting. Themes, including themeColor with tint and shade, and theme font slots.

Structure

Sections with independent page setup, multi-column layouts, headers and footers (default, first page, even pages), footnotes placed on the page that references them, endnotes, threaded comments, bookmarks, hyperlinks and content controls.

Tables

The full grid, gridSpan and vMerge merging, repeating header rows, cell margins and borders, and all thirteen conditional formatting blocks of a table style with correct precedence.

Lists

Abstract definitions and instances, per-instance level overrides and startOverride, multi-level %1.%2 patterns, lvlRestart, legal numbering, and the number formats: decimal, Roman, alphabetic including Cyrillic, ordinal, cardinal and ordinal text, Chicago marks, bullets. Numbers are computed and emitted as text, so they survive virtualisation, printing, selection and search.

Graphics

DrawingML pictures with cropping, rotation and flipping; anchored drawings with text wrapping; text boxes; legacy VML shapes; symbol fonts mapped to Unicode.

Fields and equations

PAGE, NUMPAGES, SECTIONPAGES and PAGEREF resolved after pagination; HYPERLINK with URL scheme validation; TOC rendered from its cached result. OMML equations converted to MathML: fractions, radicals, scripts, n-ary operators with correctly placed limits, delimiters, matrices, accents, functions.

Revisions

Insertions and deletions, shown as accepted by default or as markup on request.
Known limitations

What we get wrong, published rather than discovered

A viewer that claims perfection loses the deal the moment somebody drops in their worst file. This list is the alternative.

How this is measured
  • 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.
Found another one?
Send the file. It joins the corpus, which is the difference between a fix and a fix that stays.
Using it

The viewer, and the parser on its own

The parser produces a model that knows nothing about CSS or the DOM, so the same call runs in Node for extraction, search and conversion.

import { DocumentViewer } from '@apertura/react';

<DocumentViewer file={file} fit="width" />;

Other formats

ExcelStable

Shows what the author saw, not what the file stores.

PowerPointBeta

A fixed canvas, which is why it can get very close.