CSS media query with @media speech Screen reader compatibility

CSS HTML
Dec 12, 2023

Expected Result: causes problems in some screen readers

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

For expected failures, the results show which AT combos the failures affect. Results are recorded from the user's viewpoint, so describe the user impact of authoring errors.

@media speech is deprecated in CSS Media Queries Level 4 and not supported by any screen reader.

There has been conflicting information in various CSS specifications on the 'speech' and 'aural' media types.

Code used for this test:


		<style>
			div.speech-query-fail
			{
				display: block;
				color: black;
				background-color: red;
			}

			div.speech-query-pass
			{
				display: none;
				color: black;
				background-color: green;
			}

			/* change display state using aural media type */
			@media speech
			{
			div.speech-query-fail { display: none; }
			div.speech-query-pass { display: block; }
			}
		</style>

		<div class='speech-query-fail'>
			Speech Media Query - Fail
		</div>
		<div class='speech-query-pass'>
			Speech Media Query - Pass
		</div>		
	

Change History

Last updated: December 12, 2023

  • Bad NVDA with Chrome Causes problems from NVDA 2017.3 to NVDA 2023.3
  • Bad NVDA with IE Causes problems from NVDA 2017.3 to NVDA 2019.2
  • Bad NVDA with FF Causes problems from NVDA 2017.3 to NVDA 2023.3
  • Bad JAWS with Chrome Causes problems from JAWS 2018.1811.2 to JAWS 2023.2311.34
  • Bad JAWS with IE Causes problems from JAWS 17.0.2619 to JAWS 2019.1912.1
  • Bad JAWS with FF Causes problems from JAWS 17.0.2619 to JAWS 2023.2311.34
  • Bad VoiceOver macOS Causes problems from VoiceOver macOS 10.13 to VoiceOver macOS 13.6
  • Bad VoiceOver iOS Causes problems from VoiceOver iOS 11.4 to VoiceOver iOS 16.6
  • Bad WindowEyes with IE Causes problems in WindowEyes 8.4
  • Bad Dolphin with IE Causes problems in Dolphin SR 16.06
  • Bad SaToGo with IE Causes problems in SaToGo 3.4.96.0
Screen readerBrowserModeNotesWhat the user hears
Fail NVDA 2023.3Chrome 120 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2023.3FF 115 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2023.3Edge 120 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2022.2Chrome 105 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2022.2FF 102 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2022.2Edge 105 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2021.2Chrome 94 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2021.2FF 91 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2021.2Edge 94 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2020.2Chrome 86 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2020.2FF 78 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2020.2Edge 92 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2019.2Chrome 79 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2019.2FF 68 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2019.2IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2018.4Chrome 73 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2018.4FF 60 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2018.4IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2017.3Chrome 66 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2017.3FF 49 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail NVDA 2017.3IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2023.2311.34Chrome 120 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2023.2311.34FF 115 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2023.2311.34Edge 120 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2022.2207.25Chrome 105 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2022.2207.25FF 102 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2022.2207.25Edge 105 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2021.2107.12Chrome 94 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2021.2107.12FF 91 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2021.2107.12Edge 94 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2020.2008.24Chrome 86 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2020.2008.24FF 78 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2020.2008.24Edge 92 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2019.1912.1Chrome 79 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2019.1912.1FF 68 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2019.1912.1IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2018.1811.2Chrome 73 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2018.1811.2FF 60 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 2018.1811.2IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 18.0.5038FF 52 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 18.0.5038IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 17.0.2619FF 49 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail JAWS 17.0.2619IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail WindowEyes 8.4IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 13.6Safari 16.6 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 12.5Safari 15.6 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 11.5Safari 15.0 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 10.15Safari 14.1 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 10.14Safari 13.0 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver macOS 10.13Safari 11.1 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 16.6Safari iOS 16.6TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 15.6Safari iOS 15.6TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 14.7Safari iOS 14.7TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 13.3Safari iOS 13.3TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 12.4Safari iOS 12.4TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail VoiceOver iOS 11.4Safari iOS 11.4TouchDoes not match 'speech' media type. Speech Media Query - Fail.
Fail Dolphin SR 16.06IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.
Fail SaToGo 3.4.96.0IE11 Reading Does not match 'speech' media type. Speech Media Query - Fail.

Test notes

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

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

  • Reading Content read using the “read next” command in a screen reader
  • Tabbing Content read using the “tab” key in a screen reader
  • Heading Content read using the “next heading” key in a screen reader
  • Touch Content read when touching an area of screen on a mobile device

In the “What the user hears” column:

  • Commas represent short pauses in screen reader voicing
  • Full Stops represent places where voicing stops, and the “read next” or “tab” or “next heading” command is pressed again
  • Ellipsis … represent a long pause in voicing
  • (Brackets) represent voicing that requires a keystroke to hear