Notice: This is a work in progress. Please submit feedback or suggestions.

Test: Example 1: Table with header cells in the top row only

Screen Reader support level: partial (59/60)

Voice Control support level: not applicable

On this page

About this test

A simple table with header cells and no scope attributes

Run this test and and submit your results

Age of results

Results in this test range from 4 months ago to 2 years ago. See detailed information about test dates and versions for more information.

Failing and partial results are between 4 months ago and 4 months ago.

Test HTML

open the test page

HTML source is too long to display here.

Summary of Screen Reader support by expectation

* means that some support is hidden behind settings

Summary of Voice Control support by expectation

ExpectationDragon Naturally SpeakingVoice Access (Android)Voice Control (iOS)Voice Control (MacOS)Windows Speech Recognition
ChromeChromeSafariSafariChrome
Not applicable

* means that some support is hidden behind settings

Detailed support results by expectation

Expectation for the scope attribute: convey the header according to context if scope is set to "auto" - applied to the th element

This expectation is applied to the th element. Expectations and results might differ when the the feature is applied to different roles.

Rationale: The user needs to be able to determine what headers a cell belongs to.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the scope attribute feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, Waltz with Strauss, column 2"
  • Result: (pass)
    • command: Control + Alt + Numpad 5 (Read current cell)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "column 3, row 2, venue, main hall"
JAWSIEyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, Waltz with Strauss, column 2"
  • Result: (pass)
    • command: Control + Alt + Numpad 5 (Read current cell)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "column 3, row 2, venue, main hall"
JAWSFirefoxyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, Waltz with Strauss, column 2"
  • Result: (pass)
    • command: Control + Alt + Numpad 5 (Read current cell)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "column 3, row 2, venue, main hall"
NarratorEdgeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Waltz with Strauss, non-selected, column header Event, column 2 of 3"
  • Result: (pass)
    • command: Control + Shift + Alt + Up arrow (Read Column Header)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "event, column header"
NVDAChromeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event column 2, Waltz with Strauss"
  • Result: (pass)
    • command: up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "row 2 Venue column 3, Main Hall"
NVDAFirefoxyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event column 2, Waltz with Strauss"
  • Result: (pass)
    • command: up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "row 2 Venue column 3, Main Hall"
OrcaFirefoxyes
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, Waltz with Strauss, row 2, column 2"
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Waltz with Strauss, event"
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safaripartial
  • Result: (partial)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
    • Result Notes: also incorrectly conveyed as a row header
  • Result: (partial)
    • command: Swipe Left (Previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: after target
    • location after command: target
    • Output: date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
    • Result Notes: also incorrectly conveyed as a row header
  • Result: (partial)
    • command: three-finger tap (Read additional information about the current position)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: target
    • location after command: target
    • Output: "page 1 of 1, top of screen, row header, column header, row 1, column 1"
    • Result Notes: also incorrectly conveyed as a row header
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right Arrow (Move to Next Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, Waltz with Strauss. column 2 of 3"
Windows Speech RecognitionChromenot applicable-

Extended Support for: scope attribute: convey the header according to context if scope is set to "auto"

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the table element: convey its role

Rationale: A user needs to be aware that they are navigating a table.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Examples of assistive technologies support this expectation:

  • A screen reader might announce an element as something like "<name>, <role>"
  • A screen reader might imply the role by the presence of certain context roles
  • Voice Control software might let the user say something like "click, <role>".
  • Voice Control software might let the user say something like "show numbers", and interactive roles will be flagged with numbers.

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the table element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table end"
JAWSIEyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "table end"
JAWSFirefoxyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "table end"
NarratorEdgeyes
  • Result: (pass)
    • command: Down arrow (Read next item (scan mode))
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table, has 4 rows, 3 columns, header item, column header, row 1 of 4 column 1 of 3, date"
NVDAChromeyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
NVDAFirefoxyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
OrcaFirefoxyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows, 3 columns, date column header, event column header, venu column header"
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Date, column header, row 1, in grid, 4 rows, 3 columns"
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table, 3 columns, 4 rows"
  • Result: (pass)
    • command: VO + Left Arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "end of table"
Windows Speech RecognitionChromenot applicable-

Extended Support for: table element: convey its role

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the table element: convey the boundaries of the table

Rationale: A user needs to know when they enter and exit an element

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Examples of assistive technologies support this expectation:

  • A screen reader might announce the role of the element when entering and say something like "leaving" when exiting.
  • A screen reader might not explicitly announce entering and existing the element, but instead imply that the is in the containing object by conveying the roles of required children (options in a listbox for example).
  • A screen reader might announce position in set information such as "1 of 6".
  • A screen reader might not convey boundaries if the content fits on a single line

Grading method: All of the listed commands must pass for the expectation to pass.

This expectation is from the table element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table end"
JAWSIEyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "table end"
JAWSFirefoxyes
  • Result: (pass)
    • command: Down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 3 columns and 4 rows"
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "table end"
NarratorEdgeyes
  • Result: (pass)
    • command: Down arrow (Read next item (scan mode))
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table, has 4 rows, 3 columns, header item, column header, row 1 of 4 column 1 of 3, date"
  • Result: (pass)
    • command: Up arrow (Read previous item (scan mode))
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "table exit, text before the table"
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "no next cell in column"
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "no next cell in row"
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "no previous cell in column"
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "no previous cell in row"
NVDAChromeyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "edge of table"
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "edge of table"
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "edge of table"
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "edge of table"
NVDAFirefoxyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table with 4 rows and 3 columns, row 1 column 1, Date"
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "edge of table"
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: vedge of table"
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "edge of table"
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "edge of table"
OrcaFirefoxyes
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: start of target
    • Output: "table with 4 rows, 3 columns, date column header, event column header, venu column header"
  • Result: (pass)
    • command: down arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: within target
      • virtual cursor location: within target
    • location after command: after target
    • Output: "leaving table"
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "end of row"
  • Result: (pass)
    • command: alt + shift + left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "beginning of row"
  • Result: (pass)
    • command: alt + shift + down arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "bottom of column"
  • Result: (pass)
    • command: alt + shift + up arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "top of column"
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Date, column header, row 1, in grid, 4 rows, 3 columns"
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Date, column header, row 1, in grid, 4 rows, 3 columns"
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right arrow (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "table, 3 columns, 4 rows"
  • Result: (pass)
    • command: VO + Left Arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: "end of table"
Windows Speech RecognitionChromenot applicable-

Extended Support for: table element: convey the boundaries of the table

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the td element: convey its role

Rationale: A table can only contain cells of information, so the role is usually implied.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MAY
  • Voice Control: NA

Examples of assistive technologies support this expectation:

  • A screen reader might announce an element as something like "<name>, <role>"
  • A screen reader might imply the role by the presence of certain context roles
  • Voice Control software might let the user say something like "click, <role>".
  • Voice Control software might let the user say something like "show numbers", and interactive roles will be flagged with numbers.

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the td element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
JAWSIEyes
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
JAWSFirefoxyes
  • Result: (pass)
    • command: Up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
NarratorEdgeyes
  • Result: (pass)
    • command: Up arrow (Read previous item (scan mode))
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
NVDAChromeyes
  • Result: (pass)
    • command: up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
NVDAFirefoxyes
  • Result: (pass)
    • command: up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
OrcaFirefoxyes
  • Result: (pass)
    • command: up arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: alt + shift + down arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Swipe Left (Previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Left Arrow (Read previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: VO + Right Arrow (Move to Next Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: VO + Down Arrow (Move to Next Row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
Windows Speech RecognitionChromenot applicable-

Extended Support for: td element: convey its role

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the td element: convey the position of the header (row/column)

Rationale: A user needs to be able to determine where they are while navigating a table.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the td element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
JAWSIEyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
JAWSFirefoxyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
NarratorEdgeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
NVDAChromeyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
NVDAFirefoxyes
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
OrcaFirefoxyes
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: alt + shift + down arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: alt + shift + left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: alt + shift + up arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: Swipe Left (Previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: after target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right Arrow (Move to Next Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: VO + Down Arrow (Move to Next Row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (no header semantics surfaced, which implies that this is a cell)
  • Result: (pass)
    • command: VO + Left Arrow (Move to Previous Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: VO + Up Arrow (Move to Previous Row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
Windows Speech RecognitionChromenot applicable-

Extended Support for: td element: convey the position of the header (row/column)

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the th element: convey its role

Rationale: A user needs to be able to determine what headers apply to a given cell.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Examples of assistive technologies support this expectation:

  • A screen reader might announce an element as something like "<name>, <role>"
  • A screen reader might imply the role by the presence of certain context roles
  • Voice Control software might let the user say something like "click, <role>".
  • Voice Control software might let the user say something like "show numbers", and interactive roles will be flagged with numbers.

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the th element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
JAWSIEyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
JAWSFirefoxyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NarratorEdgeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NVDAChromeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NVDAFirefoxyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
OrcaFirefoxyes
  • Result: (pass)
    • command: alt + shift + down arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + up arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Venue, column header"
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
  • Result: (pass)
    • command: Swipe Left (Previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: after target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right Arrow (Move to Next Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, column 2 of 3"
    • Result Notes: passes because the header is conveyed when changing columns
Windows Speech RecognitionChromenot applicable-

Extended Support for: th element: convey its role

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Expectation for the th element: convey the position of the header (row/column)

Rationale: A user needs to be able to determine where they are while navigating a table.

Strength of these expectations for different types of assistive technologies:

  • Screen Readers: MUST
  • Voice Control: NA

Grading method: Just one of the listed commands must pass for the expectation to pass.

This expectation is from the th element feature.

ATBrowserHas SupportOutput
Dragon Naturally SpeakingChromenot applicable-
JAWSChromeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
JAWSIEyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
JAWSFirefoxyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NarratorEdgeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NVDAChromeyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
NVDAFirefoxyes
  • Result: (pass)
    • command: Control + Alt + up arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + down arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: Control + Alt + Left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: after target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
OrcaFirefoxyes
  • Result: (pass)
    • command: alt + shift + down arrow (Move to next row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + up arrow (Move to previous row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + right arrow (Move to next column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
  • Result: (pass)
    • command: alt + shift + left arrow (Move to previous column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (cell is announced as the header as you transition between columns)
TalkBackChromeyes
  • Result: (pass)
    • command: Swipe right (Read next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Venue, column header"
Voice Access (Android)Chromenot applicable-
Voice Control (iOS)Safarinot applicable-
Voice Control (MacOS)Safarinot applicable-
VoiceOver (iOS)Safariyes
  • Result: (pass)
    • command: Swipe Right (Next item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: before target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
  • Result: (pass)
    • command: Swipe Left (Previous item)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • virtual cursor location: after target
    • location after command: target
    • Output: "date, row header, column header, row 1 column 1, table start 4 rows, 3 columns"
VoiceOver (macOS)Safariyes
  • Result: (pass)
    • command: VO + Right Arrow (Move to Next Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: "Event, column 2 of 3"
  • Result: (pass)
    • command: VO + Left Arrow (Move to Previous Column)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: VO + Down Arrow (Move to Next Row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
  • Result: (pass)
    • command: VO + Up Arrow (Move to Previous Row)
    • before the command was executed
      • mode: auto (mode not explicitly)
      • keyboard focus location: before target
      • virtual cursor location: before target
    • location after command: target
    • Output: (position information is announced as column and rows are changed)
Windows Speech RecognitionChromenot applicable-

Extended Support for: th element: convey the position of the header (row/column)

These are less common combinations

ATBrowserHas SupportOutput
Dragon Naturally SpeakingIEnot applicable-
Dragon Naturally SpeakingFirefoxnot applicable-
JAWSEdgeunknown-
NarratorFirefoxunknown-
NarratorChromeunknown-
NarratorIEunknown-
NVDAIEunknown-
NVDAEdgeunknown-
TalkBackFirefoxunknown-
Voice Access (Android)Firefoxnot applicable-
VoiceOver (iOS)Chromeunknown-
VoiceOver (macOS)Chromeunknown-
VoiceOver (macOS)Firefoxunknown-
OrcaChromeunknown-
Voice Control (MacOS)Chromenot applicable-
Voice Control (MacOS)Firefoxnot applicable-
Windows Speech RecognitionEdgenot applicable-
Back to top

Dates and Versions of tested combinations

ATAT VersionBrowserBrowser versionOS versionDate tested
JAWS2018.1811.2Chrome7418092019-05-03
JAWS2018.1811.2IE11.13418092019-05-03
JAWS2018.1811.2Firefox6618092019-05-03
Narrator1809Edge44.1776318092019-05-03
NVDA2018.1808.10Chrome7418092019-05-03
NVDA2018.2.1Firefox61.0.118032018-07-30
Orca3.31.4Firefox69Ubuntu 19.042019-09-14
TalkBack7.3.0Chrome7672019-09-14
VoiceOver (iOS)13.3Safari13.313.32020-01-29
VoiceOver (macOS)10.15.2Safari13.0.410.15.22020-01-29

History

  • 2019-05-10 Test created
  • 2019-09-14 Add orca and talkback results
  • 2020-01-29 Update VO results and clean up data