Skip to content
MITTypeScriptBrowser · Node · Edge

Read any office document.
Convert it to anything.

Ream parses Word, Excel, PowerPoint and PDF — including the legacy .doc / .xls / .ppt — and writes PDF, SVG, HTML, Markdown, DOCX or XLSX. In the browser, straight from the ECMA-376 and ISO 32000 specifications. No LibreOffice, no headless Office, no commercial SDK.

Reads · seven formats in
.docx.xlsx.pptx.pdf.doc.xls.ppt
Ream.parse()→ FlowDoc
Writes · six formats out
.pdf.svg.html.md.docx.xlsx

Built from the spec, in the browser

One parse, any target — the architecture in six pieces.

From the spec

Built directly from ECMA-376 (OOXML) and ISO 32000 / 19005 (PDF / PDF/A) — not a wrapper around LibreOffice, headless Office, or any commercial SDK.

Browser-first

Pure TypeScript on Uint8Array in and Uint8Array out — zero node:* imports on the conversion path. The same code runs in the browser, Node, serverless and edge.

Seven formats in

The OOXML trio plus .pdf and the legacy binary .doc / .xls / .ppt (97–2003). A PDF comes back as the document it was — its columns, tables, figures and its own faces — and a password-protected package opens with its password.

Real typography

Type0 + CIDFontType2 embedding with subsetting, Knuth–Plass line breaking, Liang hyphenation, OpenType ligatures and kerning, BiDi and Arabic joining.

Compliant PDF

PDF/A-1/2/3 (a/b/u) and PDF/UA-1 — all veraPDF-validated — plus tagged PDF, digital signatures and AES-256 encryption.

One parse, any target

Ream.parse(bytes) reads once into a format-neutral interlayer; convert renders PDF, SVG, HTML, Markdown, DOCX or XLSX from it. Formats plug in as adapters.

Docs for AI: llms.txtBuilt from ECMA-376 & ISO 32000