Skip to content
epitometool

HTML table generator

Generators

Build clean, semantic HTML table markup from an editable grid with header, caption, border, and stripe options — every cell escaped and a live preview.

Updated

Dimensions & options

Cell content

HTML

Preview

Header 1 Header 2 Header 3
Cell 2,1 Cell 2,2 Cell 2,3
Cell 3,1 Cell 3,2 Cell 3,3

Quick start

How to generate an HTML table

Set the grid size, edit the cells, copy semantic table markup — all in your browser.

  1. Step 1
    Set dimensions

    Choose the number of rows and columns and toggle the header, border, and stripe options.

  2. Step 2
    Edit the cells

    Type content into each cell; the preview and HTML update live.

  3. Step 3
    Copy the markup

    Copy the clean, escaped HTML table and paste it into your page.

In-depth guide

Generating clean HTML tables

HTML tables remain the correct way to present two-dimensional, tabular data — schedules, pricing grids, comparison charts. Hand-writing the nested <table>, <tr> and <td> tags is tedious and error-prone. This generator builds well-indented, semantic markup from a grid you edit in the browser, escaping every value so the output is safe to paste anywhere.

When to use a table (and when not to)

Use a <table> only for genuinely tabular data — rows and columns that have meaning together, like a price list or a timetable. Tables are the semantically correct, accessible choice there.

  • Do use tables for data with row and column relationships.
  • Do not use tables for page layout — that is what CSS grid and flexbox are for.
  • Always include a header row so screen readers can announce which column a cell belongs to.

Step by step

  1. Set the number of rows and columns — the editable grid resizes while keeping the text you have entered.
  2. Toggle First row is a header to emit a <thead> with <th> cells.
  3. Optionally add a caption and choose the bordered or striped classes for later CSS styling.
  4. Click any cell and type its content. The preview updates live alongside the HTML.
  5. Copy the generated markup and paste it into your page.

Common pitfalls

  • Skipping the header. A table without <th> cells is far harder for assistive technology to navigate. Keep the header option on unless the data truly has no headings.
  • Inlining styles. This generator deliberately emits classes, not inline style attributes, so your stylesheet stays in control. Define .table-bordered and .table-striped in your CSS, or rely on a framework that already does.
  • Pasting unescaped data. If you build tables by hand, characters like < and & can break the markup. Here every value is escaped automatically.

Privacy

The table markup and its live preview are generated entirely in your browser from the cells you type. No table data is uploaded, logged, or sent to any server — you can confirm this in your browser's Network panel, where no requests appear while you build the table.

Frequently asked questions

Does this generator upload my table data?

No. The markup is built in your browser from the cells you type, and the live preview renders that same string locally. Nothing is sent to a server — verify in DevTools → Network that no requests fire.

Is the generated HTML safe to paste into my site?

Yes. Every cell, header, and caption value is HTML-escaped before it goes into the markup, so characters like <, >, & and quotes become entities and cannot inject scripts or break your layout. The output is clean, semantic <table>/<thead>/<tbody> markup.

What does the 'first row is a header' option do?

When enabled, the first row is emitted inside <thead> using <th> cells instead of <td>, which is the correct semantic structure for a table with column headings. Screen readers and browsers use <th> to associate data cells with their headers.

What are the bordered and striped classes for?

They add class="table-bordered" and/or "table-striped" to the <table> element so you can style it with your own CSS or a framework like Bootstrap. The generator does not inline any styles, keeping the markup framework-agnostic; the on-page preview applies its own styling just for display.

Can I edit individual cell text?

Yes. The grid under the options is fully editable — click any cell and type. Header cells are highlighted when the header option is on. Adjust the row and column counts to resize the grid while keeping the content you have already entered.

What is the maximum table size?

The editor supports up to 12 rows and 12 columns, which covers most hand-built tables. For larger datasets you would normally generate the markup programmatically from your data source rather than typing each cell.

Keep exploring

More tools you'll like

Hand-picked utilities that pair well with the one you're on — all free, client-side, and zero-signup.