Guide to creating and managing accessible tables in CMS Lite.
To support responsive design and meet web accessibility standards, follow these best practices when creating tables in CMS Lite.
Example: Don’t use a table to create extra columns on a page
Learn about creating accessible tables and summary information in tables
Every table must include a clear and descriptive caption. The caption is the table's title, and appears above the heading row. Screen readers announce this first when reading a table, giving users immediate context.
Screen readers can skip around a page, so captions need to make sense on their own, without relying on the text above the table. Captions also help sighted users scan the page and understand what the table shows.
Use a caption that is specific and meaningful, not vague. A good caption still makes sense if the table is copied or shared on its own.
For example:
If you skip these steps, features like Sort and Search may not work, and your table will not meet accessibility standards.
This is an example of a table with sort and search features:
Colour name (English) | Colour name (French) |
---|---|
red | rouge |
orange |
orange |
yellow |
jaune |
green |
vert |
The way you structure your table affects how screen readers interpret the content. Use the correct type of headers based on how your data is organized.
Use headers only in the first row when the entire row is meant to be read together for context. Each cell in the row is related to the others, and the row doesn't depend on the first column to make sense. The first column is just one part of the information, not a label for the row.
Example of a table with a header row only:
The following table doesn’t need a header column because each row is not about the completion date. The date is just one detail. If you removed it, the row would still make sense. You just wouldn’t know when the course was completed.
Completion date | Course name | Status |
---|---|---|
March 5, 2020 | Designing for inclusion | Complete |
March 23, 2024 | Plain language in practice | In progress |
October 13, 2025 | Writing for web accessibility | Not started |
Use both a header row and column when the first column labels the data in each row. Each cell gives standalone context when compared to the first row and first column.
Example of a table with headers in the first row and column:
For example, in the following table, each row is about a specific city. If you remove “Vancouver,” you don’t know what the data represents. The first column acts as a label for the row, so it must be marked as a header to give users full context.
January | February | March | |
---|---|---|---|
Vancouver | 5 | 6 | 8 |
Toronto | -2 | 0 | 4 |
Halifax | -4 | -3 | 2 |
Watch a tutorial video to help you understand how to create and adjust tables in CMS Lite.
Work with tables in CMS Lite
Step-by-step instructions for B.C. government content editors on how to create and modify tables using the CMS Lite application.
Follow these steps to insert a table onto a CMS Lite page:
Element | Instructions |
---|---|
Rows |
|
Width |
|
Columns |
|
Height |
|
Headers |
|
Cell spacing |
|
Border size |
|
Cell padding |
|
Alignment |
|
Table style |
|
Enable sort and search |
|
Enable pagination elements |
|
Caption |
|
Summary |
|
The Table Properties will be closed and the table will be inserted at the cursor location.
If copying tables from another application, such as Word, make sure to modify the table properties to comply with the B.C. government web standards.
Set column size
Use Cell Properties to set the width of each column to a uniform percentage (%).
This hex code has been tested and meets accessibility standards. Only this code should be used on the gov.bc.ca site.
See Interface Guidelines for information about removing, moving or adding paragraphs between panels
If the table does not display the Sort and Search features, follow these steps:
If you have copied the table from Excel and the Sort and Search features aren't working, you may need to remove the filter from the Excel table (shown in Excel as arrows in the table headers):
If table alignment seems off: