Multi-level Table Markup Builder
Build bounded row and column header trees into escaped table markup with explicit associations for every data cell.
Loading tool…
How to use Multi-level Table Markup Builder
Publish a table whose meaning depends on several row and column headings. You supply both hierarchies and the exact text matrix; the tool derives spans, distinct header IDs and the complete ancestor list for each data cell. It produces reviewable source and a printable artifact without mounting user HTML or claiming that header wiring alone certifies accessibility.
- Author a caption and one-to-three-level row and column trees; leaves define matrix order.
- Enter a rectangular string matrix with one row and column for every corresponding leaf.
- Review per-cell header IDs and the generated spans, then test the final table with real readers and assistive technology.
Good to know
- At most 100,000 JSON characters, 100 tree nodes and 20 leaves per axis, three levels per axis and 400 data cells. Caption at most 200 characters, summary 1,000, header labels 100 and data strings 200. Unknown keys, duplicate JSON members and non-string matrix values are refused.
- A node has label and optional nonempty children. Leaves may have different depths. Source order controls visual order; repeated visible labels remain separate nodes with distinct generated IDs. The matrix must exactly match the row/column leaf counts.
- Generated data cells explicitly list all row and column ancestor IDs. Leaves use row/column scope; group associations use IDs instead of assuming a complete colgroup model. Rowspan/colspan values derive from the declared tree, not supplied markup.
- No arbitrary HTML, styles, scripts, dynamic sorting or data fetching is accepted. Document text refuses controls other than tabs and line endings. Very wide or deeply grouped tables may be better split; header meaning, real print fit and full accessibility require separate review. No WCAG certification is provided.
- Processing is local. Output is limited to 1,000,000 text characters unless a stricter file limit is stated.
Common questions
Do identical visible header labels collapse into one header?
No. A label such as “Morning” can belong to different groups. Each node has its own generated ID, and every data cell refers to the complete path that gives the label its context.
Is this input sent to a server?
No. The application processes this input inside your browser tab and does not save it to persistent storage.
Keep going with related tools
All accessibility →Semantic HTML Table Generator
Convert a simple CSV table into escaped HTML with a caption and explicit header scope.
AccessibilityExplicit Table Header Association Auditor
Inspect explicit headers references and scope declarations within each static HTML table.
DataMultirow CSV Header Flattener
Combine declared header levels into single field names with explicit blank-fill and collision policies.
AccessibilityKeyboard Section Widget Builder
Export an original standalone tabs or accordion widget from bounded plain text, with keyboard behavior and source-bound script policies.