Fix guides
Every accessibility failure, explained
All 99 checks our scanner runs, each written for the person who runs the site rather than the person who built it. 22 of them can be repaired automatically by our WordPress plugin; the rest tell you exactly which screen to open.
Images and media
Descriptions for pictures, captions for video, and the alternatives screen readers rely on.
- Image map areas with no descriptionThe clickable regions of an image map have no text describing where they lead.
- Audio without a transcriptAudio content has no text alternative.
- Blinking contentSomething on the page blinks continuously.Plugin repairs this
- A hidden frame still traps keyboard focusEmbedded content is removed from the tab order but still contains things that can be tabbed to.
- Embedded content could not be checkedThe page contains an embedded frame that this scan could not look inside, so anything in it is untested.
- Embedded frames with no titleEmbedded content such as a video, map or form has no description of what it contains.Plugin repairs this
- Embedded frames share the same titleTwo or more embeds have identical titles, so they cannot be told apart.
- Images are missing alt textSome images have no text description, so a screen reader announces them as just "image" or reads out the file name.Plugin repairs this
- Alt text repeats the text next to itAn image's description says the same thing as the visible text beside it, so a screen reader reads it twice.
- Image buttons with no alt textA button made from an image has no text description.Plugin repairs this
- Scrolling marquee textText scrolls across the screen automatically with no way to stop it.
- Audio plays automaticallySound starts playing on its own when the page loads.
- Embedded objects with no descriptionEmbedded media has no text alternative.
- Elements acting as images have no descriptionSome elements are declared to be images but carry no description.
- Server-side image mapThe page uses an old style of clickable image that cannot be operated by keyboard at all.
- SVG graphics with no descriptionSome vector graphics used as images have no text description.
- Videos without captionsVideo content has no captions.
Colour and readability
Contrast, zooming, spacing, and anything that makes text hard to read.
- Text spacing is locked by inline stylesLine height and letter spacing are forced with inline styles marked as unchangeable, so visitors cannot loosen the text …
- Text is too faint against its backgroundSome text does not stand out enough from the colour behind it, so it is hard or impossible to read.Plugin repairs this
- The page is locked to one screen orientationThe layout only works one way round and does not adapt when the device is rotated.
- Links are identified by colour aloneLinks inside paragraphs are only distinguished from surrounding text by their colour, with no underline.Plugin repairs this
- Zooming is disabledThe page prevents visitors from pinching to zoom in on a phone.Plugin repairs this
- Zooming is limitedThe page allows zooming, but caps it below the level some visitors need.Plugin repairs this
Keyboard and focus
Everything that matters to someone who cannot use a mouse.
- Two shortcuts use the same keyMore than one element claims the same keyboard shortcut, so only one of them ever responds.
- Hidden elements can still be reached by keyboardSome parts of the page are hidden from screen readers but can still be tabbed into, so keyboard users land somewhere inv…
- No way to skip the menuThere is no "skip to content" link, so anyone navigating by keyboard has to tab through the whole menu on every page bef…Plugin repairs this
- Focusable elements with no control typeSome elements can be tabbed to but are not declared as a button, link or field, so a screen reader cannot say what they …
- Controls nested inside other controlsA clickable element sits inside another clickable element, such as a button inside a link.
- Scrollable areas cannot be reached by keyboardSome areas scroll independently but cannot be scrolled without a mouse.Plugin repairs this
- The skip link points nowhereThere is a "skip to content" link, but the place it points to does not exist on the page, so pressing it does nothing.Plugin repairs this
- Custom tab orderSome elements force themselves to a specific position in the keyboard tab order, which usually makes navigation jump aro…
- Tap targets are too small or too close togetherSome buttons and links are smaller than a fingertip, or crowded so tightly together that the wrong one gets pressed.
Forms and controls
Labels, error messages, and the names assistive software announces.
- Custom form controls with no nameSome controls built with JavaScript instead of standard form fields have no description.
- Form fields cannot be auto-filledPersonal detail fields are not marked with what they collect, so browsers and password managers cannot fill them in.Plugin repairs this
- Buttons with no readable labelSome buttons show only an icon, with no text explaining what they do.Plugin repairs this
- A form field has more than one labelSome fields have two or more labels attached, so assistive software may read the wrong one or read both.
- Submit buttons with no labelSome form submit buttons have no text on them.Plugin repairs this
- Form fields with no labelSome form fields have nothing telling the visitor what to type in them, or use only placeholder text that disappears as …Plugin repairs this
- A control's spoken name does not match its visible textSome controls display one label but announce a different one to assistive software.
- Fields labelled only by a tooltipSome form fields rely on a hover tooltip instead of a visible label.Plugin repairs this
- Dropdown menus with no labelSome dropdown selectors have nothing describing what they control.Plugin repairs this
- Expandable sections with no visible titleA collapsible section has no text on the part you click to open it.
Page structure
Headings, landmarks, lists and tables — the outline screen readers navigate by.
- Broken definition listA term-and-description list is built incorrectly.
- Definition list items outside a listTerms or descriptions appear without their surrounding list.
- Empty headingsSome headings contain no text, usually a leftover from editing or a spacer.
- Empty table headersA table has header cells with no text in them.
- Headings skip levelsThe page jumps from a main heading straight to a smaller sub-heading, skipping a level, which breaks the page's outline.
- The header is nested inside another regionThe site header sits inside another area rather than at the top level of the page.
- The sidebar is nested inside another regionThe sidebar sits inside another area instead of alongside the main content.
- The footer is nested inside another regionThe site footer sits inside another area rather than at the page's top level.
- The main content area is nested inside another regionThe main content is inside another area rather than at the page's top level.
- The page has two headersTwo separate areas are both declared as the site header.
- The page has two footersTwo separate areas are both declared as the site footer.
- The page has two main content areasTwo separate areas are both declared as the page's main content.
- The page has no main content area markedNothing on the page identifies where the main content starts, so assistive software cannot offer a shortcut past the hea…
- Duplicate regions with no distinguishing labelThe page has two or more areas of the same type, for example two navigation menus, with nothing telling them apart.Plugin repairs this
- Broken list structureA list contains items that are not list items, so software cannot announce how many entries it has.
- List items outside a listSome list items are floating on their own without a surrounding list.
- Bold text used instead of a real headingSome paragraphs are styled to look like headings, bold and larger, without actually being headings.
- The page has no main headingThere is no top-level heading identifying what this page is about.
- Content sits outside any labelled regionParts of the page are not inside a recognised area such as header, navigation, main or footer.
- Table header scope is wrongA table header says whether it heads a row or a column, and the value used is not valid.
- A table's caption and summary say the same thingThe table's visible caption and its hidden summary contain identical text, so it is read twice.
- Table caption is not marked as oneA table has a title row acting as a caption without being marked as the caption.
- Large table cells have no headersIn a table big enough to need them, data cells are not connected to any header.
- Table cells reference missing headersData cells point at header cells that do not exist in the table.
- Table headers describe nothingA table has header cells that are not connected to any data.
ARIA and code quality
The accessibility attributes that break things when they are wrong.
- Invalid ARIA attributesSome elements use accessibility attributes that are not allowed for what they are, which can confuse assistive software …
- An element is given a role it cannot haveSome elements are labelled as a type of control they are not allowed to be, which confuses assistive software.
- Braille labels do not match their textA braille-specific label is present without the matching normal label it is supposed to abbreviate.
- Custom buttons and links with no nameSome elements behave as buttons, links or menu items but have no text describing them.
- ARIA attributes used in the wrong situationSome accessibility attributes are only valid under certain conditions, and here those conditions are not met.
- An outdated role is in useSome elements use a role that has been withdrawn from the specification and is no longer supported.
- Popups with no titleA popup or dialog opens with nothing announcing what it is.
- The whole page is hidden from screen readersThe entire page is marked as hidden from assistive software, making it completely unusable.
- Meters with no labelA gauge or meter is shown with nothing saying what it measures.
- Progress bars with no labelA progress indicator has nothing saying what is in progress.
- ARIA attributes on elements that cannot have themSome elements carry accessibility attributes that are not permitted for what they are, so the attributes are ignored.
- ARIA roles missing required attributesSome elements claim to be a particular kind of control but are missing the information that control needs.
- A composite control is missing its partsSome elements declare themselves as a list, menu or tab set but do not contain the pieces that structure requires.
- A control part is outside its containerSome elements are declared as part of a larger control but are not inside one.
- A custom role description on the wrong elementAn element is given a custom spoken description but does not have a role that allows one.
- Invalid ARIA rolesSome elements declare a role that is not a real one, so assistive software ignores or misreads them.
- A text-only element contains controlsAn element declared as plain text contains something clickable, which then becomes unreachable.
- Checkboxes and switches with no labelSome on/off controls have nothing describing what they switch.Plugin repairs this
- Tooltips with no textA tooltip is present but contains nothing readable.
- Tree items with no labelItems in an expandable tree have no readable text.
- Misspelled ARIA attributesSome attributes start with aria- but are not real ones. Usually a typo, and they do nothing at all.
- ARIA attributes point at things that do not existSome elements reference another element by id, but that element is not on the page.
- The page has no titleThe browser tab shows no title for this page.
- The same id is used more than onceTwo elements share the same identifier, which breaks the links between labels and the fields they describe.
- Hidden content was not checkedParts of the page are hidden right now, inside a closed tab, accordion or popup, so they could not be tested.
- The page does not say what language it is inThe page is missing the setting that tells software which language it is written in.Plugin repairs this
- The page's language code is not validThe page declares a language, but the code used is not one software recognises.Plugin repairs this
- The page declares two different languagesThe page states its language twice, and the two statements disagree.Plugin repairs this
- Links with no readable textSome links contain only an icon or an image with no description, so a screen reader announces them as "link" with nothin…
- The page refreshes or redirects on a timerThe page automatically reloads or moves elsewhere after a delay.
- An element is marked decorative but is still interactiveSome elements are declared as purely decorative while still being focusable or carrying accessibility information, a con…
- Invalid language code on part of the pageA section of the page declares a language using a code that is not valid.
Not sure which of these apply to you? Scan your page and the report will list only the failures actually present, in the order worth fixing them.