ooxml.dev is an interactive reference for ECMA-376 (Office Open XML) — the standard behind .docx, .xlsx, and .pptx files. Built by the SuperDoc team, who implemented a native OOXML renderer from scratch. Features: live previews (edit XML, see it render in real-time using SuperDoc's native OOXML engine), implementation notes (documents real-world behavior where Microsoft Word diverges from the spec), semantic spec search (18,000+ spec chunks searchable by meaning via MCP server at api.ooxml.dev/mcp), and practical guides for paragraphs, tables, borders, bidirectional text, and document creation. The OOXML spec is 5,000+ pages of PDFs with no rendering guidance — this site bridges that gap with knowledge from people who actually implemented the spec. Covers WordprocessingML (the .docx subset). SuperDoc is open source at superdoc.dev. Built by Caio Pizzol (caiopizzol.com), Head of DX at SuperDoc.
styles.xml

Styles

How styling works in OOXML - style definitions, inheritance, and direct formatting.

OOXML uses a style system similar to CSS but with its own inheritance rules and quirks.

Style Types

TypeElementDescription
Paragraphw:style w:type="paragraph"Applied to entire paragraphs
Characterw:style w:type="character"Applied to runs within paragraphs
Tablew:style w:type="table"Applied to tables
Numberingw:style w:type="numbering"List formatting

Style Hierarchy

Formatting is resolved in this order (later wins): 1) Document defaults, 2) Style definition, 3) Direct formatting.

Style inheritance is complex

Paragraph styles can be w:basedOn other styles. Character styles can be linked to paragraph styles via w:link. Direct formatting always wins.

Example Style Definition

<w:style w:type="paragraph" w:styleId="Heading1">
  <w:name w:val="Heading 1"/>
  <w:basedOn w:val="Normal"/>
  <w:next w:val="Normal"/>
  <w:pPr>
    <w:spacing w:before="480" w:after="120"/>
  </w:pPr>
  <w:rPr>
    <w:b/>
    <w:sz w:val="48"/>
  </w:rPr>
</w:style>