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 7 months ago to 2 years ago. See detailed information about test dates and versions for more information.

Failing and partial results are between 7 months ago and 7 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

scope attribute
ExpectationDragon Naturally SpeakingVoice Access (Android)Voice Control (iOS)Voice Control (MacOS)Windows Speech Recognition
ChromeChromeSafariSafariChrome
Not applicable
table element
ExpectationDragon Naturally SpeakingVoice Access (Android)Voice Control (iOS)Voice Control (MacOS)Windows Speech Recognition
ChromeChromeSafariSafariChrome
Not applicable
td element
ExpectationDragon Naturally SpeakingVoice Access (Android)Voice Control (iOS)Voice Control (MacOS)Windows Speech Recognition
ChromeChromeSafariSafariChrome
Not applicable
th element
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