Build a semantic HTML table
Edit column headers and rectangular rows of cells. Optionally make the first cell a row header.
- Runs in your browser
- No upload
- Check before download
Build a semantic HTML table
Edit column headers and rectangular rows of cells. Optionally make the first cell a row header. Export HTML with a caption, scope and explicit header associations. Inputs stay escaped text, never HTML. Simple one-level headers only; no merged cells and no accessibility certification.
Synthetic example
Ready
Profile
Print: Liberation Sans, selectable Latin/Greek/Cyrillic where the actual font encodes it; no combining marks, RTL shaping, CJK or emoji guarantee. Unsupported glyphs refuse PDF while original backups remain. Fountain layout is readable proportional 12pt, not certified industry typography. MathML rendering depends on the browser.
Live controls run only while the tab is active. Hiding, leaving or suspending pauses; reset/edit stops the attempt. No background-time, wake, autoplay, camera, microphone or recording promise. Space and arrows work inside the focused prompter.
Limits
30,000 UTF-16 units total; 100 rows, 10 columns/1,000 cells; 50 rehearsal sections; 2,000 math characters, 1,000 nodes/depth32; 40 PDF pages/8MiB output; 2MiB backup; 20s worker. PNG ≤1MiB/1024², static 8bit. Overflow is refused, never silently removed. CSV protects user text beginning with formula-like symbols using an apostrophe; computed numbers stay numeric. The JSON backup preserves the exact original text.
Check dates, finite numbers, row lengths and the named grammar. Shorten overflowing text or change paper; unsupported font/script/logo/grammar is refused. Cancel/reset and retry; preserve your original backup.
All text, contacts, dates and local images stay in this browser. No sending, tracking of content, storage, accounts or automatic URL requests. Download a backup explicitly before closing.
How to use
- Prepare the input
Enter a caption, one header for each column, and rectangular rows of text. If the first cell identifies each row, turn on row headers. This is a simple data table with one level of headers. Merged cells and nested header groups are not supported.
- Try the worked example
Use the headers Item and Quantity with one row, Pencils and 3. Generate: the HTML has two column headers and one data row. With row headers turned on, Pencils is a row-header cell. Check the caption, scope and headers associations.
- Check and save
Save the HTML and check it in the page where you plan to use it, including keyboard and assistive-technology use where that matters. Literal input such as <b> stays escaped text and is not executable markup. Keep a backup before you close the page.
Questions
Does it certify that my table is accessible?
No. It produces a caption, scope and explicit header associations for the simple structure it supports. A person still has to check that the header wording is meaningful, the reading order is right and the table works in the page around it.
Why is a row with fewer cells refused?
Every row must have exactly as many cells as there are headers, with up to 10 columns and 1,000 cells in 100 rows. Add an explicit empty text cell where that makes sense. The tool doesn't guess a missing value.
Can I enter HTML or combine cells?
Inputs are text and are escaped, so they are not interpreted as HTML. Colspan, rowspan and multilevel header structures are outside this profile. The export and the input backup stay local and are saved only when you ask.