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.
w:tbl

Tables

Complete guide to OOXML tables - structure, properties, and implementation gotchas.

Tables in OOXML are built from rows (w:tr) and cells (w:tc). The spec dedicates 200+ pages to tables, but most implementations only need a subset.

Structure

w:tbl (table)
├── w:tblPr (table properties)
│   ├── w:tblW (table width)
│   └── w:tblBorders (borders)
├── w:tblGrid (column grid)
│   └── w:gridCol (column definition)
└── w:tr (table row)
    └── w:tc (table cell)
        ├── w:tcPr (cell properties)
        └── w:p (content)

Example

<w:tbl>
  <w:tblPr>
    <w:tblW w:w="5000" w:type="dxa"/>
    <w:tblBorders>
      <w:top w:val="single" w:sz="4" w:color="000000"/>
      <w:left w:val="single" w:sz="4" w:color="000000"/>
      <w:bottom w:val="single" w:sz="4" w:color="000000"/>
      <w:right w:val="single" w:sz="4" w:color="000000"/>
      <w:insideH w:val="single" w:sz="4" w:color="000000"/>
      <w:insideV w:val="single" w:sz="4" w:color="000000"/>
    </w:tblBorders>
  </w:tblPr>
  <w:tblGrid>
    <w:gridCol w:w="2500"/>
    <w:gridCol w:w="2500"/>
  </w:tblGrid>
  <w:tr>
    <w:tc>
      <w:p><w:r><w:t>Cell 1</w:t></w:r></w:p>
    </w:tc>
    <w:tc>
      <w:p><w:r><w:t>Cell 2</w:t></w:r></w:p>
    </w:tc>
  </w:tr>
</w:tbl>

Implementation Notes

tblGrid is required (Word)

The spec marks w:tblGrid as optional. Word crashes without it. Always include it.

Width calculation varies (Word, LibreOffice)

When w:gridCol elements have explicit widths, w:tblW may be ignored. The actual table width becomes the sum of column widths.

Nested tables

Tables can be nested inside w:tc elements. Each nested table is a complete w:tbl element with its own grid.

Schema

ElementTypeDescription
w:tblProptionalTable properties (width, alignment, borders)
w:tblGridrequired*Column grid definition
w:tr1+Table rows