Skip to content
Pandus

Accessibility rules we check

Every automated accessibility check Pandus runs, explained for site owners: what it finds, who it affects, how to fix it, and the WCAG 2.2 and EN 301 549 clauses.

Automated checks find part of the problems. This is not a full audit and does not confirm legal compliance.

98 rules

WCAG 2.2 A and AA

67

The level EN 301 549, the EAA, the BFSG and the ADA rely on. Every one of these is counted in the report.

  • Serious WCAG 2.4.4 A

    Clickable areas of an image have no description

    The page uses an image map (one picture split into several clickable areas), and some of these areas have no text that says where they lead.

    area-alt

  • Moderate WCAG 4.1.2 A

    Accessibility attributes are used on the wrong elements

    Some elements carry accessibility attributes that are not allowed for their type.

    aria-allowed-attr

  • Moderate WCAG 4.1.2 A

    Some elements have a braille label but no normal name

    Some elements carry a label meant only for braille displays (aria-braillelabel or aria-brailleroledescription) but lack the ordinary label or description it is supposed to accompany.

    aria-braille-equivalent

  • Critical WCAG 4.1.2 A

    Custom buttons have no name

    Some elements that act as buttons, links or menu items were custom-built and have no readable name.

    aria-command-name

  • Moderate WCAG 4.1.2 A

    Accessibility attributes are used in the wrong situation

    Some elements use accessibility attributes that their type allows only under certain conditions, for example aria-checked on a real checkbox or tree-table attributes on an ordinary table row.

    aria-conditional-attr

  • Minor WCAG 4.1.2 A

    Some elements use outdated accessibility roles

    Some elements use roles that the accessibility standard (WAI-ARIA) has deprecated, for example role="directory".

    aria-deprecated-role

  • Critical WCAG 1.3.1 A

    The whole page is hidden from screen readers

    The <body> element of the page has aria-hidden="true", which tells screen readers to ignore all of its content.

    aria-hidden-body

  • Serious WCAG 4.1.2 A

    Hidden elements can still be reached with the keyboard

    Some parts of the page are hidden from screen readers but still receive keyboard focus.

    aria-hidden-focus

  • Critical WCAG 4.1.2 A

    Custom input fields have no label

    Some custom-built input fields, such as a search box or a country picker, have no name that assistive technology can read.

    aria-input-field-name

  • Moderate WCAG 1.1.1 A

    Some gauges have no name

    Some elements marked as a meter (a gauge showing a value in a range, such as password strength, stock level or a rating) have no text that says what they measure.

    aria-meter-name

  • Moderate WCAG 1.1.1 A

    Some progress bars have no name

    Some elements marked as a progress bar have no text that says what they show, for example "spend €20 more for free shipping", checkout steps or a loading indicator.

    aria-progressbar-name

  • Moderate WCAG 4.1.2 A

    Some labels are placed where screen readers ignore them

    Some elements use accessibility attributes that are not allowed for their type, most often aria-label on a plain <div> or <span> with no role.

    aria-prohibited-attr

  • Serious WCAG 4.1.2 A

    Custom controls are missing required information

    Some custom controls declare a role but miss information that role needs, such as whether a dropdown is open.

    aria-required-attr

  • Serious WCAG 1.3.1 A

    Custom menus or lists are built incorrectly

    Some custom components, such as menus, tab lists or listboxes, do not contain the items they need inside them.

    aria-required-children

  • Moderate WCAG 1.3.1 A

    Custom menu items or tabs are outside their group

    Some custom items, such as menu items, tabs or options, are not inside the group they belong to.

    aria-required-parent

  • Serious WCAG 4.1.2 A

    Some elements use a role that does not exist

    Some elements have a role attribute with a misspelled, made-up or abstract value, so assistive technology cannot tell what they are.

    aria-roles

  • Serious WCAG 4.1.2 A

    Some switches and checkboxes have no name

    Some custom toggle controls (checkboxes, switches, radio buttons or menu options built with ARIA roles) have no readable label.

    aria-toggle-field-name

  • Moderate WCAG 4.1.2 A

    Some tooltips are empty

    Some elements marked as tooltips (role="tooltip") have no readable text.

    aria-tooltip-name

  • Serious WCAG 4.1.2 A

    Accessibility attributes are misspelt

    Some attributes start with "aria-" but are not real ARIA attributes, usually because of a typo.

    aria-valid-attr

  • Serious WCAG 4.1.2 A

    Accessibility attributes have wrong values

    Some accessibility attributes in the code have values that are not allowed or point to elements that do not exist.

    aria-valid-attr-value

  • Moderate WCAG 1.3.5 AA

    Checkout fields are not filled in automatically

    Some form fields use autocomplete values that are invalid or do not match the field, so browsers cannot fill them in.

    autocomplete-valid

  • Moderate WCAG 1.4.12 AA

    Text spacing cannot be adjusted

    Some text has its line, letter or word spacing locked with !important in a style attribute, so readers cannot change it with their own settings.

    avoid-inline-spacing

  • Minor WCAG 2.2.2 A

    The page uses outdated blinking-text markup

    The page contains the old <blink> element, which was designed to make text flash on and off.

    blink

  • Critical WCAG 4.1.2 A

    Some buttons have no name

    Some buttons have no readable label, for example an icon-only "add to cart", search or menu button.

    button-name

  • Serious WCAG 2.4.1 A

    There is no quick way to skip to the main content

    The page has no skip link, heading or main landmark that lets keyboard and screen reader users jump past the header and menu.

    bypass

  • Serious WCAG 1.4.3 AA

    Text is hard to read because of low contrast

    Some text is too light against its background, for example grey text on white or white text on a pale button.

    color-contrast

  • Serious WCAG 1.3.4 AA

    The site works in only one screen orientation

    The site's styles force the page into portrait or landscape only, so when a phone or tablet is held the other way, the content is rotated, cut off or hidden.

    css-orientation-lock

  • Minor WCAG 1.3.1 A

    A label-and-value list is built incorrectly

    A description list (<dl>), often used for product specifications or chosen options, contains elements in the wrong place or order.

    definition-list

  • Minor WCAG 1.3.1 A

    A label or value stands outside its list

    A <dt> or <dd> element (a label or value, often in product specifications) is not inside a <dl> description list.

    dlitem

  • Moderate WCAG 2.4.2 A

    The page has no title

    The page has no title in its code, so browser tabs, bookmarks and screen readers show nothing useful.

    document-title

  • Serious WCAG 4.1.2 A

    Some labels point to the wrong element

    Two or more elements share the same id, and that id is used to connect a label, description or error message to a field or control.

    duplicate-id-aria

  • Moderate WCAG 3.3.2 A

    Some form fields have more than one label

    A form field, such as an email, quantity or address field, is connected to two or more <label> elements.

    form-field-multiple-labels

  • Serious WCAG 2.1.1 A

    Keyboard users cannot reach some embedded content

    An embedded frame (iframe) contains links, buttons or form fields, but the frame itself is set to tabindex="-1", which takes it out of the keyboard order.

    frame-focusable-content

  • Moderate WCAG 4.1.2 A

    Embedded content has no name

    An embedded frame, such as a video, map, chat or payment widget, has no title describing it.

    frame-title

  • Moderate WCAG 4.1.2 A

    Several embedded frames have the same name

    Two or more embedded frames (iframes) on the page have the same title, even though they show different content, for example several product videos all called "YouTube video player".

    frame-title-unique

  • Serious WCAG 3.1.1 A

    The page does not say which language it is in

    The page does not declare its language, so assistive technology has to guess how to pronounce the text.

    html-has-lang

  • Serious WCAG 3.1.1 A

    The page's language setting is wrong

    The page declares a language code that does not exist, for example a typo or a made-up value.

    html-lang-valid

  • Moderate WCAG 3.1.1 A

    The page declares two different languages

    The page's <html> tag has both a lang and an xml:lang attribute, and they name different languages, for example lang="de" and xml:lang="en".

    html-xml-lang-mismatch

  • Serious WCAG 1.1.1 A

    Images have no text description

    Some images have no alternative text, so people who cannot see them get no information about what they show.

    image-alt

  • Critical WCAG 4.1.2 A

    Some form buttons have no name

    Some buttons made with <input type="button">, "submit" or "reset" have no readable text, for example a search or newsletter button that shows only an icon or an empty value.

    input-button-name

  • Critical WCAG 1.1.1 A

    An image button has no text description

    A button made from an image has no text alternative, so it is unclear what it does.

    input-image-alt

  • Critical WCAG 4.1.2 A

    Form fields have no label

    Some form fields have no label that assistive technology can read, so it is unclear what to type in them.

    label

  • Moderate WCAG 2.5.3 A

    Buttons have a hidden name that differs from their visible text

    Some buttons or links show one text on screen but carry a different hidden name (aria-label) that does not contain the visible words, for example a button that says "Buy now" but is named "Submit".

    label-content-name-mismatch

  • Moderate WCAG 1.4.1 A

    Links in text look like normal text

    Some links inside paragraphs are shown only by a colour change, with no underline or other visible marker.

    link-in-text-block

  • Serious WCAG 2.4.4 A

    Some links do not say where they go

    Some links have no readable text, often icons such as a cart, a heart or a logo without a text label.

    link-name

  • Minor WCAG 1.3.1 A

    A list is built incorrectly

    A bulleted or numbered list contains elements that do not belong directly inside a list.

    list

  • Minor WCAG 1.3.1 A

    A list item is outside a list

    An element marked as a list item is not inside a list, so its structure is lost.

    listitem

  • Moderate WCAG 2.2.2 A

    Some text scrolls and cannot be stopped

    The page uses the outdated <marquee> element, typically a scrolling ticker such as "Free shipping over €50" or a sale announcement.

    marquee

  • Serious WCAG 2.2.1 A

    The page reloads or redirects by itself

    The page uses <meta http-equiv="refresh"> with a delay, so after some seconds or minutes it reloads itself or jumps to another address without the shopper asking for it.

    meta-refresh

  • Serious WCAG 1.4.4 AA

    Visitors cannot zoom the page on mobile

    The page tells mobile browsers to block or limit pinch-to-zoom.

    meta-viewport

  • Serious WCAG 4.1.2 A

    Clickable elements are nested inside each other

    Some clickable elements sit inside other clickable elements, for example a wishlist button inside a clickable product card.

    nested-interactive

  • Moderate WCAG 1.4.2 A

    Some videos or sounds start playing with audio by themselves

    A video or audio element is set to start on its own with sound, for example a hero video, a product video or background music, and there may be no easy way to stop it.

    no-autoplay-audio

  • Moderate WCAG 1.1.1 A

    Some embedded files or media have no text description

    Content embedded with an <object> tag, for example a PDF size chart, a catalogue, an interactive viewer or older media, has no text that says what it is.

    object-alt

  • Moderate WCAG 1.3.1 A

    Some headings are only bold or large text

    Some paragraphs look like headings because they are bold, italic or larger, but in the code they are ordinary text, not real headings.

    p-as-heading

  • Moderate WCAG 1.1.1 A

    Some graphics have no text description

    Some elements are marked as images but have no text alternative, for example star ratings or icon graphics.

    role-img-alt

  • Serious WCAG 2.1.1 A

    Some scrollable areas cannot be used with a keyboard

    Some boxes on the page scroll, but keyboard users cannot move into them to scroll.

    scrollable-region-focusable

  • Critical WCAG 4.1.2 A

    A dropdown has no label

    A dropdown list has no label that assistive technology can read.

    select-name

  • Minor WCAG 2.1.1 A

    A clickable image only works with a mouse

    The page uses a server-side image map: a linked image where the server decides what to open from the exact spot clicked, for example an old store-locator map or a clickable catalogue picture.

    server-side-image-map

  • Serious WCAG 4.1.2 A

    Some expandable sections have no name

    The clickable header of an expandable section (a <summary> element) has no readable text, for example a product details accordion, a filter group, an FAQ item or a menu opened by an icon.

    summary-name

  • Moderate WCAG 1.1.1 A

    Some vector graphics have no text description

    Some SVG graphics, such as logos, icons or badges, are marked as images but have no text alternative.

    svg-img-alt

  • Minor WCAG 1.3.1 A

    A table's title is written inside a table cell

    A data table, such as a size chart or price list, has its title in a merged first row of cells instead of in a proper table caption.

    table-fake-caption

  • Moderate WCAG 2.5.8 AA

    Buttons and links are too small to tap easily

    Some buttons or links are smaller than 24 by 24 pixels and too close to their neighbours.

    target-size

  • Moderate WCAG 1.3.1 A

    Large tables have cells without headers

    A larger data table (more than 3 by 3 cells), such as a size chart, a specification table or a shipping price table, has no header cells, so the values are not linked to what they mean.

    td-has-header

  • Moderate WCAG 1.3.1 A

    Some table cells point to the wrong headers

    A table, for example a size chart, a specification table or a shipping price table, links its cells to their headers with the headers attribute, but some of those links point to something that is not a header cell in the same table.

    td-headers-attr

  • Moderate WCAG 1.3.1 A

    Some table headers do not describe any data

    A table has header cells (<th>) that are not connected to any data cells, for example an empty header row in a size chart, or a table that uses <th> only to make text bold.

    th-has-data-cells

  • Moderate WCAG 3.1.2 AA

    Some text is marked with a wrong language code

    A part of the page, for example a language switcher, a quote or a block of text in another language, declares a language code that does not exist, such as "ua" instead of "uk" or a typo.

    valid-lang

  • Serious WCAG 1.2.2 A

    Videos have no captions

    A video on the page, for example a product demo, a brand video or a how-to clip, has no captions track.

    video-caption

WCAG AAA

3

The highest WCAG level. Not required by the laws; shown in the report as recommendations.

  • Minor WCAG 1.4.6 AAA

    Text does not reach the higher (AAA) contrast level

    Some text meets the basic contrast level but not the stricter one: 7:1 for normal text and 4.5:1 for large text. This is a recommended practice beyond WCAG AA, not a requirement.

    color-contrast-enhanced

  • Minor WCAG 2.4.9 AAA

    Links with the same text lead to different places

    Several links on the page use the same wording, such as "Read more" or "Shop now", but go to different pages. This is a WCAG level AAA recommendation, beyond the AA level the law relies on.

    identical-links-same-purpose

  • Minor WCAG 2.2.4 AAA

    The page refreshes itself after a delay, even a long one

    The page uses <meta http-equiv="refresh"> to reload itself or jump to another address after a delay. Avoiding every timed refresh, even with a delay of many hours, is a WCAG level AAA recommendation, beyond the AA level the law relies on.

    meta-refresh-no-exceptions

Recommended practices

28

Not WCAG requirements, but they make the site easier to use with a screen reader or keyboard. Shown as recommendations.

  • Minor

    Several elements use the same keyboard shortcut

    The page defines keyboard shortcuts with the accesskey attribute, and two or more elements share the same key. This is a recommended practice, not a WCAG AA requirement.

    accesskeys

  • Minor

    An element has a role that does not fit it

    An HTML element has a role attribute that is not allowed for that element, for example a <button> marked as a heading or a <nav> menu marked as a button. This is a recommended practice, not a WCAG AA requirement on its own, but it often points to other problems.

    aria-allowed-role

  • Moderate

    A pop-up window has no name

    A dialog such as a cart drawer, cookie banner, newsletter pop-up or quick-view window is marked with role="dialog" or role="alertdialog" but has no accessible name. This is a recommended practice, not a WCAG AA requirement by itself.

    aria-dialog-name

  • Moderate

    A text block hides the links or buttons inside it

    An element marked with role="text" contains a link, button or other element that can receive focus. role="text" is a non-standard role that tells some screen readers to read everything inside as plain text. This is a recommended practice, not a WCAG AA requirement.

    aria-text

  • Moderate

    Items in a tree menu have no name

    Some items in a tree-style menu, for example an expandable category tree, have no text that assistive technology can read. This is a recommended practice, not a WCAG AA requirement.

    aria-treeitem-name

  • Minor

    A heading on the page is empty

    The page contains a heading with no readable text, often left over from an empty section title, a theme block or an icon-only heading. This is a recommended practice, not a WCAG AA requirement.

    empty-heading

  • Minor

    A table header cell is empty

    A table has a header cell with no text, for example the top-left corner of a size chart or a column of action buttons. This is a recommended practice, not a WCAG AA requirement.

    empty-table-header

  • Minor

    A keyboard-focusable element does not say what it is

    An element that can be reached with the Tab key, such as a clickable div or span, has no role that tells assistive technology it is a button, link or other control. axe marks this check as experimental, so results need a manual review. This is a recommended practice, not a WCAG AA requirement.

    focus-order-semantics

  • Moderate

    Heading levels skip a step

    The headings on the page jump levels, for example from an <h2> straight to an <h4>, so the outline of the page has gaps. This is a recommended practice, not a WCAG AA requirement.

    heading-order

  • Minor

    Image description repeats the text next to it

    An image's alternative text is the same as the visible text beside it, for example a product photo with the alt text "Blue linen shirt" in a link that also says "Blue linen shirt". This is a recommended practice, not a WCAG AA requirement.

    image-redundant-alt

  • Serious

    Form fields have no visible label

    Some form fields are named only by a tooltip (the title attribute), a hidden description or a hidden label, so no label is shown on screen. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    label-title-only

  • Minor

    The site header sits inside another page area

    The header region (the "banner" landmark with the logo, search and cart) is nested inside another landmark, such as the main content or a navigation area, instead of standing on its own at the top of the page. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    landmark-banner-is-top-level

  • Minor

    A sidebar sits inside another page area

    An <aside> or "complementary" region, such as a filter sidebar, related products or a promo box, is nested inside another landmark instead of standing on its own next to the main content. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    landmark-complementary-is-top-level

  • Minor

    The site footer sits inside another page area

    The footer region (the "contentinfo" landmark with contacts, legal links and payment information) is nested inside another landmark, such as the main content, instead of standing on its own at the bottom of the page. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    landmark-contentinfo-is-top-level

  • Moderate

    The main content sits inside another page area

    The <main> element or role="main" region, which marks where the page's own content starts, is nested inside another landmark, such as the header, a navigation area or a sidebar. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    landmark-main-is-top-level

  • Moderate

    The page has more than one site header

    The page contains two or more header ("banner") regions, for example a normal header plus a separate sticky or mobile copy, or a promo strip marked as a banner. This is a recommended practice that goes beyond the WCAG 2.2 AA level the accessibility laws rely on.

    landmark-no-duplicate-banner

  • Minor

    The page has more than one main footer

    The page marks several areas as the site footer, for example the shop footer and a second footer inside a pop-up or widget. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    landmark-no-duplicate-contentinfo

  • Moderate

    The page has more than one main content area

    Two or more parts of the page are marked as the main content. There should be only one. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    landmark-no-duplicate-main

  • Moderate

    The page has no marked main content area

    Nothing on the page is marked as the main content, so assistive technology cannot tell where the important part starts. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    landmark-one-main

  • Minor

    Two page areas sound the same to screen readers

    The page has several areas of the same type, such as two menus or two sidebars, with no label that tells them apart. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    landmark-unique

  • Minor

    Mobile zoom is limited to a small amount

    The page lets visitors zoom on a phone, but stops them before they can enlarge it five times. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    meta-viewport-large

  • Moderate

    The page has no main heading

    The page has no top-level heading (H1) that names what it is about, for example the product name or category name. This is a recommended practice that goes beyond the WCAG 2.2 AA level the law relies on.

    page-has-heading-one

  • Minor

    A decorative element is still announced to screen readers

    An element marked as decorative (role="presentation" or role="none") also has ARIA attributes or can receive keyboard focus, so some screen readers ignore it and others do not. This is a recommended practice beyond the WCAG 2.2 AA level.

    presentation-role-conflict

  • Minor

    Some content sits outside the page's main areas

    Parts of the page are not inside landmarks such as header, navigation, main content or footer. This is a recommended practice beyond the WCAG 2.2 AA level.

    region

  • Minor

    Table headers use the scope attribute incorrectly

    A table uses the scope attribute in a wrong way, for example on an ordinary data cell or with a value other than row, col, rowgroup or colgroup. This is a recommended practice beyond the WCAG 2.2 AA level.

    scope-attr-valid

  • Moderate

    The "Skip to content" link does not work

    The page has a skip link, but the place it points to does not exist or cannot receive focus. This is a recommended practice beyond the WCAG 2.2 AA level.

    skip-link

  • Serious

    The keyboard order is forced into an unexpected sequence

    Some elements have a tabindex value greater than 0, which makes them jump ahead of everything else when someone moves through the page with the Tab key. This is a recommended practice beyond the WCAG 2.2 AA level.

    tabindex

  • Minor

    A table's caption and summary repeat the same text

    A table has the same text in its <caption> and in its summary attribute, so screen readers may read it twice. This is a recommended practice beyond the WCAG 2.2 AA level.

    table-duplicate-name