Skip to content

Compare honestly, in a table people trust

Feature comparison table builder

A comparison table is one of the most useful blocks on a landing page or listing, and one of the easiest to get wrong. Enter your product and up to four alternatives that you name yourself, add feature rows, and mark each cell yes, no, partial or text. The builder exports accessible HTML, Markdown and CSV, draws a PNG you can share, and checks the table for the habits that make readers stop trusting it.

The tool never suggests or names products. Every alternative name and every cell is yours, so check each claim against the other product's public pages before you publish. Everything runs in your browser and nothing is stored.

Columns

The first column is your product. Name the alternatives yourself. The tool never suggests products.

Features

Row 1

Your product

Alternative A

Alternative B

Row 2

Your product

Alternative A

Alternative B

Row 3

Your product

Alternative A

Alternative B

Fairness check

  • Note

    Fewer than 3 feature rows. A short table is fine, but readers cannot judge fairness from so little.

  • Note

    Row 1 looks identical in every column, so it does not help a reader choose. Remove it or replace the cell with the detail that differs.

  • Note

    Alternative A, Alternative B still use the placeholder name. Name the real alternatives before you publish, and only state what you have checked against their public pages.

  • Check this

    Row 1 has an empty text cell. Fill it in or choose Yes, No or Partial.

Outputs

Accessible HTML

<table>
  <caption>Feature comparison: Your product, Alternative A, Alternative B</caption>
  <thead>
    <tr>
      <th scope="col">Feature</th>
      <th scope="col">Your product</th>
      <th scope="col">Alternative A</th>
      <th scope="col">Alternative B</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Starting price</th>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </tbody>
</table>

Markdown

| Feature | Your product | Alternative A | Alternative B |
| --- | --- | --- | --- |
| Starting price |  |  |  |

CSV

Feature,Your product,Alternative A,Alternative B
Starting price,,,

Share-ready image

A 2400 pixel wide PNG drawn in your browser. Add alt text that states the main finding when you post it.

How to use it

  1. Name the columns. The first column is your product. Replace the placeholder names Alternative A to D with the real alternatives you want to compare against, or remove columns you do not need.
  2. Add feature rows. Write one feature per row and set each cell to Yes, No, Partial or Text. Use Text for prices, limits and anything a tick cannot say.
  3. Read the fairness check. Fix any warning: a table where your column wins every row, rows that are identical across columns, a missing pricing row or empty text cells.
  4. Export. Copy the HTML, Markdown or CSV, or download a PNG. Add a source and a last-checked date near the table on your page.

What the generators and the checks do

The HTML output is a plain table element with a caption, column headers marked scope="col" and the feature name in each row marked scope="row". Those are the header-association techniques the W3C Web Accessibility Initiative describes in its tables tutorial, and they let screen readers announce which feature and which product a cell belongs to. Values are written as the words Yes, No and Partial, not as symbols alone, so meaning does not depend on colour or an icon. All text is escaped. The Markdown output escapes pipe characters, and the CSV output follows RFC 4180 quoting and prefixes any value that starts with =, +, - or @ with an apostrophe so a spreadsheet does not run it as a formula.

The fairness check ranks Yes as 2, Partial as 1 and No as 0. Text cells cannot be ranked, so a row that contains one is left out of the ranking. It warns when the first column beats every other column in every row, because a table with no concession is hard to believe. It notes rows where every column says the same thing, since they do not help anyone choose, and it warns when no row mentions price, plan or cost. It also reminds you when a placeholder name is still in use and when a text cell is empty.

These are rules of thumb about reader trust, not a legal review. The checker cannot know whether your claims are true, current or fair to the other product. Compare like with like, use only facts you have verified against public pages on a date you can state, and say "not published" where you could not find an answer.

Questions

Does the tool suggest which products to compare against?

No. You type the names of the alternatives yourself. By default the columns read Alternative A, B, C and D, and the tool never names or recommends a product.

Why does it warn when my product wins every row?

Readers tend to read a table where the author wins every row as marketing. Adding a row where another column does as well or better, or a real limit of your own product, makes the rest of the table more believable.

What makes the HTML table accessible?

It has a caption, header cells with scope="col" for products and scope="row" for features, and answers written as words. That lets assistive technology connect each cell to its feature and product.

Can I use the CSV in a spreadsheet safely?

Yes. Fields are quoted as RFC 4180 describes, and any value that begins with =, +, - or @ gets a leading apostrophe so it is read as text, not run as a formula.

How many alternatives can I add?

Up to four, so the table has at most five columns. More than that is hard to read on a phone and rarely helps a buyer decide.

Is my data stored or sent anywhere?

No. The table, the checks and the PNG are all produced in your browser, and nothing is uploaded.