Data table with TD HEADERS attribute Screen reader compatibility

Last updated: October 16, 2016

Expected Result: works in a screen reader

Actual Result: causes problems in 9 screen reader / browser combinations

WCAG Technique: H43: Using id and headers attributes to associate data cells with header cells in data tables

Code used for this test:


        <table>
        <tr>
            <th rowspan='2' id='h'>Homework</th>
            <th colspan='3' id='e'>Exams</th>
            <th colspan='3' id='p'>Projects</th>
        </tr>
        <tr>
            <th id='e1' headers='e'>1</th>
            <th id='e2' headers='e'>2</th>
            <th id='ef' headers='e'>Final</th>
            <th id='p1' headers='p'>1</th>
            <th id='p2' headers='p'>2</th>
            <th id='pf' headers='p'>Final</th>
        </tr>
        <tr>
            <td headers='h'>15%</td>
            <td headers='e e1'>15%</td>
            <td headers='e e2'>15%</td>
            <td headers='e ef'>20%</td>
            <td headers='p p1'>10%</td>
            <td headers='p p2'>10%</td>
            <td headers='p pf'>15%</td>
        </tr>
        </table>
    

Reliability Trend

This graph shows reliability over time for this code in NVDA, JAWS, WindowEyes and Voiceover. Other screen readers don't have enough historical data yet to plot trends.

100%80%60%40%20%0%201467%201557%201657%

Change History

Last updated: October 16, 2016

Screen readerBrowserModeNotesWhat the user hears
OK NVDA 2016.2FF48 ReadingHeaders associated with the cell read out before column number. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Row 3, homework, column 1, fifteen percent. Exams one, column 2, fifteen percent. Exams two, column 3, fifteen percent. Exams final, column 4, twenty percent. Projects one, column 5, ten percent. Projects two, column 6, ten percent. Projects final, column 7, fifteen percent.
Fail NVDA 2016.2IE11 ReadingOnly first row TH read, table structure incomprehensible. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Homework, row 3, homework, column 1, fifteen percent. Exams, column 2, fifteen percent. Exams, column 3, fifteen percent. Exams, column 4, twenty percent. Projects, column 5, ten percent. Projects, column 6, ten percent. Projects, column 7, fifteen percent.
OK NVDA 2015.2FF41 ReadingHeaders associated with the cell read out before column number. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Row 3, homework, column 1, fifteen percent. Exams one, column 2, fifteen percent. Exams two, column 3, fifteen percent. Exams final, column 4, twenty percent. Projects one, column 5, ten percent. Projects two, column 6, ten percent. Projects final, column 7, fifteen percent.
Fail NVDA 2015.2IE11 ReadingOnly first row TH read, table structure incomprehensible. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Homework, row 3, homework, column 1, fifteen percent. Exams, column 2, fifteen percent. Exams, column 3, fifteen percent. Exams, column 4, twenty percent. Projects, column 5, ten percent. Projects, column 6, ten percent. Projects, column 7, fifteen percent.
OK NVDA 2014.1FF41 ReadingHeaders associated with the cell read out before column number. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Row 3, homework, column 1, fifteen percent. Exams one, column 2, fifteen percent. Exams two, column 3, fifteen percent. Exams final, column 4, twenty percent. Projects one, column 5, ten percent. Projects two, column 6, ten percent. Projects final, column 7, fifteen percent.
Fail NVDA 2014.1IE11 ReadingOnly first row TH read, table structure incomprehensible. Table with 3 rows and 7 columns, row 1 column 1, homework. Column 2, exams. Column 5, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Homework, row 3, homework, column 1, fifteen percent. Exams, column 2, fifteen percent. Exams, column 3, fifteen percent. Exams, column 4, twenty percent. Projects, column 5, ten percent. Projects, column 6, ten percent. Projects, column 7, fifteen percent.
OK JAWS 17.0.2619FF48 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, homework, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK JAWS 17.0.2619IE11 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK JAWS 16.0.4350FF41 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, homework, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK JAWS 16.0.4350IE11 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK JAWS 15.0.9023FF41 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, homework, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK JAWS 15.0.9023IE11 ReadingHeaders associated with the cell read out when Ctrl+Alt+Numpad+5 pressed. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams). Projects (column 3, row 1, projects). Blank (column 1, row 2, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
Fail JAWS 14.0.9002FF41 ReadingEach preceding TH in a header row read as header when Ctrl+Alt+Numpad+5 pressed in TH cell. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, homework, exams). Projects (column 3, row 1, homework exams, projects). Blank (column 1, row 2, homework, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams one, two). Final (column 4, row 2, exams one two, final). One (column 5, row 2, projects one two final, one). Two (column 6, row 2, projects one two final one, two). Final (column 7, row 2, projects one two final one two, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
Fail JAWS 14.0.9002IE11 ReadingEach preceding TH in a header row read as header when Ctrl+Alt+Numpad+5 pressed in TH cell. Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, homework, exams). Projects (column 3, row 1, homework exams, projects). Blank (column 1, row 2, homework, blank). One (column 2, row 2, exams, one). Two (column 3, row 2, exams one, two). Final (column 4, row 2, exams one two, final). One (column 5, row 2, projects one two final, one). Two (column 6, row 2, projects one two final one, two). Final (column 7, row 2, projects one two final one two, final). Fifteen percent (column 1, row 3, homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent).
OK WindowEyes 9.2IE11 ReadingCorrectly voices complex table headers using HEADERS attribute in reading mode. Table, 3 rows, 7 columns, homework. Exams. Projects. Homework. Exams 1. Exams 2. Exams final. Projects 1. Projects 2. Projects final. Homework, fifteen percent. Exams 1, fifteen percent. Exams 2, fifteen percent. Exams final, twenty percent. Projects 1, ten percent. Projects 2, ten percent. Projects final, fifteen percent.
OK WindowEyes 8.4IE11 ReadingAssociation specified by HEADERS attribute is only announced when in 'attribute only' headers mode. Table 16 start, 3 rows, 7 columns. (Table 16 on 1C 1R homework) Homework. Exams. Projects. Homework, fifteen percent. Exams one, fifteen percent. Exams two, fifteen percent. Exams final, twenty percent. Projects one, ten percent. Projects two, ten percent. Projects final, fifteen percent.
Fail VoiceOver OSX 10.11Safari 9.1.2 ReadingTable incomprehensible - HEADERS relationships not announced correctly. Table, 7 columns, 3 rows. Spans 2 rows, homework, column 1 of 7. Spans 3 columns, exams, column 2 of 7. Spans 3 columns, projects, column 5 of 7. Row 2 of 3, exams, one, column 2 of 7. Two. Final. Projects, one, column 5 of 7. Two. Final. Row 3 of 3, homework, one five percent, column 1 of 7. Exams one, one five percent, column 2 of 7. Two, one five percent, column 3 of 7. Final, two zero percent, column 4 of 7. Projects one, one zero percent, column 5 of 7. Two, one zero percent, column 6 of 7. Final, one five percent, column 7 of 7.
Fail VoiceOver OSX 10.10Safari 9.0.1 ReadingTable incomprehensible - HEADERS relationships not announced correctly. Table, 7 columns, 3 rows. Spans 2 rows, homework, column 1 of 7. Spans 3 columns, exams, column 2 of 7. Spans 3 columns, projects, column 5 of 7. Row 2 of 3, exams, column 2 of 7. Two. Final. Projects, one, column 5 of 7. Two. Final. Row 3 of 3, homework, one five percent, column 1 of 7. Exams one, one five percent, column 2 of 7. Two, one five percent, column 3 of 7. Final, two zero percent, column 4 of 7. Projects one, one zero percent, column 5 of 7. Two, one zero percent, column 6 of 7. Final, one five percent, column 7 of 7.
Fail VoiceOver iOS 9.1Safari iOS 9.1 ReadingTable incomprehensible - HEADERS relationships not announced correctly. Homework, table start. Exams. Projects. Exams, one. Exams, one, two. Exams, one, final. Projects, one. Projects, one, two. Projects, one. final. Homework, fifteen percent. Exams, fifteen percent. Exams, twenty percent. Projects, ten percent. Projects, ten percent. Projects, fifteen percent, table end.
Fail VoiceOver iOS 8.4Safari iOS 8.4 ReadingTable incomprehensible - HEADERS relationships not announced correctly. Homework, table start. Exams. Projects. Exams, one. Exams, two. Exams, one, final. Projects, one, one. One, two. Projects, one. final. Homework, fifteen percent. Exams, fifteen percent. Exams, fifteen percent. Projects, ten percent. Projects, ten percent. Projects, fifteen percent, table end.

SortSite rules: AccWcag1-5.2.1

Test notes

All tests were carried out with screen reader factory settings. JAWS in particular has a wide variety of settings controlling exactly what gets spoken.

Screen readers allow users to interact in different modes, and can produce very different results in each mode. The modes used in these tests are:

In the «What the user hears» column: