User agent reliability for VoiceOver iOS Screen reader compatibility

Last updated: October 16, 2016

Shows how well VoiceOver iOS supports ARIA and WCAG sufficient techniques.

Latest version tested

VoiceOver iOS 9.1 with Safari iOS 9.1

Reliability trend

100%80%60%40%20%0%201378%201469%201567%201667%

Failing tests

 TestModeWhat the user hearsNotes
FailAPPLET with ARIA-LABEL attributeTouch Nothing Nothing voiced for applet - no indication it exists
FailAPPLET with ARIA-LABELLEDBY attributeTouch Nothing Nothing voiced for applet - no indication it exists
FailEMBED with ARIA-LABEL attributeTouchStart playback, buttonNo description of non-text content
FailEMBED with ARIA-LABELLEDBY attributeTouchStart playback, buttonNo description of non-text content
FailOBJECT with ARIA-LABEL attributeTouch Nothing Nothing voiced for object - no indication it exists
FailOBJECT with ARIA-LABELLEDBY attributeTouch Nothing Nothing voiced for object - no indication it exists
FailAUDIO with ARIA-LABEL attributeTouch Nothing Nothing voiced for audio - no indication it exists
FailAUDIO with ARIA-LABELLEDBY attributeTouch Nothing Nothing voiced for audio - no indication it exists
FailVIDEO with ARIA-LABEL attributeTouchStart playback, buttonNo description of non-text content
FailVIDEO with ARIA-LABELLEDBY attributeTouchStart playback, buttonNo description of non-text content
FailABBR with titleTouche t cABBR expansion ignored.
FailBUTTON wraps IMG with TITLE attributeTouchButtonReads "button" without saying what button does.
WorseYes/No radio buttons inside FIELDSETTouchI agree to the terms and conditions. Yes, radio button ticked, one of one. No, radio button unticked, one of one. Sign me up to the newsletter. Yes, radio button ticked, one of one. No, radio button unticked, one of one.No indication that each Yes/No is a pair of choices - all radio buttons announced as one of one.
FailIMG with FIGCAPTIONTouchOne thousand, two hundred and thirty four PNG, image, Violet, taken on twelve slash eleven slash two thousand and ten.Reads out meaningless filename, then FIGCAPTION.
FailAREA with ALT attributeTouchThis is alt text.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.
FailAREA with TITLE attributeTouchThis is alt text.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.
FailAREA with aria-label attributeTouchThis is alt text.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.
FailAREA with aria-labelledby attributeTouchThis is alt text.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.
FailData table with role rowheader headers but no THReadingMorning, afternoon. Free, busy.Table treated as layout table - not announced as table, and no headers read.
FailData table with TH row/columns headers with SCOPETouch Contact information, table start. Phone number, name. Fax number, phone number. City, fax number. City. Name, one. Phone number, Joel Garner. Fax number, 412 212 5421. City, 412 212 5400. Pittsburgh. Name, two. Phone number, Clive Lloyd. Fax number, 410 306 1420. City, 410 306 5400. Baltimore. Incomprehenisible - reads out the wrong headings for cells
FailData table with TD HEADERS attributeReading Homework, table start. Exams. Projects. Exams, one. Exams, one, two. Exams, one, final. Projects, one. Projects, one, two. Projects, one. final. Homework, fifteen percent. Exams, fifteen percent. Exams, twenty percent. Projects, ten percent. Projects, ten percent. Projects, fifteen percent, table end. Table incomprehensible - HEADERS relationships not announced correctly.

Passing tests

 TestModeWhat the user hearsNotes
PassARIA role=headingTouchFirst level heading, heading level 1. Second level heading, heading level 2  
PassHeading is IMG with ALTTouchSecond level alt, heading level 2, image.  
PassAPPLET with fallback contentTouchFallback content for appletiOS does not support applets  
PassAPPLET inside FIGURE with FIGCAPTION elementTouchFigure caption for applet  
PassEMBED inside FIGURE with FIGCAPTIONTouchStart playback, button. Figure caption for embed  
PassOBJECT with fallback contentTouchFallback content for object  
PassIFRAME with fallback contentTouchThis is an, example hyperlink, link, in the target page.Fallback content is ignored  
PassIFRAME with titleTouchThis is an, example hyperlink, link, in the target page.  
PassBUTTON wraps only an IMG with an ALT attributeTouchThis is image alt, button  
PassBUTTON wraps IMG with aria-labelTouchThis is image aria label, button  
PassBUTTON wraps IMG with aria-labelledbyTouchThis is aria labelled by, button  
PassBUTTON with TITLE wraps IMG with null ALTTouchThis is button title, button  
PassBUTTON with aria-label wraps IMG with null ALTTouchThis is button aria label, button  
PassINPUT type=image with ALT attributeTouchThis is image button alt text, button  
PassINPUT type=image with TITLE attributeTouchThis is image button title text, button  
PassINPUT type=image with aria-label attributeTouchThis is image button aria label text, button  
PassINPUT type=image with aria-labelledby attributeTouchThis is image button aria-labelled by text, button  
PassINPUT type=text with aria-describedby attributeTouchFirst name, text field, a bit of instructions for this field linked with aria describedby, double tap to edit  
PassINPUT type=text with TITLE attributeTouchEnter search text, text field, double tap to edit  
PassINPUT type=text with aria-label attributeTouchEnter search text, text field, double tap to edit  
PassINPUT type=text with aria-labelledby attributeTouchEnter search text, text field, double tap to edit  
PassINPUT type=text with LABEL FORTouchEnter search text, text field, double tap to edit  
PassINPUT type=text inside LABEL with text before controlTouchEnter search text, text field, double tap to edit  
PassINPUT type=text inside LABEL with text after controlTouchEnter search text, text field, double tap to edit  
PassINPUT type=text inside LABEL with text before and after controlTouchEnter search text blanks not allowed, text field, double tap to edit  
BetterFIELDSET containing linksTouchLegend for enclosed links. Home, link. About, link. Contact, link.  
PassIMG with null ALT attributeTouch Nothing Ignored as expected  
PassIMG with ALTTouchThis is alt text, image  
PassIMG with TITLETouchThis is title text, image  
PassIMG with aria-labelTouchThis is an aria label, image  
PassIMG with aria-labelledbyTouchThis is an aria labelled by, image  
PassA link wraps IMG with ALTTouchThis is a link alt, link image  
PassA link wraps IMG with TITLETouchThis is an image title, link image  
PassA "click here" link with TITLE attributeTouchClick here, link, this is a link title  
PassA "click here" link with aria-label attributeTouchThis is an aria label, link  
PassA "click here" link with aria-labelledby attributeTouchThis is an aria labelled by link  
PassA "click here" link with aria-describedby attributeTouchClick here, link, this is an aria described by  
PassLayout table with single cellReadingThis is some text.Treated as a layout table.  
PassLayout table with role presentationReadingExample, navigation. Links, content.Table treated as layout table - not announced as table.  
BetterData table with role gridReadingMorning, table start. Afernoon. Free. Busy, table end.  
PassData table with SUMMARY and THReadingMorning, table start. Afternoon. Morning, free. Afternoon, busy, table end.  
PassData table with CAPTION and THTouchData table caption, table start, morning. Afternoon. Morning, free. Afternoon, busy, table end.  
BetterData table with TH cell headersReadingMorning, table start. Afternoon. Morning, free. Afternoon, busy, table end.