Table Accessibility
Properly structured tables allow screen reader users to navigate and understand tabular data.
Why Table Structure Matters
Screen readers rely on table markup to:
- Announce row and column headers
- Navigate cell by cell
- Understand data relationships
- Provide context for each cell
Without proper structure, screen readers may read tables as a continuous stream of text, making data incomprehensible.
Table Components
Header Cells
Header cells (TH) identify columns or rows:
- Column headers: Describe what’s in each column
- Row headers: Describe what’s in each row
- Both: Complex tables may have both
Data Cells
Data cells (TD) contain the actual information.
Caption and Summary
- Caption: Visible title for the table
- Summary: Description of table structure (for complex tables)
Setting Up Table Accessibility
Define Header Cells
Select the Table
Click anywhere in the table
Open Table Properties
Right-click → Table Properties or Tools → Accessibility → Table Structure
Identify Headers
Select header cells and mark them as headers:
- First row as column headers
- First column as row headers
- Or both
Set Header Scope
Define what each header describes:
- Column: Header applies to cells below
- Row: Header applies to cells to the right
Apply Changes
Click OK to save
Header Scope
Column Headers
Headers that label columns:
| Name | Email | Phone | ← Column headers
|---------|-----------------|-------------|
| Alice | alice@mail.com | 555-1234 |
| Bob | bob@mail.com | 555-5678 |Set scope to Column for these headers.
Row Headers
Headers that label rows:
| | Q1 | Q2 | Q3 | Q4 |
|---------|-------|-------|-------|-------|
| Sales | $100K | $120K | $115K | $140K | ← "Sales" is row header
| Costs | $80K | $85K | $82K | $90K | ← "Costs" is row headerSet scope to Row for the first column.
Both Headers
Tables with headers in both directions:
| | 2022 | 2023 | 2024 |
|-----------|---------|---------|---------|
| Revenue | $1.2M | $1.5M | $1.8M |
| Expenses | $0.9M | $1.0M | $1.1M |
| Profit | $0.3M | $0.5M | $0.7M |Both the first row and first column are headers.
Complex Tables
Spanning Cells
For cells that span multiple columns or rows:
- Select the spanning cell
- Set Row Span or Column Span values
- Ensure headers still apply correctly
Nested Headers
For multi-level headers:
| | 2023 | | 2024 | |
| | Q1-Q2 | Q3-Q4 | Q1-Q2 | Q3-Q4 |
|--------------|--------|-------|--------|-------|
| Product A | $50K | $60K | $55K | $70K |Use the Headers attribute to associate data cells with the correct headers.
Irregular Tables
For tables that don’t follow a regular pattern:
- Add unique IDs to header cells
- Reference IDs in the Headers attribute of data cells
- This explicitly links each cell to its headers
Complex tables are harder to make accessible. Consider splitting into simpler tables when possible.
Table Summaries
For complex tables, add a summary:
- Select the table
- Open Table Properties
- Enter a Summary describing the table’s organization
- Screen readers announce this before reading the table
Example summary: “Sales data organized by product (rows) and quarter (columns), with yearly totals in the final column.”
Auto-Fix Table Issues
Penvio can automatically fix common table problems:
- Click Tools → Accessibility → Fix Table Structure
- Select the table to fix
- Review suggested changes:
- Convert first row to headers
- Add missing header scope
- Fix irregular structure
- Click Apply
Validating Tables
Accessibility Checker
- Run Tools → Accessibility → Check Accessibility
- Look for table-related issues:
- Tables without headers
- Missing header scope
- Irregular table structure
- Click issues to locate and fix
Manual Testing
Navigate the table with a screen reader:
- Enter the table
- Move cell by cell
- Verify headers are announced
- Check that data makes sense in context
Tables to Avoid
Layout Tables
Don’t use tables for visual layout. Instead:
- Use proper document structure
- Mark layout tables as artifacts if unavoidable
Nested Tables
Tables within tables cause confusion:
- Flatten to a single table
- Or split into separate tables
Tables as Images
Don’t insert table images:
- Screen readers can’t read image content
- Recreate as a real table
Best Practices
| Practice | Reason |
|---|---|
| Use simple structures | Easier to navigate and understand |
| Mark all headers | Provides context for data |
| Set header scope | Clarifies header relationships |
| Add captions | Visible table identification |
| Add summaries for complex tables | Helps users understand structure |
| Avoid empty cells | Use “N/A” or ”-” instead |
| Avoid merged cells when possible | Simplifies structure |
Tips
- Keep tables as simple as possible
- Use captions to identify tables
- Test with screen readers
- Consider if a table is the best format for your data
- Split complex tables into multiple simpler tables
- Don’t use tables for visual layout
Next Steps
- Reading Order - Ensure tables appear in the correct reading sequence
- Accessibility Checker - Validate table structure automatically
- PDF Standards - Ensure tables meet PDF/UA accessibility standards