Comparison Table
Comparison Table is a first-party, self-hosted widget for pricing tiers, product editions, service packages, or any other side-by-side feature list. It makes no remote request and stores only the content configured in its widget draft.
Plans and feature rows
Choose between two and six plan columns. Each plan has a name and an optional button label and URL. Button URLs may be a secure https:// address or a relative same-site address such as /pricing; insecure, credential-bearing, protocol-relative, and executable URLs are discarded.
Add between one and 50 feature rows. A row has a label and one of three cell types:
- Text for short descriptions such as “Community support”
- Included / not included for a clear check state
- Emphasized value for prices, quantities, limits, or other important values
Values are plain text. HTML and scripts are never interpreted. A plan can be highlighted, but no plan is highlighted by default and the starter buttons are inert until URLs are supplied.
Responsive and accessible output
At wide widths the widget uses a semantic table with column and row headers. With Stack plans on mobile enabled, narrow screens show one plan card at a time in source order, with each feature represented by a definition term and value. Only the active representation is exposed to assistive technology. Disabling the setting retains the table inside a contained horizontal scroll area.
Templates and transfers
Use Pricing Comparison for a three-plan pricing starter or Feature Comparison for a focused two-edition starter. Both remain ordinary editable drafts.
The Import / Export workspace supports complete Comparison Table JSON and CSV round trips. Stable widget and row keys preserve identity and order. Imports update drafts only; they never publish automatically, and a locally edited imported draft causes a conflict instead of being silently overwritten.