area
and img
with alt
attributes
Screen reader compatibility
Expected Result: works in a screen reader
Actual Result: causes problems in 32 screen reader / browser combinations
Client-side image maps are one of the oldest features with accessibility support on the web platform. They were introduced in RFC 1980 in August 1996, with accessibility support provided by the AREA ALT attribute. More than 20 years later, support in screen readers is still patchy, not helped by a series of incompatible changes introduced in successive HTML specs.
- August 1996 - RFC 1980 - Originally specified IMG USEMAP as a URL referring to MAP NAME (e.g.
usemap='#MyMap'
refers toname='MyMap'
) - January 1997 - HTML 3.2 - Incorporated definition of IMG USEMAP unchanged from RFC 1980. This remained unchanged until XHTML 1.1.
- May 2001 - XHTML 1.1 First Edition replaced MAP NAME with ID and changed USEMAP to an IDREF (e.g.
usemap='MyMap'
refers toid='MyMap'
) breaking backwards compatibility. This was reported as a specification bug in 2002 - July 2010 - XHTML 1.1 Second Edition changed USEMAP back to an href referring to MAP ID (e.g.
usemap='#MyMap'
refers toid='MyMap'
). This broke backwards compatibility with XHTML 1.1 First Edition, but didn't fix backwards compatibility with older versions of HTML due to the removal of MAP NAME. - October 2014 - HTML 5.0 changed USEMAP back to the original 1996 definition of URL referring to MAP NAME (e.g.
usemap='#MyMap'
refers toname='MyMap'
)
WCAG Technique: H24
Code used for this test:
<img src='1234.png' alt='this is alt text' usemap='#area_alt_map2'>
<map id='area_alt_map2' name='area_alt_map2'>
<area alt='this is left alt text' coords='0,0,100,100' href='left_arrow.htm' target='frame1'></area>
<area alt='this is right alt text' coords='200,0,300,100' href='right_arrow.htm' target='frame1'></area>
</map>
Reliability Trend
This graph shows reliability over time for this code in NVDA, JAWS and Voiceover. Other screen readers don't have enough historical data yet to plot trends.
Change History
Last updated: September 11, 2022
NVDA with Chrome Stable - OK from NVDA 2018.4 to NVDA 2022.2
NVDA with IE Causes problems in NVDA 2019.2
NVDA with FF Better - caused problems in NVDA 2016.2, but now OK in NVDA 2022.2
JAWS with Chrome Stable - OK from JAWS 2018.1811.2 to JAWS 2022.2207.25
JAWS with IE Stable - OK from JAWS 13.0.852 to JAWS 2019.1912.1
JAWS with FF Better - caused problems in JAWS 2018.1811.2, but now OK in JAWS 2022.2207.25
VoiceOver macOS Better - caused problems in VoiceOver macOS 10.11, but now OK in VoiceOver macOS 12.5
VoiceOver iOS Causes problems from VoiceOver iOS 7.1 to VoiceOver iOS 15.6
WindowEyes with IE Better - caused problems in WindowEyes 8.4, but now OK in WindowEyes 9.2
Dolphin with IE OK in Dolphin SR 15.05
SaToGo with IE OK in SaToGo 3.4.96.0
Screen reader | Browser | Mode | Notes | What the user hears |
---|---|---|---|---|
![]() | Chrome 105 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Chrome 105 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | FF102 | Reading | This is alt text, graphic, this is alt text. This is alt text, graphic link, this is left alt text. This is alt text, graphic link, this is right alt text | |
![]() | FF102 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | Edge 105 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Edge 105 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | Chrome 94 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Chrome 94 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | FF91 | Reading | This is alt text, graphic, this is alt text. This is alt text, graphic link, this is left alt text. This is alt text, graphic link, this is right alt text | |
![]() | FF91 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | Edge 94 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Edge 94 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | Chrome 86 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Chrome 86 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | FF78 | Reading | This is alt text, graphic, this is alt text. This is alt text, graphic link, this is left alt text. This is alt text, graphic link, this is right alt text | |
![]() | FF78 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | Edge 92 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Edge 92 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | Chrome 79 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Chrome 79 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | FF68 | Reading | This is alt text, graphic, this is alt text. This is alt text, graphic link, this is left alt text. This is alt text, graphic link, this is right alt text | |
![]() | FF68 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | IE11 | Reading | Graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Complete silence when tabbing between AREAs. | |
![]() | Chrome 73 | Reading | Link, this is left alt text, link, this is right alt text | |
![]() | Chrome 73 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | FF60 | Reading | Graphic, this is alt text. This is alt text, graphic link, this is left alt text. This is alt text, graphic link, this is right alt text | |
![]() | FF60 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | IE11 | Reading | Graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Complete silence when tabbing between AREAs. | |
![]() | FF60 | Reading | Graphic, this is alt text. Graphic link, this is left alt text. Graphic link, this is right alt text | |
![]() | FF60 | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | |
![]() | IE11 | Reading | Graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Complete silence when tabbing between AREAs. | |
![]() | FF48 | Reading | No indication AREA links exist | Graphic, this is alt text, this is alt text |
![]() | FF48 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | IE11 | Reading | Graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Complete silence when tabbing between AREAs. | |
![]() | FF41 | Reading | No indication AREA links exist | Graphic, this is alt text, this is alt text |
![]() | FF41 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | IE11 | Reading | Graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Complete silence when tabbing between AREAs. | |
![]() | FF28 | Reading | graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | FF28 | Tabbing | silent for second tab onto second area | This is alt text, link, this is left alt text, link, this is right alt text, graphic - all read for 1st link |
![]() | IE11 | Reading | graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Silence when tabbing to AREA links - no indication of image map role or name | |
![]() | FF28 | Reading | graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | FF28 | Tabbing | silent for second tab onto second area | This is alt text, link, this is left alt text, link, this is right alt text, graphic - all read for 1st link |
![]() | IE11 | Reading | graphic, this is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Silence when tabbing to AREA links - no indication of image map role or name | |
![]() | Chrome 105 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | Chrome 105 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | FF102 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | FF102 | Tabbing | This is alt text graphic, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | Edge 105 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text | |
![]() | Edge 105 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic | |
![]() | Chrome 94 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | Chrome 94 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | FF91 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | FF91 | Tabbing | This is alt text graphic, this is left alt text, link. This is right alt text, link. | |
![]() | Edge 94 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text | |
![]() | Edge 94 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic | |
![]() | Chrome 86 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | Chrome 86 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | FF78 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | FF78 | Tabbing | This is alt text graphic, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | Edge 92 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text | |
![]() | Edge 92 | Tabbing | This is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic | |
![]() | Chrome 79 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | Chrome 79 | Tabbing | This is alt text image map read-only, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | FF68 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | FF68 | Tabbing | This is alt text graphic, this is left alt text, image map link graphic. This is right alt text, image map link graphic. | |
![]() | IE11 | Reading | This is alt text graphic. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link. This is right alt text, image map link | |
![]() | Chrome 73 | Reading | Image map link graphic, this is left alt text. Image map link graphic, this is right alt text. | |
![]() | Chrome 73 | Tabbing | Tab, this is alt text image map read-only, this is left alt text, image map link graphic. Tab, this is right alt text, image map link graphic. | |
![]() | FF60 | Reading | Alt ignored and link URL gibberish read out. | Image map link graphic, left underline arrow. Image map link graphic, right underline arrow. |
![]() | FF60 | Tabbing | Tab, this is alt text graphic, this is left alt text, image map link graphic. Tab, this is right alt text, image map link graphic. | |
![]() | IE11 | Reading | Graphic, this is alt text. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | Tab, this is left alt text, image map link. Tab, this is right alt text, image map link | |
![]() | FF52 | Reading | No link role read out - no indication graphics are links. | Graphic, this is alt text. Graphic, this is left alt text. Graphic, this is right alt text |
![]() | FF52 | Tabbing | Tab, this is alt text graphic, this is left alt text, image map. Tab, this is right alt text, image map | |
![]() | IE11 | Reading | Graphic, this is alt text. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | Tab, this is left alt text, image map link. Tab, this is right alt text, image map link | |
![]() | FF48 | Reading | No link role read out - no indication graphics are links. | Graphic, this is alt text. Graphic, this is left alt text. Graphic, this is right alt text |
![]() | FF48 | Tabbing | This is left alt text, image map. This is right alt text, image map | |
![]() | IE11 | Reading | Graphic, this is alt text. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link. This is right alt text, image map link | |
![]() | FF41 | Reading | No link role read out - no indication graphics are links. | Graphic, this is left alt text, this is right alt text. Graphic, this is left alt text. Graphic, this is right alt text |
![]() | FF41 | Tabbing | This is alt text, graphic, this is left alt text, image map. This is right alt text, image map | |
![]() | IE11 | Reading | Graphic, this is alt text. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link. This is right alt text, image map link | |
![]() | FF29 | Reading | No link role read out - no indication graphics are links. | Graphic, this is left alt text, this is right alt text. Graphic, this is left alt text. Graphic, this is right alt text |
![]() | FF29 | Tabbing | silence for second tab | This is left alt text, this is right alt text, image map |
![]() | IE11 | Reading | Graphic, this is alt text. Image map link, this is left alt text. Image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link. This is right alt text, image map link | |
![]() | FF29 | Reading | No link role read out - no indication graphics are links | Graphic, this is left alt text, this is right alt text. Graphic, this is left alt text. Graphic, this is right alt text |
![]() | FF29 | Tabbing | silence for second tab | This is left alt text, this is right alt text, image map |
![]() | IE11 | Reading | graphic, this is alt text, image map link, this is left alt text, image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link, this is right alt text, image map link | |
![]() | FF28 | Reading | no indication of image map links | Graphic, this is alt text |
![]() | FF28 | Tabbing | wrong alt read out when tabbing | This is alt text, graphic, for first area, silence for second area |
![]() | IE11 | Reading | graphic, this is alt text, image map link, this is left alt text, image map link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, image map link, this is right alt text, image map link | |
![]() | IE11 | Reading | This is alt text. Link, this is left alt text. Link, this is right alt text | |
![]() | IE11 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | IE11 | Reading | This is alt text, link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | Silence when tabbing to AREA links - no indication of image map role or name | |
![]() | Safari 15.6 | Reading | This is alt text, image map. In, this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 15.6 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 15.0 | Reading | This is alt text, image map. In, this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 15.0 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 14.1 | Reading | This is alt text, image map. In, this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 14.1 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 13.0 | Reading | This is alt text, image map. In, this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 13.0 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 12.1 | Reading | This is alt text, image map. In, this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 12.1 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 10.1.2 | Reading | This is alt text, image map. Interact with: this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 10.1.2 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 9.1.2 | Reading | This is alt text, image map. Interact with: this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 9.1.2 | Tabbing | ALT text for IMG read out as label of first link instead of AREA ALT test | Link, this is alt text, image map. Link, this is right alt text |
![]() | Safari 8.0.6 | Reading | This is alt text, image map. Interact with: this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 8.0.6 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari 7.0.3 | Reading | This is alt text, image map. Interact with: this is alt text, image map, 2 items, link, this is left alt text. Link, this is right alt text. | |
![]() | Safari 7.0.3 | Tabbing | Link, this is left alt text. Link, this is right alt text | |
![]() | Safari iOS 15.6 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, or using the Next Link gesture, but there are no audible cues to tell the user they're missing links. | This is alt text. (This is left alt text, link. This is right alt text, link) |
![]() | Safari iOS 14.7 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, or using the Next Link gesture, but there are no audible cues to tell the user they're missing links. | This is alt text. (This is left alt text, link. This is right alt text, link) |
![]() | Safari iOS 13.3 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, or using the Next Link gesture, but there are no audible cues to tell the user they're missing links. | This is alt text. (This is left alt text, link. This is right alt text, link) |
![]() | Safari iOS 12.4 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, or using the Next Link gesture, but there are no audible cues to tell the user they're missing links. | This is alt text. (This is left alt text, link. This is right alt text, link) |
![]() | Safari iOS 11.4 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, or using the Next Link gesture, but there are no audible cues to tell the user they're missing links. | This is alt text. (This is left alt text, link. This is right alt text, link) |
![]() | Safari iOS 10.3 | Touch | Very hard to find AREA links because image map links are not announced when reading if owner IMG has ALT text. It is possible to find them by minesweeping, but there are no audible cues to tell the user they're missing links. | This is alt text. |
![]() | Safari iOS 9.1 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, but there are no audible cues to tell the user they're missing links. | This is alt text. |
![]() | Safari iOS 8.4 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, but there are no audible cues to tell the user they're missing links. | This is alt text. |
![]() | Safari iOS 7.1 | Touch | Very hard to find AREA links because image map links are not announced when reading. It is possible to find them by minesweeping, but there are no audible cues to tell the user they're missing links. | This is alt text. |
![]() | IE11 | Reading | This is alt text. This is left alt text, link. This is right alt text, link. | |
![]() | IE11 | Tabbing | This is left alt text, link. This is right alt text, link | |
![]() | IE11 | Reading | link, this is left alt text, link, this is right alt text | |
![]() | IE11 | Tabbing | This is left alt text, link, this is right alt text, link |
SortSite rules: AccHtmlAreaNoAlt
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