<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1.0" data-next-head=""/><meta name="description" content="Solve accessibility issues before they reach your customers." data-next-head=""/><meta property="og:title" content="Accessibility Insights" data-next-head=""/><meta property="og:type" content="website" data-next-head=""/><meta property="og:url" content="https://accessibilityinsights.io" data-next-head=""/><meta property="og:description" content="Solve accessibility issues before they reach your customers." data-next-head=""/><meta property="og:image" content="https://accessibilityinsights.io/img/accessibilityinsights.png" data-next-head=""/><meta name="twitter:card" content="summary" data-next-head=""/><link rel="shortcut icon" href="https://accessibilityinsights.io/img/accessibilityinsights.png" data-next-head=""/><title data-next-head="">Accessibility Insights</title><link rel="preload" href="/_next/static/chunks/0vmnc4ux29t_c.css" as="style"/><link rel="stylesheet" href="/_next/static/chunks/0vmnc4ux29t_c.css" data-n-g=""/><link rel="preload" href="/_next/static/chunks/0dh-jb0c~qk3t.css" as="style"/><link rel="stylesheet" href="/_next/static/chunks/0dh-jb0c~qk3t.css" data-n-p=""/><link rel="preload" href="/_next/static/chunks/0o_0ic~9lskr~.css" as="style"/><link rel="stylesheet" href="/_next/static/chunks/0o_0ic~9lskr~.css" data-n-p=""/><noscript data-n-css=""></noscript><script src="/_next/static/chunks/0iemt9ja723pv.js" defer=""></script><script src="/_next/static/chunks/0ghakqrjog-aq.js" defer=""></script><script src="/_next/static/chunks/0seymbz5j-och.js" defer=""></script><script src="/_next/static/chunks/0g3mk7d6qbbt-.js" defer=""></script><script src="/_next/static/chunks/turbopack-0rbcost8o.euf.js" defer=""></script><script src="/_next/static/chunks/0o2c~8szmy9s-.js" defer=""></script><script src="/_next/static/chunks/turbopack-00lmz8jw_1iam.js" defer=""></script><script src="/_next/static/zPz4PkKae7VfVFSMyetxM/_buildManifest.js" defer=""></script><script src="/_next/static/zPz4PkKae7VfVFSMyetxM/_ssgManifest.js" defer=""></script><script src="/_next/static/zPz4PkKae7VfVFSMyetxM/_clientMiddlewareManifest.js" defer=""></script></head><body><div id="__next"><a id="bypass" href="#mainContent">Skip to main content</a><div class="nav-module-scss-module__GGOiQG__fixedHeaderContainer"><div class="nav-module-scss-module__GGOiQG__headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/a11yinsights-blue.svg" alt=""/><div class="nav-module-scss-module__GGOiQG__headerTitleWithLogo">Accessibility Insights</div></a><div class="nav-module-scss-module__GGOiQG__searchBarContainer"><span class="nav-module-scss-module__GGOiQG__searchIcon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M10 2a8 8 0 105.293 14.293l5.707 5.707 1.414-1.414-5.707-5.707A8 8 0 0010 2zm0 2a6 6 0 110 12 6 6 0 010-12z"></path></svg></span><input type="text" placeholder="Search Documentations" class="nav-module-scss-module__GGOiQG__searchBarInput" aria-label="Search Documentations" value=""/></div><div class="nav-module-scss-module__GGOiQG__navigationSlider"><nav class="nav-module-scss-module__GGOiQG__slidingNav" aria-label="Site-level"><ul class="nav-site nav-site-internal"><li class=""><a href="/downloads/" target="_self">Downloads</a></li><li class=""><a href="/docs/web/overview/" target="_self">Docs</a></li><li class=""><a href="/updates/" target="_self">Updates</a></li><li class=""><a href="/docs/general/faq/" target="_self">FAQ</a></li></ul></nav></div></header></div></div> <div class="navPusher"><div class="index"><div class="index-module-scss-module__A3IqLa__indexContainer mainContainer" id="mainContent" role="main"><div class="index-module-scss-module__A3IqLa__homeContainer"><div class="homeSplashFade"><div class="index-module-scss-module__A3IqLa__homeWrapper index-module-scss-module__A3IqLa__wrapper"><div class="index-module-scss-module__A3IqLa__taglineActionContainer"><h1 class="index-module-scss-module__A3IqLa__projectTagline">Solve accessibility issues before they reach your customers.</h1><div class="section promoSection"><div class="index-module-scss-module__A3IqLa__callToAction"><div class="buttonLinkWrapper"><a class="index-module-scss-module__A3IqLa__button button" href="/downloads" target="_self"> <!-- -->Get Accessibility Insights</a></div></div></div></div><img class="index-module-scss-module__A3IqLa__projectImage" src="/img/splash-project.png" alt="Accessibility Insights for Windows running on a desktop computer and Accessibility Insights for Web running on a laptop"/></div></div></div><section class="index-module-scss-module__A3IqLa__indexSection index-module-scss-module__A3IqLa__wrapper" id="tools"><div class="gridblock-module-scss-module__yBuiUW__gridBlock"><div id="toolWeb" class="gridblock-module-scss-module__yBuiUW__gridComponent tool gridblock-module-scss-module__yBuiUW__twoByGridBlock"><h2>For Web</h2><p>Browser extension for Chrome and the new Microsoft Edge to test accessibility of webpages and web applications</p><a href="/docs/web/overview/">Learn about Accessibility Insights for Web</a></div><div id="toolWindows" class="gridblock-module-scss-module__yBuiUW__gridComponent tool gridblock-module-scss-module__yBuiUW__twoByGridBlock"><h2>For Windows</h2><p>Windows desktop tool to test accessibility of Windows applications</p><a href="/docs/windows/overview/">Learn about Accessibility Insights for Windows</a></div></div></section><section class="index-module-scss-module__A3IqLa__indexSection index-module-scss-module__A3IqLa__wrapper" id="values"><h2>Ship accessible products to your customers</h2><div class="gridblock-module-scss-module__yBuiUW__gridBlock"><div id="valueAgile" class="gridblock-module-scss-module__yBuiUW__gridComponent value gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/values-agile.svg"/></div><h3>Agile</h3><p>Easy for developers to address most common accessibility errors in under 5 minutes.</p></div><div id="valueComplete" class="gridblock-module-scss-module__yBuiUW__gridComponent value gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/values-complete.svg"/></div><h3>Up-to-date</h3><p>Assess your websites for WCAG 2.1 AA coverage.</p><p>Test your Windows app with trusted Windows experiences such as Inspect and Color Contrast Analyzer in a single tool.</p></div><div id="valueCommunity" class="gridblock-module-scss-module__yBuiUW__gridComponent value gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/values-community.png"/></div><h3>Community</h3><p>Every step of our journey embraces collaboration with the greater accessibility community; as our next step, these tools are now open source in GitHub.</p><a href="/docs/general/faq#how-can-i-contribute-to-accessibility-insights-tools">Visit our GitHub repos</a></div></div></section><section class="index-module-scss-module__A3IqLa__indexSection index-module-scss-module__A3IqLa__wrapper" id="index-module-scss-module__A3IqLa__highlights"><div id="highlightVisualHelper" class="index-module-scss-module__A3IqLa__highlight"><div class="index-module-scss-module__A3IqLa__label"><h2>Visual Helper</h2><p>Quickly spot accessibility errors with visualizations and learn how to fix issues with simple guidance.</p></div><div class="index-module-scss-module__A3IqLa__imageWrapper"><img class="nextImage" src="/img/highlight-visualhelper.png" alt="Accessibility Insights for Web&#x27;s error visualization on the target page"/></div></div><div id="highlightTestModes" class="index-module-scss-module__A3IqLa__highlight"><div class="index-module-scss-module__A3IqLa__label"><h2>Dedicated Tests</h2><ul role="list" class="index-module-scss-module__A3IqLa__highlightList"><li>Run FastPass to swiftly catch most common accessibility issues in less than 5 minutes.</li><li>Verify UI Automation properties using Live Inspect.</li><li>Investigate contrast ratios using Color Contrast Analyzer.</li></ul></div><div class="index-module-scss-module__A3IqLa__imageWrapper"><img class="nextImage" src="/img/highlight-testmode.png" alt="Accessibility Insights for Windows&#x27;s Color Contrast Analyzer"/></div></div></section><section class="index-module-scss-module__A3IqLa__indexSection index-module-scss-module__A3IqLa__wrapper" id="index-module-scss-module__A3IqLa__topics"><h2>Learn more about Accessibility Insights</h2><p>Learn about how Accessibility Insights helps developers ship accessible products to their customers.</p><div class="gridblock-module-scss-module__yBuiUW__gridBlock"><div id="topicFastPassWeb" class="gridblock-module-scss-module__yBuiUW__gridComponent topic gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/topic-fastpass.svg"/></div><h3>FastPass</h3><p>Start by finding common, high-impact accessibility issues on your apps using FastPass.</p><div><div><p><a href="/docs/web/getstarted/fastpass/">Learn about FastPass for Web</a></p><p><a href="/docs/windows/getstarted/fastpass/">Learn about FastPass for Windows</a></p></div></div></div><div id="topicQuality" class="gridblock-module-scss-module__yBuiUW__gridComponent topic gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/topic-quality.svg"/></div><h3>Commitment to quality</h3><p>We are committed to quality in our tools.</p><a href="/docs/general/quality/">Learn about our commitment to quality</a></div><div id="topicCommunity" class="gridblock-module-scss-module__yBuiUW__gridComponent topic gridblock-module-scss-module__yBuiUW__threeByGridBlock"><div class="gridblock-module-scss-module__yBuiUW__imageWrapper"><img class="nextImage" alt="" src="/img/topic-community.svg"/></div><h3>Help the community</h3><p>By opting into telemetry, you help the community develop inclusive software.</p><a href="/docs/general/telemetry/">Learn about how we use telemetry data</a></div></div></section><section class="index-module-scss-module__A3IqLa__indexSection index-module-scss-module__A3IqLa__wrapper" id="index-module-scss-module__A3IqLa__getStarted"><h2>Get Started</h2><p>Choose a platform to start making your project accessible.</p><div class="index-module-scss-module__A3IqLa__callToAction"><div class="buttonLinkWrapper"><a class="index-module-scss-module__A3IqLa__button button" href="/downloads" target="_self"> <!-- -->Get Accessibility Insights</a></div></div></section></div></div><footer class="footer-module-scss-module__HLfCxa__navFooter" id="footer"><div class="footer-module-scss-module__HLfCxa__wrapper wrapper"><ul><li><a href="/sitemap/" target="_blank" rel="noreferrer">Sitemap</a></li><li><a href="/docs/general/support/" target="_blank" rel="noreferrer">Support</a></li><li><a href="https://privacy.microsoft.com/en-us/privacystatement" target="_blank" rel="noreferrer">Privacy</a></li><li><a href="https://www.microsoft.com/legal/terms-of-use" target="_blank" rel="noreferrer">Terms of Use</a></li><li><a href="https://www.microsoft.com/trademarks" target="_blank" rel="noreferrer">Trademarks</a></li></ul><div class="footer-module-scss-module__HLfCxa__copyrightWrapper"><a href="https://www.microsoft.com"><img src="/img/microsoft-logo_gray.png" alt="Microsoft"/></a><div>© 2026 Microsoft</div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"frontMatter":{"title":"Accessibility Insights"},"data":[{"title":"/info-examples","description":"Info and Examples for Accessibility Insights","content":""},{"title":"/info-examples/web/area-alt","description":"area-alt","content":"\r\nInteractive `\u003carea\u003e` elements (those with a valid `href` or which have been made focusable and interactive by use of the `tabindex` attribute and scripting) must have alternative text.\r\n\r\n## Why it matters\r\n\r\nAn image map is a single image with multiple selectable areas. People with good vision can infer the purpose of each clickable area from its visual aspects. People who use screen readers or other assistive technologies rely on alternative text to communicate the purpose of each area.\r\n\r\n## How to fix\r\n\r\nProvide alternative text for each `\u003carea\u003e` element using ONE of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label`\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n-   `alt` attribute\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn image map of a business's locations is comprised of three `\u003carea\u003e` elements, each representing a business location.\r\nThe `\u003carea\u003e` elements do not have any alternative text. When an assistive technology user selects an `\u003carea\u003e`, its `href` value might (or might not) be announced. In any case, the `href` value isn't helpful.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cp\u003eSelect a location to see our business hours:\u003c/p\u003e\r\n\u003cimg src=\"locations.png\" width=\"800\" height=\"400\" alt=\"Map of business locations\" usemap=\"#locations-map\"\u003e\r\n\u003cmap name=\"locations-map\"\u003e\r\n[\u003carea shape=\"rect\" coords=\"0,0,200,400\" href=\"location1.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,400,400\" href=\"location2.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,600,400\" href=\"location3.htm\"\u003e]\r\n\u003c/map\u003e`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nEach `\u003carea\u003e` element has an `alt` attribute that identifies its corresponding business location. All users have the information they need to make an informed selection.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cp\u003eSelect a location to see our business hours:\u003c/p\u003e\r\n\u003cimg src=\"locations.png\" width=\"800\" height=\"400\" alt=\"Map of business locations\" usemap=\"#locations-map\"\u003e\r\n\u003cmap name=\"locations-map\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,200,400\" [alt=\"Corporate headquarters\"] href=\"location1.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,400,400\" [alt=\"Elm Street store\"] href=\"location2.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,600,400\" [alt=\"Maple Street store\"] href=\"location3.htm\"\u003e\r\n\u003c/map\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `alt` attribute\r\n-   Element has an `aria-labelledby` attribute that references an element or elements containing text\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-allowed-attr","description":"aria-allowed-attr","content":"\r\nElements must use only ARIA attributes allowed for their implicit or explicit ARIA role.\r\n\r\n## Why it matters\r\n\r\nAn ARIA `role` attribute can be added to various HTML elements to instruct assistive technologies to expose the element as something other than its native HTML element type. For example, an `\u003ca\u003e` element with `role=\"button\"` is to be exposed as a button, not a link.  **Note:** modifying an element's role will only change how it is exposed to assistive technology. Any additional functional changes to an element (to either add expected behaviors, or supress native ones), must be separately made by web developers, typically via scripting.\r\n\r\nSome ARIA _property_ and _state_ attributes are allowed only for certain ARIA roles.\r\nWhen an assistive technology encounters a mismatch between an element's role and its state or property attributes, it might ignore attributes or respond in an unexpected way.\r\nAs a result, people who use assistive technologies might find the element difficult or impossible to use.\r\n\r\n## How to fix\r\n\r\n1. Identify the [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) that best identifies the element’s purpose, function, or both.\r\n1. Examine the element in the [Chrome](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane) or [Edge](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide/elements/accessibility) accessibility pane to verify that it has the correct role attribute.\r\n1. Use only ARIA _state_ and _property_ attributes that are allowed for the given role.\r\n1. Make sure the value of each ARIA _property_ attribute is an accurate and valid value.\r\n1. Make sure the value of each ARIA _state_ attribute updates as needed to reflect the element’s current state.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cbutton\u003e` element has an ARIA role attribute (`role=\"option\"`). This role overrides the implicit `button` role, and instead communicates to assistive technologies to expose the `\u003cbutton\u003e` as a selectable item in a listing of options (i.e., `role=\"listbox\"`).\r\nHowever, the element also has an ARIA state attribute (`aria-pressed=\"true\"`). This attribute is allowed for buttons, but is not a valid attribute for options. Because browsers may not expose incorrect attributes for roles, and some assistive technologies ignore mismatched ARIA attributes, users likely won't know whether this custom option is selected.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cbutton [role=\"option\" aria-pressed=\"true\"] id=\"available\"\u003eAvailable items\u003c/button\u003e`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nInstead, use the correct ARIA state attribute (`aria-selected`) for the `option` role. Set to `true` in the selected state, and `false` when not selected.\r\nThe attribute's value is updated through scripting (not shown) to ensure it correctly communicates the current state to assistive technologies.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cbutton role=\"option\" [aria-selected=\"true\"] id=\"available\"\u003eAvailable items\u003c/button\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ALL of the following are true:\r\n\r\n-   ARIA attribute is used correctly for the implicit or explicit role of the element\r\n-   ARIA attribute is widely supported by browsers and assistive technologies\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/wai-aria/#roles_categorization\"\u003e\r\n        Accessible Rich Internet Applications (WAI-ARIA) 1.2: Categorization of Roles\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/html-aria/\"\u003eARIA in HTML: ARIA Roles, States, and Properties allowed per HTML element\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-allowed-role","description":"aria-allowed-role","content":"\r\nElements must use only ARIA roles appropriate for that element.  \r\n\r\n## Why it matters \r\n\r\nAn [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization)  attribute can be added to an element to instruct assistive technologies to expose the element as something other than its native HTML element type. For example, an `\u003ca\u003e` element with `role=\"button\"` is to be exposed as a button, not a link. \r\n\r\nSome ARIA roles are only appropriate to specify on certain elements. The reason for this is that some HTML elements have have what's referred to as \"strong native semantics\" - meaning that these elements have implicit ARIA semantics and features which can contradict, or cause uncertain behaviors for AT when developers specify ARIA roles on elements which do not share these native semantics. As a result, people who use assistive technologies might find the element difficult or impossible to use, **or** the explicitly set role may be entirely ignored to mitigate the contradictory semantics the developer has specified.  \r\n\r\n## How to fix \r\n1. Examine the element in the [Chrome](https://developer.chrome.com/docs/devtools/#pane) or [Edge](https://learn.microsoft.com/en-us/archive/microsoft-edge/legacy/developer/) accessibility pane to verify that it has the correct role attribute. \r\n\r\n2. As necessary, review the [ARIA in HTML specification](https://w3c.github.io/html-aria/#docconformance) to see which roles are allowed on specific HTML elements.\r\n\r\n3. Identify the [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) that best identifies the element’s function.  \r\n\r\n4. Assign a valid [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) if needed.  \r\n_Note: Some ARIA roles, while technically valid, are not widely supported by assistive technologies._\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis button has an `article` role which is not appropriate as buttons are interactive elements and articles are not. As such, people who use assistive technologies will not be able to effectiely interact with it, as its functionality will be obscured to them. \r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cbutton role=\"article\" \u003eI really am a button\u003c/button\u003e  `} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nRemoving the `role=”article”` from the button ensures everyone can correctly interact with the element.  \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cbutton \u003eI am a button\u003c/button\u003e `} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule \r\n\r\nThis rule passes if ALL of the following are true: \r\n- Elements with explicit role attributes have values that are both valid ARIA roles, and the role is allowed on the element to which it is specified.  \r\n- The role is widely supported in screen readers and other assistive technologies.\r\n\r\n## More Examples\r\n[Accessible Rich Internet Applications (WAI-ARIA) 1.2: Categorization of Roles](https://www.w3.org/TR/wai-aria/#roles_categorization) \r\n\r\n[ARIA in HTML: ARIA Roles, States, and Properties allowed per HTML element](https://www.w3.org/TR/html-aria/)\r\n\r\n[Understanding Success Criterion 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html)\r\n\r\n[Understanding Success Criterion 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships)\r\n"},{"title":"/info-examples/web/aria-command-name","description":"aria-command-name","content":"\r\nARIA buttons, links, and menuitems must have accessible names.\r\n\r\n## Why it matters\r\n\r\nARIA buttons and links are custom controls corresponding respectively to HTML `\u003cbutton\u003e`, and `\u003ca\u003e` elements with valid `href` attributes. There is no `\u003cmenuitem\u003e` element in HTML as it has been deprecated.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen an ARIA button, link, or menuitem doesn't have an accessible name, people who use assistive technologies will have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each element with `\"role=\"button\"`, `role=\"link\"`, or `role=\"menuitem\"`, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute\r\n\r\nBest\r\n\r\n-   Inner text that’s available to assistive technologies (_not_ marked with `display: none` or `aria-hidden=\"true\"`)\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis ARIA button, based on an `\u003ca\u003e` element, displays an icon of a speaker to communicate the button's function. Because purely visual content is not accessible to people who use assistive technologies, they can't determine the button's purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ca tabindex=\"0\" role=\"button\" id=\"mute\" aria-pressed=\"false\"\u003e\r\n\u003csvg aria-hidden=\"true\" focusable=\"false\"\u003e\r\n\u003cuse xlink:href=\"images/mute.svg#icon-sound\"\u003e\r\n\u003c/use\u003e\r\n\u003c/svg\u003e\r\n\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nVisible inner text is added to the `\u003ca\u003e` element, giving the button an accessible name. Its purpose is communicated to everyone.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ca tabindex=\"0\" role=\"button\" id=\"mute\" aria-pressed=\"false\"\u003e[Mute]\r\n\u003csvg aria-hidden=\"true\" focusable=\"false\"\u003e\r\n\u003cuse xlink:href=\"images/mute.svg#icon-sound\"\u003e\r\n\u003c/use\u003e\r\n\u003c/svg\u003e\r\n\u003c/a\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has inner text that is visible to screen readers\r\n-   Element has an `aria-labelledby` attribute that references an element or elements containing text\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-conditional-attr","description":"aria-conditional-attr","content":"\r\nElements with ARIA roles must be checked so that they’re used properly as intended with content.\r\n\r\n## Why it matters\r\n\r\nUsing ARIA attributes when they aren’t expected to be used can result in confusing behavior for assistive technology.  Using ARIA specifications makes it so people with disabilities can use those technologies and properly get the intended meaning of the content.\r\n\r\n## How to fix\r\nFor checkboxes you can do two things:  \r\n-\tMake sure that `aria-checked` is removed, and an HTML checkbox can be used by setting its `indeterminate` property.  \r\n-\tReplace the native HTML checkbox with a different element.\r\n  \r\nNote: Make sure the HTML checkbox is provided with a role and is keyboard accessible.  \r\n\r\nFor `tr` elements and where the role is a `row`, you may need to change the role of the parent `table` or `grid` to a `treegrid`.  \r\n\r\n## Example\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe `aria-checked` rule is listed as `true` and that makes it so that element isn't changed when the checkbox is activated.  Also the `row` elements for the ARIA attributes are used as a part of a `table` and should be used as a `treegrid`. \r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cinput type=\"checkbox\" [aria-checked=\"true\"]\u003e\r\n\r\n[\u003cdiv role=\"table\"\u003e]\r\n        \u003cdiv role=\"row\" aria-expanded=\"false\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-posinset=\"1\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-setsize=\"10\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-level=\"1\"\u003e...\u003c/div\u003e\r\n\u003c/div\u003e `} /\u003e\r\n\r\n\u003cPassSection\u003e\r\n\r\nThe `aria-checked label` was removed for the checkbox and was changed to a different element.  The parent element is a `treegrid` element for the ARIA `row` elements  \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`{\u003cinput type=\"checkbox\" checked}\u003e\r\n\r\n[\u003cdiv role=\"treegrid\"\u003e]\r\n        \u003cdiv role=\"row\" aria-expanded=\"false\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-posinset=\"1\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-setsize=\"10\"\u003e...\u003c/div\u003e\r\n        \u003cdiv role=\"row\" aria-level=\"1\"\u003e...\u003c/div\u003e\r\n\u003c/div\u003e `} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\nThis is when the rule passes for `aria-checked`:\r\n- It’s not used on an HTML input element where a type is a checkbox\r\n-\tBrowsers ignore `aria-checked`\r\n\r\nThis is when the rule passes for 'row' elements:\r\n-\t`aria-posinsert`, `aria-setsize`, `aria-expanded`, and `aria-level` for example are only used when `row` is a part of `treegrid`\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n  \u003cHyperLink href=\"https://dequeuniversity.com/rules/axe/4.8/aria-conditional-attr\"\u003eARIA attributes must be used as specified for the element’s role\u003c/HyperLink\u003e\r\n  \r\n  \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e4.1.2 Name, Role, Value\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-deprecated-role","description":"aria-deprecated-role","content":"\r\nAll values corresponding to ARIA roles must not be deprecated or abstract.\r\n\r\n## Why it matters\r\nUsing deprecated ARIA roles will make it so those elements aren’t recognized, and it won’t be correctly processed by screen readers or other assistive technology.  As a result, people may not be able to access essential information.\r\n\r\n## How to fix\r\n\r\nConsider using a `list` role instead, as it is the most equivalent role to the deprecated `directory` role.\r\n\r\n## Example\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA `div` element has been given the role of `directory`, which is a deprecated role and should not be used by developers.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003cdiv role=\"directory]\"\u003e\r\n  \u003c/div\u003e`} /\u003e\r\n\r\n\u003cPassSection\u003e\r\n\r\nThe `div` is meant to represent a list of content, so rather than the deprecated `directory` role, it is given a valid role of `list`\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003cdiv role=\"list\"]\u003e\r\n  \u003c/div\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if any of the values assigned to ARIA role attribute aren’t deprecated or abstract.  Deprecated roles are roles which the ARIA spec no longer recommends that authors use, and abstract roles are specifically for user agent implementation, and must never used by web authors.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://dequeuniversity.com/rules/axe/4.8/aria-deprecated-role\"\u003eDepreciated ARIA roles must not be used\u003c/HyperLink\u003e\r\n\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e4.1.2 Name, Role, Value\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-hidden-body","description":"aria-hidden-body","content":"\r\nThe attribute `aria-hidden=\"true\"` must not be used on the `\u003cbody\u003e` element.\r\n\r\n## Why it matters\r\n\r\nIn some browsers, the attribute `aria-hidden=\"true\"` hides an element and all its children from assistive technologies.\r\nUsers can still use the keyboard to navigate to any focusable child elements in the `\u003cbody\u003e`, but their content is inaccessible to people who use assistive technologies. For example, screen readers are silent.\r\n\r\n## How to fix\r\n\r\n1. Remove `aria-hidden=\"true\"` from the `\u003cbody\u003e` element.\r\n1. Use `aria-hidden=\"true\"` only on elements whose content is decorative or redundant from the perspective of people who use assistive technologies.\r\n   Note that adding `aria-hidden=\"false\"` to an element whose parent has `aria-hidden=\"true\"` would not reveal it to assistive technologies.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA web page includes a modal dialog. In an attempt to hide the underlying page content when the dialog is open, the attribute `aria-hidden=\"true\"` is added to the `\u003cbody\u003e` element.\r\nAs a result, all page content – including the modal dialog – is hidden from assistive technology users.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cbody class=\"has-dialog\" [aria-hidden=\"true\"]\u003e\r\n…\r\n\u003cbutton class=\"action-button\"\u003eSign in\u003c/button\u003e\r\n…`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe attribute `aria-hidden=\"true\"` is never applied to the `\u003cbody\u003e` element.\r\nInstead, when the dialog is open, elements outside the dialog are removed from the tab order\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cbody class=\"has-dialog\"\u003e\r\n…\r\n\u003cbutton class=\"action-button\" [tabindex=\"-1\"]\u003eSign in\u003c/button\u003e\r\n…\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No `aria-hidden` attribute is present on the document `\u003cbody\u003e` element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-hidden-focus","description":"aria-hidden-focus","content":"\r\nElements with `aria-hidden=\"true\"` must not contain focusable elements.\r\n\r\n## Why it matters\r\n\r\nIn some browsers, the attribute `aria-hidden=\"true\"` hides an element and all its children from assistive technologies.\r\nUsers can still use the keyboard to navigate to any focusable child elements, but their content is inaccessible to people who use assistive technologies. For example, screen readers are silent. (An element is focusable if it can receive input focus via scripting, mouse interaction, or keyboard tabbing.)\r\n\r\n## How to fix\r\n\r\nMake sure elements with `aria-hidden=\"true\"` do not contain focusable elements using one or more of the following methods.\r\n\r\n-   Use `aria-hidden=\"true\"` only on elements whose content is decorative or redundant from the perspective of people who use assistive technologies.\r\n-   Restructure the code so the focusable elements are not children of the hidden element.\r\n-   Where appropriate, make the child elements non-focusable (by applying the `disabled` attribute) or non-tabbable (by applying `tabindex=\"-1\"`).\r\n-   Where appropriate, hide elements from all users by applying `hidden`, `display:none`, or `visibility:hidden` attributes.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn alert is positioned off-screen and marked with `aria-hidden=\"true\"` until it’s needed. However, the alert contains an **OK** button that remains focusable even when the alert is hidden.\r\nKeyboard users can tab to the button, but they can’t to tell what it is.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cPassSection\u003e\r\n\r\nWhen the alert is positioned off-screen, its `OK` button is marked with `tabindex=\"-1\"`.\r\nKeyboard users encounter the button only when the alert is on-screen.\r\n\r\n\u003c/PassSection\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following are true:\r\n\r\n-   Element with `aria-hidden=\"true\"` contains no focusable elements\r\n-   Element with `aria-hidden=\"true\"` contains only focusable elements that are disabled or not tabbable\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-input-field-name","description":"aria-input-field-name","content":"\r\nARIA input fields must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn ARIA input field is a custom control that allows users to provide text input. ARIA input fields are identified by the following ARIA roles:\r\n\r\n-   combobox\r\n-   listbox\r\n-   searchbox\r\n-   slider\r\n-   spinbutton\r\n-   textbox\r\n\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object.\r\nAssistive technologies can then refer to the object by name, not just by type. Unlike a standard HTML control, an ARIA input field requires additional markup to ensure it has an accessible name that conveys its purpose to users of assistive technologies.\r\n\r\n## How to fix\r\n\r\nProvide an accessible name for each ARIA input field using ONE of the following methods.\r\n\r\nGood\r\n\r\n-   `title`\r\n\r\nBetter\r\n\r\n-   `aria-label`\r\n\r\nBest\r\n\r\n-   `aria-labelledby`\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAlthough visible text precedes this listbox, the text is not programmatically associated with the listbox.\r\nAs a consequence, the listbox does not have an accessible name. People who use assistive technologies don’t know the purpose of the listbox.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cspan\u003eSelect a service level:\u003c/span\u003e\r\n[\u003cul id=\"option_list\" tabindex=\"0\" role=\"listbox\"\u003e]\r\n\u003cli id=\"service1\" role=\"option\"\u003eLevel 1\u003c/li\u003e\r\n\u003cli id=\"service2\" role=\"option\"\u003eLevel 2\u003c/li\u003e\r\n\u003cli id=\"service3\" role=\"option\"\u003eLevel 3\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `aria-labelledby` attribute is used to make the visible text into an accessible name. Everyone knows its purpose.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cspan [id=\"select_level\"]\u003eSelect a service level:\u003c/span\u003e\r\n\u003cul id=\"option_list\" tabindex=\"0\" role=\"listbox\" [aria-labelledby=\"select_level\"]\u003e\r\n\u003cli id=\"service1\" role=\"option\"\u003eLevel 1\u003c/li\u003e\r\n\u003cli id=\"service2\" role=\"option\"\u003eLevel 2\u003c/li\u003e\r\n\u003cli id=\"service3\" role=\"option\"\u003eLevel 3\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   ANY of the following are true:\r\n    -   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n    -   Element has a non-empty `aria-label` attribute\r\n    -   Element has a non-empty `title` attribute\r\n-   AND the following is true:\r\n    -   There is no mismatch between the element’s `\u003clabel\u003e` and its accessible name\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-meter-name","description":"aria-meter-name","content":"\r\nARIA meters must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn ARIA meter is a custom control corresponding to the HTML `\u003cmeter\u003e` element. A meter represents either a scalar value within a known range, or a fractional value. For example, a meter might represent the unused portion of total storage capacity.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen an ARIA meter doesn't an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each element with `role=\"meter\"`, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute referencing visible text\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA `\u003cdiv\u003e` element is coded to function as an ARIA meter. A `\u003clabel\u003e` element is used in attempt to give the meter an accessible name. Although a `\u003clabel\u003e` can be used with a `\u003cmeter\u003e` element, its use with `\u003cdiv\u003e` elements is not supported, and so no programmatic association is made between the `\u003clabel\u003e` and the `\u003cdiv\u003e`. Because the ARIA meter does not have an accessible name, people who use assistive technologies can't tell its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003clabel for \"disk-usage-meter\"\u003e]Disk Usage[\u003c/label\u003e]\r\n\u003c[div id=\"disk-usage-meter\"] role=\"meter\" aria-valuenow=\"90\" aria-valuemin=\"0\" aria-valuemax=\"100\"\u003e\r\n\u003csvg width=\"100\" height=\"100\" class=\"fill\"  aria-hidden=\"true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\r\n\u003crect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"currentColor\"\u003e\r\n\u003c/rect\u003e\r\n\u003c/svg\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003clabel\u003e` element is replaced with a `\u003cp\u003e` element, and a programmatic association is created by an aria-labelledby attribute on the `\u003cdiv\u003e`. The ARIA meter has an accessible name that's available to all users.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003cp id=\"disk-usage-label\"\u003e]Disk Usage[\u003c/p\u003e]\r\n\u003cdiv role=\"meter\" aria-valuenow=\"90\" aria-valuemin=\"0\" aria-valuemax=\"100\" [aria-labelledby=\"disk-usage-label\"]\u003e\r\n\u003csvg width=\"100\" height=\"100\" class=\"fill\"  aria-hidden=\"true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\r\n\u003crect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"currentColor\"\u003e\r\n\u003c/rect\u003e\r\n\u003c/svg\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-progressbar-name","description":"aria-progressbar-name","content":"\r\nARIA progressbars must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn ARIA progressbar is a custom control corresponding to the HTML `\u003cprogress\u003e` element. A progressbar represents progress on a task that takes a long time to complete.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen an ARIA progressbar doesn't an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each element with `role=\"progressbar\"`, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute referencing visible text\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA `\u003cdiv\u003e` element is coded to function as an ARIA progressbar. A `\u003clabel\u003e` element is used in attempt to give the progressbar an accessible name. Although a `\u003clabel\u003e` can be used with a `\u003cprogress\u003e` element, its use with `\u003cdiv\u003e` elements is not supported, and so no programmatic association is made between the `\u003clabel\u003e` and the `\u003cdiv\u003e`. Because the ARIA progressbar does not have an accessible name, people who use assistive technologies can't tell its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003clabel for \"progressbar\"\u003e]Creating your video[\u003c/label\u003e]\r\n\u003c[div id=\"progressbar\"] role=\"progressbar\" aria-valuenow=\"90\" aria-valuemin=\"0\" aria-valuemax=\"100\"\u003e\r\n\u003csvg width=\"100\" height=\"100\" class=\"fill\"  aria-hidden=\"true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\r\n\u003crect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"currentColor\"\u003e\r\n\u003c/rect\u003e\r\n\u003c/svg\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003clabel\u003e` element is replaced with a `\u003cp\u003e` element, and a programmatic association is created by an aria-labelledby attribute on the `\u003cdiv\u003e`. The ARIA meter has an accessible name that's available to all users.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003cp id=\"progressbar-label\"\u003e]Disk Usage[\u003c/p\u003e]\r\n\u003cdiv role=\"meter\" aria-valuenow=\"90\" aria-valuemin=\"0\" aria-valuemax=\"100\" [aria-labelledby=\"progressbar-label\"]\u003e\r\n\u003csvg width=\"100\" height=\"100\" class=\"fill\"  aria-hidden=\"true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\r\n\u003crect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"currentColor\"\u003e\r\n\u003c/rect\u003e\r\n\u003c/svg\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-prohibited-attr","description":"aria-prohibited-attr","content":"\r\nElements with implicit or explicit ARIA roles (e.g., `\u003cp\u003e` or `\u003cdiv role=\"paragraph\"\u003e`) must not be provided ARIA attributes which are listed as prohibited for use with specified role, as identified in the ARIA specifications.\r\n\r\n## Why it matters\r\n\r\nUsing prohibited ARIA attributes with specific roles can result in important information not being communicated to people using assistive technologies.  In certain situations it can also result in wrong or unexpected information being communicated to them.\r\n\r\n## How to fix\r\nIf the information that is meant to be conveyed by the attribute is important, then instead of removing the prohibited attribute you can do one of three things:\r\n-\tChange the role to one on which the attribute is not prohibited (so long as the new role is appropriate for the element/content that is being presented to the user)\r\n-\tRemove the attribute and instead provide the information as text in the page\r\n-\tMove the attribute to a different element that does support it\r\n\r\n## Example\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe `aria-label` attribute is used on a paragraph element (which has an implicit `paragraph` role) for \"Shipping Instructions.  This is a text-based role which prohibits author naming (e.g., use of `aria-label` and `aria-labelledby`).    \r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cp [aria-label=\"Shipping instructions:\"] \u003e\u003c/p\u003e\r\n    \u003ch3 id=\"shipping\"\u003eShipping instructions:\u003c/h3\u003e\r\n    \u003cdiv [aria-labelledby=\"shipping]\"\u003e...\u003c/div\u003e` } /\u003e\r\n\r\n\u003cPassSection\u003e\r\n\r\nThe `aria-label` and `aria-labelledby` attributes aren't used on a text-based role.  \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cp\u003e[Shipping instructions:]\u003c/p\u003e\r\n    \u003cdiv\u003eShipping instructions:\u003c/div\u003e\r\n    \u003ch3\u003eShipping instructions:\u003c/h3\u003e\u003cdiv\u003e...\u003c/div\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis is an example of when the rule passes:\r\n-`aria-label` and `aria-labelledby` attributes aren’t used on `presentation` and `none` roles, `generic` roles or equivalent elements (e.g., a `\u003cdiv\u003e` has an implicit `generic` role) on text-based roles such as `paragraph`, `code`, `insertion`, or `strong`.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n  \u003cHyperLink href=\"https://dequeuniversity.com/rules/axe/4.8/aria-prohibited-attr\"\u003eElements must only use permitted ARIA attributes\u003c/HyperLink\u003e\r\n  \r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e4.1.2 Name, Role, Value\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-required-attr","description":"aria-required-attr","content":"\r\nRequired ARIA attributes must be provided.\r\n\r\n## Why it matters\r\n\r\nAn ARIA _role_ attribute can be added to an element to instruct assistive technologies to treat the element as something other than its native HTML element type.\r\nFor example, an `\u003ca\u003e` element with `role=\"button\"` is to be treated as a button, not a link.\r\n\r\nSome ARIA _role_ attributes require additional ARIA attributes to communicate the control’s _properties_ or current _state_. People who use assistive technologies might find it difficult or impossible to use an element that’s missing a required ARIA attribute.\r\n\r\n## How to fix\r\n\r\n1. Identify the [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) that best identifies the element’s function.\r\n1. Examine the element in the [Chrome](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane) or [Edge](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide/elements/accessibility) accessibility pane to verify that it has the correct _role_ attribute.\r\n1. Apply any ARIA _state_ and _property_ attributes that are required for the given role.\r\n1. Make sure the value of each ARIA _property_ attribute is correct.\r\n1. Make sure the value of each ARIA _state_ attribute updates as needed to reflect the element’s current state.\r\n\r\nFor a list of roles and their required attributes, see [ARIA in HTML: ARIA Roles, States, and Properties](https://www.w3.org/TR/html-aria/#aria-table).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cdiv\u003e` element ha an ARIA _role_ attribute ( `role=\"checkbox\"` ) that correctly identifies it to assistive technologies as a checkbox. However, the `aria-checked` _state_ attribute required for that role is missing.\r\nPeople who use assistive technologies can’t tell whether the checkbox is checked.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv [role=\"checkbox\"] tabindex=\"0\"\u003eKeep me signed in\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `aria-checked` attribute has been added to the element.\r\nThe attribute’s value is updated through scripting (not shown) to ensure it always communicates the correct current state to assistive technologies.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv role=\"checkbox\" [aria-checked=\"false\"] tabindex=\"0\"\u003eKeep me signed in\u003c/div\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   All ARIA attributes required for the given role are present\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/html-aria/\"\u003eARIA in HTML: ARIA Roles, States, and Properties\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-required-children","description":"aria-required-children","content":"\r\nCertain ARIA roles must contain particular children.\r\n\r\n## Why it matters\r\n\r\nAn ARIA _role_ attribute can be added to an element to instruct assistive technologies to treat the element as something other than its native HTML element type.\r\nFor example, a `\u003cul\u003e` element with `role=\"listbox\"` is to be treated as a listbox control, not as a static list.\r\n\r\nSome ARIA \"parent\" roles have [Required Owned Elements](https://www.w3.org/TR/wai-aria/#mustContain). These \"parent\" roles identify composite controls that always include only managed controls, identified by \"child\" roles.\r\nFor example, `role=\"listbox\"` identifies a composite control that manages a set of managed controls identified by `role=\"option\"`.\r\nPeople who use assistive technologies might find it difficult or impossible to use a composite control if its managed controls lack the required child role or if it contains unexpected types of children.\r\n\r\n## How to fix\r\n\r\n1. Identify the [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) that best identifies the element’s function.\r\n1. In the [Chrome](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane) or [Edge](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide/elements/accessibility) accessibility pane, examine the element serving as the _managing_ control to verify it has the correct \"parent\" _role_ attribute.\r\n1. Identify the elements serving as _managed_ controls and add the appropriate \"child\" roles to them.\r\n1. Remove any child elements of the _managing_ control which are not serving as _managed_ controls.\r\n1. Apply any ARIA _state_ and _property_ attributes that are required for the given roles.\r\n1. Make sure the value of each ARIA _property_ attribute is correct.\r\n1. Make sure the value of each ARIA _state_ attribute updates as needed to reflect the element’s current state.\r\n\r\nFor details about composite widgets and their required roles, see [WAI-ARIA Authoring Practices 1.1: Design Patterns and Widgets](https://www.w3.org/TR/wai-aria-practices-1.1/#aria_ex).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis code functions together as a list control. The _managing_ `\u003cdiv\u003e` element has the correct \"parent\" role (`listbox`), but the _managed_ `\u003cdiv\u003e` elements are missing the required \"child\" role (`option`). Additionally, the _managing_ `\u003cdiv\u003e` element has a child element that should not be present (`h3`).\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv [role=\"listbox\"] aria-labelledby=\"size\"   \r\nid=\"rg1\"\u003e\r\n\u003ch3 id=\"size\"\u003eT-shirt size:\u003c/h3\u003e\r\n\u003cdiv tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n\u003cdiv tabindex=\"-1\"\u003eMedium\u003c/div\u003e\r\n\u003cdiv tabindex=\"-1\"\u003eLarge\u003c/div\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe children of the `listbox` parent which represent listbox-managed controls are marked with `role=\"option\"`.\r\nIn addition, an attribute required by the `listitem` role (`aria-selected`) has been added to each list item. These attribute values are updated through scripting (not shown) to ensure they always communicate the correct current state to assistive technologies. \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example=\r\n{`\u003ch3 id=\"size\"\u003eT-shirt size:\u003c/h3\u003e\r\n\u003cdiv role=\"listbox\" aria-labelledby=\"size\"  \u003e\r\n\u003cdiv [role=\"option\" aria-selected=\"false\"] tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n\u003cdiv [role=\"option\" aria-selected=\"true\"] tabindex=\"-1\"\u003eMedium\u003c/div\u003e\r\n\u003cdiv [role=\"option\" aria-selected=\"false\"] tabindex=\"-1\"\u003eLarge\u003c/div\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ALL of the following are true:\r\n\r\n- At least one child has an ARIA role which is one of the parent ARIA role's [Required Owned Elements](https://www.w3.org/TR/wai-aria/#mustContain).\r\n- All children either:\r\n  - have an ARIA role which is one of the parent ARIA role's [Required Owned Elements](https://www.w3.org/TR/wai-aria/#mustContain), OR\r\n  - Are not present in the browser's accessibility tree\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-required-parent","description":"aria-required-parent","content":"\r\nCertain ARIA roles must be contained by particular parent elements.\r\n\r\n## Why it matters\r\n\r\nAn ARIA _role_ attribute can be added to an element to instruct assistive technologies to treat the element as something other than its native HTML element type.\r\nFor example, an `\u003cli\u003e` element with `role=\"option\"` is to be treated as a selectable option in a listbox control, not as a static list item.\r\n\r\nSome ARIA \"child\" roles identify managed controls that are always part of a larger composite control, identified by a \"parent\" role.\r\nFor example, `role=\"option\"` identifies a child control that is managed by a parent control identified by `role=\"listbox\"`. People who use assistive technologies might find it difficult or impossible to use a child control if its managing control lacks the required parent role.\r\n\r\n## How to fix\r\n\r\n1. Identify the [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) that best identifies the element’s function.\r\n1. In the [Chrome](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane) or [Edge](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide/elements/accessibility) accessibility pane, examine the elements serving as the _managed_ controls to verify they have the correct \"child\" _role_ attributes.\r\n1. Identify (or add) the element serving as the _managing_ control and add the appropriate \"parent\" role to it.\r\n1. Apply any ARIA _state_ and _property_ attributes that are required for the given roles.\r\n1. Make sure the value of each ARIA _property_ attribute is correct.\r\n1. Make sure the value of each ARIA _state_ attribute updates as needed to reflect the element’s current state.\r\n\r\nFor details about composite widgets and their required roles, see [WAI-ARIA Authoring Practices 1.1: Design Patterns and Widgets](https://www.w3.org/TR/wai-aria-practices-1.1/#aria_ex).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis code functions together as a menu (composite) control. The managed `\u003ca\u003e` elements have the correct \"child\" roles ( `menuitem` ), but the managing `\u003cul\u003e` element is missing the required \"parent\" role ( `menu` or `menubar` ).\r\nBecause assistive technologies can’t identify this code as a menu, some users don’t know how to interact with it.\r\n\r\n\u003c/FailSection\u003e \r\n\u003cFailExample example={`[\u003cul id=\"myaccount\"\u003e]\r\n\u003cli\u003e\r\n\u003ca [role=\"menuitem\"] href=\"#\" tabindex=\"0\"\u003eProfile\u003c/a\u003e\r\n\u003cli\u003e\r\n\u003ca [role=\"menuitem\"] href=\"#\" tabindex=\"0\"\u003ePreferences     \u003c/a\u003e\r\n\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe parent of the `menuitem` children is marked with `role=\"menu\"`. Assistive technologies can inform users that the managing control is a menu.\r\nIn addition, the menu has been given an accessible name by adding an `aria-label` attribute to the parent element. All `\u003cli\u003e` elements should be marked with `role=\"none\"` to remove the implied `listitem` role.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cul id=\"myaccount\" [role=\"menu\" aria-label=\"My Account\"]\u003e\r\n\u003cli [role=\"none\"]\u003e\r\n\u003ca role=\"menuitem\" href=\"#\" tabindex=\"0\"\u003eProfile\u003c/a\u003e\r\n\u003cli [role=\"none\"]\u003e\r\n\u003ca role=\"menuitem\" href=\"#\" tabindex=\"0\"\u003ePreferences     \u003c/a\u003e\r\n\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Required ARIA parent is present\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-roledescription","description":"aria-roledescription","content":"\r\nThe `aria-roledescription` attribute must be used only on elements with a supported role. This rule has been deprecated for axe-core 4.7.0 release and has been disabled. A revised rule may be released in a future version of axe-core.\r\n\r\n## Why it matters\r\n\r\nThe `aria-roledescription` attribute is used to override how assistive technologies report an element’s role. For example, assistive technologies typically report a `\u003cbutton\u003e` element (or a `\u003cdiv\u003e` with `role=\"button\"` ) as a \"button\".\r\nIf `aria-roledescription=\"slider button\"` were added to either element, assistive technologies would report it instead as a \"slider button\".\r\n\r\nAssistive technologies report an element’s role only when the role is semantic (has inherent meaning). For example, they inform users when they encounter links, buttons, or images, but not when they encounter semantically neutral elements, such as `\u003cspan\u003e` or `\u003cdiv\u003e` or `\u003cp\u003e` elements.\r\nThe `aria-roledescription` changes only _how_ an element’s role is reported, not necessarily _whether_ it’s reported. An assistive technology might not announce a semantically neutral element, even if it has an `aria-roledescription` attribute.\r\nAs a result, people who use assistive technologies might not discover such an element exists.\r\n\r\n## How to fix\r\n\r\nUse `aria-roledescription` only on elements that have an explicit or implicit ARIA role.\r\n\r\n-   An _implicit_ ARIA role is derived from the element itself. For example, a `\u003cbutton\u003e` element has an implicit role of button.\r\n    For a list of HTML elements and their implicit roles, see [ARIA in HTML](https://www.w3.org/TR/html-aria/). (Elements noted as having \"No corresponding role\" have no implicit ARIA role.)\r\n-   You can add an _explicit_ ARIA role using the `role` attribute. For example, adding `role=\"button\"` to a `\u003cdiv\u003e` element changes its role to button.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis custom control is coded on a semantically neutral `\u003cdiv\u003e` element, and no explicit role has been applied.\r\nAlthough scripting (not shown) causes the element to function as a button, assistive technologies might not report the element to users.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003c[div] tabindex=\"0\" [aria-roledescription=\"download button\"]\u003eDownload\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn explicit ARIA role is applied using `role=\"button\"`. Assistive technologies announce the element because it has a semantic role.\r\nThe `aria-roledescription` attribute instructs assistive technologies to identify the element to users as a \"download button.\"\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv [role=\"button\"] tabindex=\"0\" aria-roledescription=\"download button\"\u003eDownload\u003c/div\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   `aria-roledescription` is used on an element with a semantic role\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/html-aria/\"\u003eARIA in HTML\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-roles","description":"aria-roles","content":"\r\nARIA roles must have valid values.\r\n\r\n## Why it matters\r\n\r\nAn ARIA `role` attribute can be added to an element to instruct assistive technologies to treat the element as something other than its native HTML element type.\r\nFor example, an `\u003ca\u003e` element with `role=\"button\"` will be treated as a button, not as a link.\r\n\r\nWhen an assistive technology encounters an element whose `role` attribute has an invalid value, it might ignore the element or respond to it in an unexpected way.\r\nAs a result, people who use assistive technologies might find the element difficult or impossible to detect or use.\r\n\r\n## How to fix\r\n\r\nProvide a valid value for the `role` attribute:\r\n\r\n-   Make sure the value is spelled correctly.\r\n-   Make sure the role value exists. (For example, a common mistake is to specify the invalid role `\"footer\"` when the valid role is `\"contentinfo\"`.)\r\n-   Make sure the role is not abstract.\r\n\r\nFor a list of valid ARIA roles, see [Accessible Rich Internet Applications (WAI-ARIA) 1.1: Categorization of Roles](https://www.w3.org/TR/wai-aria-1.1/#roles*categorization).\r\nNote that some ARIA roles, while technically _valid_, are not widely _supported_ by assistive technologies. This rule will fail when such roles are used.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe children of this `radiogroup` have invalid `role` attribute values.\r\nAssistive technologies can’t report their roles and might not report the elements at all.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv role=\"radiogroup\" aria-labelledby=\"size\" id=\"rg1\"\u003e\r\n\u003ch3 id=\"size\"\u003eT-shirt size:\u003c/h3\u003e\r\n\u003cdiv [role=\"radiobutton\"] aria-checked=\"false\" tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n\u003cdiv [role=\"radiobutton\"] aria-checked=\"false\" tabindex=\"-1\"\u003eMedium\u003c/div\u003e\r\n\u003cdiv [role=\"radiobutton\"] aria-checked=\"false\" tabindex=\"-1\"\u003eLarge\u003c/div\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe children have valid `role` attribute values. Assistive technologies can report the elements as radio buttons.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv role=\"radiogroup\" aria-labelledby=\"size\" id=\"rg1\"\u003e\r\n\u003ch3 id=\"size\"\u003eT-shirt size:\u003c/h3\u003e\r\n\u003cdiv [role=\"radio\"] aria-checked=\"false\" tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n\u003cdiv [role=\"radio\"] aria-checked=\"false\" tabindex=\"-1\"\u003eMedium\u003c/div\u003e\r\n\u003cdiv [role=\"radio\"] aria-checked=\"false\" tabindex=\"-1\"\u003eLarge\u003c/div\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ALL of the following are true:\r\n\r\n-   ARIA role is valid\r\n-   ARIA role is not an abstract role\r\n-   The role is widely supported in screen readers and other assistive technologies\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-toggle-field-name","description":"aria-toggle-field-name","content":"\r\nARIA toggle fields must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn ARIA toggle field is a custom control that allows users to toggle its checked value.\r\nARIA toggle fields are identified by the following ARIA `role` attributes:\r\n\r\n-   checkbox\r\n-   menuitemcheckbox\r\n-   menuitemradio\r\n-   radio\r\n-   switch\r\n\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object.\r\nAssistive technologies can then refer to the object by name, not just by type.\r\nUnlike a standard HTML control, an ARIA toggle field requires additional markup to ensure it has an accessible name that conveys its purpose to users of assistive technologies.\r\n\r\n## How to fix\r\n\r\nProvide an accessible name for each ARIA toggle field using ONE of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute\r\n\r\nBest\r\n\r\n-   Inner text that’s available to assistive technologies (_not_ marked with `display: none` or `aria-hidden=\"true\"` )\r\n-   `\u003clabel\u003e` element (applies only to controls based on form elements)\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis code (together with scripting that isn't shown) functions as a switch. A `\u003clabel\u003e` element is used in an attempt to give the switch an accessible name. However, the `\u003clabel\u003e` element is valid HTML only when used with form elements, so no programmatic association has been made between the `\u003cspan\u003e` and `\u003clabel\u003e` elements.\r\nAs a result, the switch has no accessible name, and people who use assistive technologies don't know its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003clabel for=\"dark-theme\"\u003e]Dark theme\u003c/label\u003e\r\n\u003c[span id=\"dark-theme\"] type role=\"switch\" aria-checked=\"false\" tabindex=\"0\"\u003e\u003c/span\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003clabel\u003e` element is changed to a `\u003cp\u003e` with an `id`, and the `\u003cspan\u003e` is given an `aria-labelledby` attribute that refers to the `id` of the `\u003cp\u003e`.\r\nA programmatic association between the `\u003cspan\u003e` and `\u003cp\u003e` elements is successfully created, so the switch has an accessible name.\r\nAssistive technologies can tell users that the switch toggles the dark theme.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003cp id=\"dark-label\"\u003e]Dark theme\u003c/p\u003e\r\n\u003cspan id=\"dark-theme\" role=\"switch\" aria-checked=\"false\" tabindex=\"0\" [aria-labelledby=\"dark-label\"]\u003e\u003c/span\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   ANY of the following are true:\r\n\r\n    -   Element has a non-empty `aria-label` attribute\r\n    -   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n    -   Element has a non-empty `title` attribute\r\n    -   Element has text that is visible to screen readers\r\n\r\n-   AND the following is true:\r\n    -   There is no mismatch between the element’s `\u003clabel\u003e` and its accessible name\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1 Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-tooltip-name","description":"aria-tooltip-name","content":"\r\nARIA tooltips must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn ARIA tooltip is a contextual popup with text describing an interface element. The tooltip typically becomes visible when the mouse hovers over, or focus is received by, the owning element.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen an ARIA tooltip doesn't an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each element with `role=\"tooltip\"`, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute referencing visible text\r\n\r\nBest\r\n\r\n-   Visible inner text that's available to assistive technologies (not marked with `display:none` or `aria-hidden=\"true\"`)\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe `\u003cp\u003e` element is intended to serve as a tooltip for a button. However, through an oversight, the `\u003cp\u003e` element is empty. The tooltip won't be visible to any user. As a result, only people who can see the icon can tell the purpose of the button.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cbutton type=\"button\" aria-describedby=\"description\"\u003e\r\n\u003cspan role=\"img\" aria-label=\"Settings\"\u003e⚙️\u003c/span\u003e\r\n\u003c/button\u003e\r\n[\u003cp id=\"description\" role=\"tooltip\"\u003e\u003c/p\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nText is added to the `\u003cp\u003e` element, giving it an accessible name. Everyone can tell that the button allows you to edit your settings.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cbutton type=\"button\" aria-describedby=\"description\"\u003e\r\n\u003cspan role=\"img\" aria-label=\"Settings\"\u003e⚙️\u003c/span\u003e\r\n\u003c/button\u003e\r\n\u003cp id=\"description\" role=\"tooltip\"\u003e[Edit your settings]\u003c/p\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has inner text that is visible to screen readers\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-valid-attr-value","description":"aria-valid-attr-value","content":"\r\nARIA attributes must have valid values.\r\n\r\n## Why it matters\r\n\r\nWhen an assistive technology encounters an element with an invalid ARIA attribute value, it might ignore the attribute or respond to it in an unexpected way.\r\n\r\nAs a result, people who use assistive technologies might find the element difficult or impossible to use.\r\n\r\n## How to fix\r\n\r\nProvide a valid value for each ARIA attribute:\r\n\r\n-   Make sure you are using the correct type of value. (For example, some attributes allow only \"true\" or \"false\" values, while others allow the value to remain undefined.)\r\n-   Make sure the value is spelled correctly.\r\n-   Consider whether the attribute has a default value that must be modified in order to be valid in the current context.\r\n-   If the attribute references an ID, make sure the ID exists on the page.\r\n\r\nFor details about all ARIA attributes, including their allowed values, see [Accessible Rich Internet Applications (WAI-ARIA) 1.1: Definitions of States and Properties](https://www.w3.org/TR/wai-aria-1.1/#state_prop_def).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis radio button has an `aria-checked` attribute with an invalid value of `\"no\"`.\r\nBecause assistive technologies are likely to ignore the invalid value, some users won't know whether the radio button is checked.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv role=\"radio\" [aria-checked=\"no\"] tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `aria-checked` attribute has a valid value of `\"false\"`.\r\nAssistive technologies can inform users that the radio button is currently unchecked.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv role=\"radio\" [aria-checked=\"false\"] tabindex=\"0\"\u003eSmall\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if the following is true:\r\n\r\n-   ARIA attribute values are valid\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/aria-valid-attr","description":"aria-valid-attr","content":"\r\nARIA attributes must have valid names.\r\n\r\n## Why it matters\r\n\r\nWhen an assistive technology encounters an element with an invalid ARIA attribute name, it might ignore the attribute or respond to it in an unexpected way.\r\nAs a result, people who use assistive technologies might find the element difficult or impossible to use.\r\n\r\n## How to fix\r\n\r\nProvide a valid name for each ARIA attribute:\r\n\r\n-   Make sure you are using the correct attribute name.\r\n-   Make sure the attribute name is spelled correctly.\r\n\r\nFor details about all ARIA attributes, see [Accessible Rich Internet Applications (WAI-ARIA) 1.1: Definitions of States and Properties](https://www.w3.org/TR/wai-aria-1.1/#state_prop_def).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis toggle button has an invalid ARIA attribute name.\r\nBecause assistive technologies are likely to ignore the attribute, some users won't know the button's state.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ca tabindex=\"0\" role=\"button\" id=\"toggle\" [aria-on]=\"true\"\u003eMute\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe toggle button has a valid ARIA attribute name.\r\nAssistive technologies can inform users that the button is currently pressed.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ca tabindex=\"0\" role=\"button\" id=\"toggle\" [aria-pressed=\"true\"]\u003eMute\u003c/a\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   ARIA attribute name is valid\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/autocomplete-valid","description":"autocomplete-valid","content":"\r\nThe `autocomplete` attribute must be used correctly.\r\n\r\n## Why it matters\r\n\r\nThe HTML `autocomplete` attribute communicates the purpose of a form field specifically, consistently, and unambiguously to browsers and assistive technologies.\r\n\r\nAutocomplete, when used correctly, enables browsers to suggest a form field’s value based on previous user input. Autocomplete makes it faster and easier for everyone to fill out forms.\r\n\r\nBrowsers can’t accurately suggest the value of an input field with a missing or invalid `autocomplete` attribute.\r\nAs a result, people will find it more burdensome to provide the expected input, especially people with cognitive disabilities.\r\n\r\n## How to fix\r\n\r\nFor form fields which require data specifically related to user information, provide a valid `autocomplete` attribute value:\r\n\r\n-   Make sure you are using the correct attribute value. (For example, `\"family-name\"` is valid, while `\"last-name\"` is not.)\r\n-   Make sure the value is spelled correctly.\r\n-   Make sure the value is allowed for the field type.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis input field has an invalid `autocomplete` attribute value of `\"first-name\"`.\r\nBrowsers can't suggest a value, so users have to enter the value manually.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv\u003e\r\n\u003clabel for=\"fname\"\u003eFirst Name\u003c/label\u003e\r\n\u003cinput id=\"fname\" type=\"text\" [autocomplete=\"first-name\"]\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe input field has a valid `autocomplete` attribute value of `\"given-name\"`.\r\nBrowsers can suggest a value for the field.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv\u003e\r\n\u003clabel for=\"fname\"\u003eFirst Name\u003c/label\u003e\r\n\u003cinput id=\"fname\" type=\"text\" [autocomplete=\"given-name\"]\u003e\r\n\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ALL of the following are true:\r\n\r\n-   The `autocomplete` attribute is correctly formatted\r\n-   The `autocomplete` value is appropriate for the input type\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html\"\u003e\r\n        Understanding Success Criterion 1.3.5: Identify Input Purpose\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/html/H98\"\u003eUsing HTML 5.2 autocomplete attributes\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/avoid-inline-spacing","description":"avoid-inline-spacing","content":"\r\nInline text spacing must be adjustable using custom stylesheets.\r\n\r\n## Why it matters\r\n\r\nPeople with low vision or dyslexia can find it difficult to read closely spaced text. An external CSS style sheet can be used to adjust text spacing and thereby improve the reading experience.\r\nHowever, using `!important` in an inline CSS style causes external stylesheets to be ignored.\r\n\r\n## How to fix\r\n\r\nRemove `!important` from these inline style attributes:\r\n\r\n-   `line-height`\r\n-   `letter-spacing`\r\n-   `word-spacing`\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn inline `line-height` style uses `!important` to enforce the specified value.\r\nAs a consequence, users can't increase the spacing using an external stylesheet. Some people find the text difficult to read.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cp [style=\"line-height: 1.5 !important;]\"\u003e We the People of the United States, in Order to form a more perfect Union, \r\nestablish Justice, insure domestic Tranquility, provide for the common defense, promote the general Welfare, \r\nand secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.\u003c/p\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nWith `!important` removed, external stylesheets can adjust the `line-height` value. Users can choose the line spacing that works best for them.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cp [style=\"line-height: 1.5]\"\u003eWe the People of the United States, in Order to form a more perfect Union, \r\nestablish Justice, insure domestic Tranquility, provide for the common defense, promote the general Welfare, \r\nand secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.\u003c/p\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No inline styles that affect text spacing use `!important`\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/text-spacing.html\"\u003e\r\n        Understanding Success Criterion 1.4.12: Text Spacing\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/blink","description":"blink","content":"\r\nThe `\u003cblink\u003e` element is deprecated and must not be used.\r\n\r\n## Why it matters\r\n\r\nText that blinks (alternates between visible and invisible states) can be distracting, especially for people with cognitive disabilities.\r\nBlinking text can be difficult to read, especially for people with low vision or reading disabilities. And a blinking UI control can be difficult to activate, especially for people with limited dexterity.\r\n\r\n## How to fix\r\n\r\n1. Remove `\u003cblink\u003e` elements.\r\n2. Consider using `\u003cstrong\u003e` or `\u003cem\u003e` elements to emphasize important text.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis paragraph contains a `\u003cblink\u003e` element. Its text content alternates between visibility and invisibility.\r\nSome users will find it distracting or difficult to read.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cp\u003eThis item is [\u003cblink\u003eNew!\u003c/blink\u003e]\u003c/p\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cblink\u003e` element has been replaced by a `\u003cstrong\u003e` element.\r\nBrowsers and assistive technologies can communicate to users that the content is important.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cp\u003eThis item is [\u003cstrong\u003eNew!\u003c/strong\u003e]\u003c/p\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No `\u003cblink\u003e` element is visible\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide.html\"\u003e\r\n        Understanding Success Criterion 2.2.2: Pause, Stop, Hide\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/button-name","description":"button-name","content":"\r\nAll `\u003cbutton\u003e` elements must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen a button doesn’t have an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each `\u003cbutton\u003e` element, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute referencing visible text\r\n\r\nBest\r\n\r\n-   Inner text that’s available to assistive technologies (_not_ marked with `display: none` or `aria-hidden=\"true\"`)\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis button contains an image of binoculars to visually convey its purpose, but it doesn't have an accessible name.\r\nPeople who use assistive technologies can't determine its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cbutton id=\"find\"\u003e\u003cimg src=\"find.jpg\u003e\u003c/button\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nVisible inner text gives the button an accessible name. Its purpose is communicated to everyone\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cbutton id=\"find\"\u003e\u003cimg src=\"find.jpg\u003e[Find]\u003c/button\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has inner text that is visible to screen readers\r\n-   Element has an `aria-labelledby` attribute that references an element or elements containing text\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n-   Element’s default semantics were overridden with `role=\"presentation\"` or `role=\"none\"` **and** the element was made disabled by use of the `disabled` attribute\r\n\r\nUse caution when applying `role=\"presentation\"` or `role=\"none\"` to a `\u003cbutton\u003e` element.\r\nThese roles instruct assistive technologies to disregard the element’s implicit role without hiding its content from users. However, per ARIA's [Presentational Roles Conflict Resolution](https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none), user agents MUST ignore the `presentation` or `none` role when used on a focuable element, such as a `\u003cbutton\u003e`. This is true even if the button were to be provided a `tabindex=-1`, as the element would still be focusable, though it would _not_ be in the page's tab order.  If one needs to truly hide the semantics and functionality of a `\u003cbutton\u003e` element, it would likely be easiest to use a different element instead.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none\"\u003e\r\n       Accessible Rich Internet Applications (WAI-ARIA): 1.2 Presentational Roles Conflict Resolution\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/TR/using-aria/\"\u003eUsing ARIA: Use of Role=presentation or Role=none\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/bypass","description":"bypass","content":"\r\nWeb pages must allow keyboard users to bypass repeated blocks of content.\r\n\r\n## Why it matters\r\n\r\nWeb pages typically begin with blocks of content that repeat across multiple pages, such as banners and site navigation menus.\r\nA person who uses a mouse can visually skim past that repeated content and access a link or other control within the primary content with a single click.\r\n\r\nSimilarly, a bypass mechanism allows keyboard users to navigate directly to the page’s main content.\r\nOtherwise, reaching the primary content could require dozens of keystrokes. People with limited mobility could find this task difficult or painful, and people who use screen readers could find it tedious to listen as each repeated element is announced.\r\n\r\n## How to fix\r\n\r\nProvide a mechanism that allows keyboard users to bypass repeated blocks of text using one of the following methods.\r\n\r\nGood\r\n\r\n-   Landmark regions\r\n\r\nBetter\r\n\r\n-   Headings\r\n\r\nBest\r\n\r\n-   Skip link\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA web page has no mechanism for users to bypass the banner content that appears at the top of the page.\r\nIt has no skip link, no headings, and no landmarks.\r\n\r\nKeyboard users have to tab through numerous links in the site banner and navigation menus to get to the page's primary content.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`…\r\n\u003chtml\u003e\r\n\u003chead\u003e\r\n\u003cstyle\u003e\r\nbody {background-color: powderblue; …\r\n\u003c/style\u003e\r\n\u003c/head\u003e\r\n\u003cbody\u003e\r\n\u003cdiv class=\"sitebanner\"\u003e…\u003c/div\u003e\r\n\u003cdiv class=\"menubar\"\u003e…\u003c/div\u003e\r\n\u003cdiv class=\"main\"\u003e…\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nA skip link is added immediately after the page's `\u003cbody\u003e` tag. Styling makes the skip link visible only when it has focus.\r\nMouse users are unaware of it, but all keyboard users can take advantage of it.\r\n(Note that assistive technology users would still benefit from the addition of headings and landmarks.)\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`…\r\n\u003chtml\u003e\r\n\u003chead\u003e\r\n\u003cstyle\u003e\r\nbody {background-color: powderblue; …\r\n[#skip a {display: block; position: absolute; left: -999px; top: -999px;}\r\n#skip a:focus {left: 0; top: 0; padding: 6px; background: #fff; border:1px solid #990000;}]\r\n\u003c/style\u003e\r\n\u003c/head\u003e\r\n\u003cbody\u003e\r\n[\u003cdiv id=\"skip\"\u003e\r\n\u003ca href=\"#content\"\u003eSkip to main content\u003c/a\u003e\r\n\u003c/div\u003e]\r\n\u003cdiv class=\"sitebanner\"\u003e…\u003c/div\u003e\r\n\u003cdiv class=\"menubar\"\u003e…\u003c/div\u003e\r\n\u003cdiv class=\"main\" [id=\"content\"]\u003e…\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Valid skip link found\r\n-   Page has a header\r\n-   Page has a landmark region\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html\"\u003e\r\n        Understanding Success Criterion 2.4.1: Bypass Blocks\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/color-contrast","description":"color-contrast","content":"\r\nText elements must have sufficient contrast against the background.\r\n\r\n## Why it matters\r\n\r\nMost people find it easier to read text when it has a sufficiently high contrast against its background.\r\nPeople with visual disabilities, low vision, limited color perception, or [presbyopia](https://en.wikipedia.org/wiki/Presbyopia) are likely to find text unreadable when contrast is too low.\r\n\r\n## How to fix\r\n\r\nProvide sufficient contrast for text elements.\r\n\r\nA minimum contrast ratio of 3:1 is required for large text, defined as:\r\n\r\n-   18pt (24 CSS pixels)\r\n-   OR bold 14pt (19 CSS pixels)\r\n\r\nA minimum contrast ratio of 4.5:1 is required for smaller text.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nIn this page, `\u003ch1\u003e` elements are styled to have a foreground `color` of `#ee66cc` and a `font-size` of `48px`.\r\nThe font size qualifies the heading text as large. The contrast ratio of the text color against the page's white background is 2.843:1.\r\nBecause the minimum contrast ratio for large text is 3:1, the `\u003ch1\u003e` elements have insufficient contrast.\r\nSome people will find the text difficult to read.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cstyle\u003e\r\n…\r\nh1 {[color: #ee66cc; font-size=48px]}\r\n…\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe font color specified for `\u003ch1\u003e` elements provides a contrast of 3.762:1, which is sufficient for large text.\r\nMost people will find it legible.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cstyle\u003e\r\n…\r\nh1 {[color: #ee22bb;] font-size=48px}\r\n…\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Element has sufficient contrast\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html\"\u003e\r\n        Understanding Success Criterion 1.4.3: Contrast (Minimum)\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/definition-list","description":"definition-list","content":"\r\nA `\u003cdl\u003e` element must directly contain only properly ordered `\u003cdt\u003e` and `\u003cdd\u003e` groups, `\u003cscript\u003e`, or `\u003ctemplate\u003e` elements.\r\n\r\n## Why it matters\r\n\r\nA definition list is a list of terms (words or phrases), and their definitions.\r\nA definition list can contain only certain element types, and it requires a specific structure.\r\n\r\nWhen an assistive technology encounters a definition list that’s poorly structured or contains invalid elements, it might respond in an unexpected way.\r\nAs a result, people who use assistive technologies might find it difficult to interpret the list.\r\n\r\n## How to fix\r\n\r\nMake sure each `\u003cdl\u003e` element is properly structured:\r\n\r\n1. Each `\u003cdl\u003e` element must contain only `\u003cdt\u003e` , `\u003cdd\u003e` , `\u003cscript\u003e` , and `\u003ctemplate\u003e` elements.\r\n2. Each `\u003cdl\u003e` element must contain one or more `\u003cdt\u003e` elements.\r\n3. Each `\u003cdt\u003e` element must contain one or more `\u003cdd\u003e` elements.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis definition list includes two `\u003cimg\u003e` elements that aren't contained in `\u003cdt\u003e` or `\u003cdd\u003e` elements.\r\nAssistive technologies can't determine whether the image is part of a term or its definition. They might present the list in a way that confuses users.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdl\u003e\r\n\u003cdt\u003eCoffee\u003c/dt\u003e\r\n[\u003cimg src=\"coffee.JPG\" width=\"50\" height=\"50\" alt=\"A coffee plant with large green leaves and small red berries\u003e]\r\n\u003cdd\u003eA beverage prepared from the roasted seeds of various Coffea species.\u003c/dd\u003e\r\n\u003cdt\u003eTea\u003c/dt\u003e\r\n[\u003cimg src=\"Tea.jpg\" width=\"50\" height=\"50\" alt=\r\n\"A tea plant with small green leaves and white blossoms\"\u003e]\r\n\u003cdd\u003eA beverage prepared from the cured leaves of Camellia sinensis.\u003c/dd\u003e\r\n\u003c/dl\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nEach `\u003cimg\u003e` element is contained within a `\u003cdt\u003e` element. Assistive technologies can correctly present the structure of the definition list.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdl\u003e\r\n[\u003cdt\u003eCoffee]\r\n\u003cimg src=\"coffee.JPG\" width=\"50\" height=\"50\" alt=\"A coffee shrub with large green leaves and small red berries\"\u003e\r\n[\u003c/dt\u003e]\r\n\u003cdd\u003eA beverage prepared from the roasted seeds of various Coffea species.\u003c/dd\u003e\r\n[\u003cdt\u003eTea]\r\n\u003cimg src=\"Tea.jpg\" width=\"50\" height=\"50\" alt=\"A tea plant with small green leaves and white blossoms\"\u003e\r\n[\u003c/dt\u003e]\r\n\u003cdd\u003eA beverage prepared from the cured leaves of Camellia sinensis.\u003c/dd\u003e\r\n\u003c/dl\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   When not empty, the `\u003cdl\u003e` element has both `\u003cdt\u003e` and `\u003cdd\u003e` elements\r\n-   `\u003cdl\u003e` element has only direct children that are allowed inside `\u003cdt\u003e` or `\u003cdd\u003e` elements\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/dlitem","description":"dlitem","content":"\r\nAll `\u003cdt\u003e` and `\u003cdd\u003e` elements must be contained by a `\u003cdl\u003e` element.\r\n\r\n## Why it matters\r\n\r\nA definition list is a list of terms (words or phrases), and their definitions.\r\nThe `\u003cdt\u003e` and `\u003cdd\u003e` elements must be contained by a `\u003cdl\u003e` element.\r\n\r\nWhen an assistive technology encounters a definition list that’s poorly structured, it might respond in an unexpected way.\r\nAs a result, people who use assistive technologies might find it difficult to interpret the list.\r\n\r\n## How to fix\r\n\r\nContain all `\u003cdt\u003e` and `\u003cdd\u003e` elements in a `\u003cdl\u003e` element.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThese terms and definitions are not contained in a `\u003cdl\u003e` element. Assistive technologies might not present them as part of a definition list.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ch3\u003eGlossary\u003c/h3\u003e\r\n[\u003cdt\u003eCoffee\u003c/dt\u003e\r\n\u003cdd\u003eA beverage prepared from the roasted seeds of various Coffea species.\u003c/dd\u003e\r\n\u003cdt\u003eTea\u003c/dt\u003e\r\n\u003cdd\u003eA beverage prepared from the cured leaves of Camellia sinensis.\u003c/dd\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe terms and definitions are contained in a `\u003cdl\u003e` element. Assistive technologies can present the list correctly.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ch3\u003eGlossary\u003c/h3\u003e\r\n[\u003cdl\u003e]\r\n\u003cdt\u003eCoffee\u003c/dt\u003e\r\n\u003cdd\u003eA beverage prepared from the roasted seeds of various Coffea species.\u003c/dd\u003e\r\n\u003cdt\u003eTea\u003c/dt\u003e\r\n\u003cdd\u003eA beverage prepared from the cured leaves of Camellia sinensis.\u003c/dd\u003e\r\n[\u003c/dl\u003e]\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   `\u003cdt\u003e` or `\u003cdd\u003e` element has a parent `\u003cdl\u003e` element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/document-title","description":"document-title","content":"\r\nA web page must contain a `\u003ctitle\u003e` element that describes its topic or purpose.\r\n\r\n## Why it matters\r\n\r\nTypically, the first thing a user learns about a web page is its title. The title is displayed in the browser tab and in search engine results, and it’s announced by assistive technologies as soon as a user navigates to a page.\r\nA descriptive page title helps everyone, especially users of assistive technologies, determine whether a page contains information relevant to their current needs.\r\n\r\n## How to fix\r\n\r\nInclude a non-empty `\u003ctitle\u003e` element in the `\u003chead\u003e` section.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis web page is missing the `\u003ctitle\u003e` element. Users can't whether the page contains relevant information until they examine it.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003chead\u003e\r\n\u003cmeta charset=\"UTF-8\"\u003e\r\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"https://mycompany.com/StyleSheets/home\"\u003e\r\n\u003c/head\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe page's `\u003chead\u003e` section includes a descriptive `\u003ctitle\u003e` element.\r\nEveryone has a quick way to judge whether the page contains relevant information.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003chead\u003e\r\n[\u003ctitle\u003eHow to Contact My Company\u003c/title\u003e]\r\n\u003cmeta charset=\"UTF-8\"\u003e\r\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"https://mycompany.com/StyleSheets/home\"\u003e\r\n\u003c/head\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Document has a non-empty `\u003ctitle\u003e` element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/page-titled.html\"\u003e\r\n        Understanding Success Criterion 2.4.2: Page Titled\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/duplicate-id-active","description":"duplicate-id-active","content":"\r\nActive, focusable elements must have unique `id` values.\r\n\r\n## Why it matters\r\n\r\nWhen multiple active, focusable elements share the same `id` attribute, both scripting (such as JavaScript) and assistive technologies are likely to act only on the first and ignore the others.\r\nAs a consequence, both functionality and accessibility can be degraded. (An element is _focusable_ if it can receive input focus via scripting, mouse interaction, or keyboard tabbing. It’s _active_ if it is not marked as `disabled`.)\r\n\r\n## How to fix\r\n\r\nProvide a unique `id` value for each active, focusable element.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis web page has two search features, each with its own submit button.\r\nBoth buttons have the same `id` value. Scripting and assistive technologies might confuse the two buttons, with unpredictable results.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cform id=\"site-search\" role=\"search\"\u003e\r\n\u003cp id=\"site-search-label\"\u003eSearch this site\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"site-search-field\" aria-labelledby=\"site-search-label\" size=\"50\"\u003e\r\n\u003cinput type=\"submit\" [id=\"search-submit\"] value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n…\r\n\u003cform id=\"page-search\" role=\" search\"\u003e\r\n\u003cp id=\"page-search-label\"\u003eSearch this page\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"page-search-field\" aria-labelledby=\"page-search-label\" size=\"50\"\u003e\r\n\u003cinput type=\"submit\" [id=\"search-submit\"] value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nEach submit button has a unique `id` value. Scripting and assistive technologies reliably treat them as separate entities.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cform id=\"site-search\" role=\"search\"\u003e\r\n\u003cp id=\"site-search-label\"\u003eSearch this site\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"site-search-field\" aria-labelledby=\"site-search-label\" size=\"50\"\u003e\r\n\u003cinput type=\"submit\" [id=\"site-search-submit\"] value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n…\r\n\u003cform id=\"page-search\" role=\" search\"\u003e\r\n\u003cp id=\"page-search-label\"\u003eSearch this page\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"page-search-field\" aria-labelledby=\"page-search-label\" size=\"50\"\u003e\r\n\u003cinput type=\"submit\" [id=\"page-search-submit\"] value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Document has no active elements that share the same `id` attribute value\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/duplicate-id","description":"duplicate-id","content":"\r\nStatic elements must have unique `id` values.\r\n\r\n## Why it matters\r\n\r\nDuplicate `id` values are a common, easily fixed validation error that can cause both scripting (such as JavaScript) and assistive technologies to behave unexpectedly. Duplicate `id` values can degrade both functionality and accessibility.\r\n\r\n## How to fix\r\n\r\nProvide a unique `id` value for each element.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nTwo static elements have the same `id` values. Scripting and assistive technologies might confuse the two elements, with unpredictable results.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cform [id=\"search\"] role=\"search\"\u003e\r\n\u003cp id=\"site-search-label\"\u003eSearch this site\u003c/p\u003e\r\n…\r\n\u003cform [id=\"search\"] role=\" search\"\u003e\r\n\u003cp id=\"page-search-label\"\u003eSearch this page\u003c/p\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe elements have unique `id` values. Scripting and assistive technologies reliably treat them as separate entities.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cform [id=\"site-search\"] role=\"search\"\u003e\r\n\u003cp id=\"site-search-label\"\u003eSearch this site\u003c/p\u003e\r\n…\r\n\u003cform [id=\"page-search\"] role=\" search\"\u003e\r\n\u003cp id=\"page-search-label\"\u003eSearch this page\u003c/p\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Document has no static elements that share the same id attribute value\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/frame-focusable-content","description":"frame-focusable-content","content":"\r\n`\u003cframe\u003e` and `\u003ciframe\u003e` elements with a negative tabindex (e.g. `tabindex=\"-1\"`) must not have focusable content.\r\n\r\n## Why it matters\r\n\r\n`\u003cframe\u003e` and `\u003ciframe\u003e` elements with a negative tabindex are not keyboard focusable.\r\nIf there are interactive interface components inside them, people who rely on a keyboard (or a keyboard alternate), including those who are blind or have low vision or hand tremors, won't be able to access those components.\r\n\r\n## How to fix\r\n\r\nRemove the negative `tabindex` attribute from all `\u003cframe\u003e` and `\u003ciframe\u003e` elements that contain focusable content.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn `\u003ciframe\u003e` contains interactive elements. Because the `\u003ciframe\u003e` has a negative tabindex, keyboard users can't access those elements.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ciframe src=\"/interactive-form.html\" [tabindex=\"-1\"]\u003e\r\n…\r\n\u003c/iframe\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `tabindex=\"-1\"` attribute is removed from the `\u003ciframe\u003e`. All users can access the interactive elements inside the `\u003ciframe\u003e`.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ciframe src=\"/interactive-form.html\"\u003e\r\n…\r\n\r\n\u003c/iframe\u003e `} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   `\u003cframe\u003e` and `\u003ciframe\u003e` elements with a negative tabindex (like `tabindex=\"-1\"`) don't have focusable descendants.\r\n-   `\u003cframe\u003e` and `\u003ciframe\u003e` elements with focusable descendants don't have a negative tabindex.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html\"\u003eUnderstanding Success Criterion 2.1.1: Keyboard\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/frame-title","description":"frame-title","content":"\r\nA `\u003cframe\u003e` or `\u003ciframe\u003e` element must have an accessible name.\r\n\r\n## Why it matters\r\n\r\nA `\u003cframe\u003e` or `\u003ciframe\u003e` is used to embed one HTML document within another.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\n\r\nPeople with good vision can glance at a `\u003cframe\u003e` or `\u003ciframe\u003e` element to get a good idea of its content. People who use assistive technologies rely on the frame’s accessible name to determine whether it contains information relevant to their current needs.\r\n\r\n## How to fix\r\n\r\nFor each `\u003cframe\u003e` or `\u003ciframe\u003e` element, provide an accessible name using ONE of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003ciframe\u003e` element doesn't have an accessible name.\r\nAssistive technology users won't have any idea what information the frame contains unless they navigate into its content.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ciframe src=\"//articles/2019-11-14_new_characters.htm\" frameborder=\"0\" width=\"100%\" height=\"32px\" scrolling=\"no\" allowtransparency=\"true\"\u003e\r\n…\r\n\u003c/iframe\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003ciframe\u003e` has a `title` attribute that gives it an accessible name.\r\nAssistive technology users can judge from the name whether the frame is likely to have useful content.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ciframe src=\"//articles/2019-11-14_new_characters.htm\" [title=\"Introducing our new characters\"] frameborder=\"0\" width=\"100%\" height=\"32px\" scrolling=\"no\" allowtransparency=\"true\"\u003e\r\n…\r\n\u003c/iframe\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `title` attribute\r\n-   Element’s default semantics were overridden with `role=\"presentation\"` or `role=\"none\"`\r\n\r\nUse caution when applying `role=\"presentation\"` or `role=\"none\"` to a `\u003cframe\u003e` or `\u003ciframe\u003e` element. These roles instruct assistive technologies to disregard the element’s implicit role without hiding its content from users. If a `\u003cframe\u003e` or `\u003ciframe\u003e` has inner text, adding a `role` of `presentation` or `none` will cause it to be reported to users as a text string with no semantic context. For more information, see [Using ARIA: Use of Role=presentation or Role=none](https://www.w3.org/TR/using-aria/#presentation).\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/html-has-lang","description":"html-has-lang","content":"\r\nAn `\u003chtml\u003e` element must have a `lang` attribute.\r\n\r\n## Why it matters\r\n\r\nWhen a web page’s primary language is programmatically identified, browsers and assistive technologies can render the text more accurately; screen readers can use the correct pronunciation; visual browsers can display the correct characters; media players can show captions correctly; and automated translation is enabled.\r\n\r\nAll users find it easier to understand the page’s content.\r\n\r\n## How to fix\r\n\r\n1. Identify the page’s primary language.\r\n2. Choose the corresponding a language code from the [IANA Language Subtag Registry](http://www.iana.org/assignments/language-subtag-registry)\r\n3. Add a `lang` attribute to the `\u003chtml\u003e` element using the correct language tag for the value that represents the primary language of the page.\r\n4. If a `lang` attribute is already specified, make sure its value is spelled correctly.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe content of a web page is written in Spanish. The `\u003chtml\u003e` element doesn't have a `lang` attribute, so the browser assumes the primary language is English.\r\nAs a consequence, screen readers don't use the correct pronunciation, and users have a hard time understanding the content.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003chtml\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003chtml\u003e` element has a `lang` attribute. It correctly identifies the primary language of the page as Spanish.\r\nScreen reader users find the Spanish content easier to understand because it's pronounced correctly.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003chtml [lang=\"es\"]\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   The `\u003chtml\u003e` element has a `lang` attribute with a non-empty value.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/language-of-page.html\"\u003e\r\n        Understanding Success Criterion 3.1.1: Language of Page\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/html/H57\"\u003eUsing language attributes on the html element\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/International/articles/language-tags/\"\u003eLanguage tags in HTML and XML\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"http://www.iana.org/assignments/language-subtag-registry\"\u003eIANA Language Subtag Registry\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/html-lang-valid","description":"html-lang-valid","content":"\r\nThe `lang` attribute of an `\u003chtml\u003e` element must have a valid value.\r\n\r\n## Why it matters\r\n\r\nWhen a web page’s primary language is programmatically identified, browsers and assistive technologies can render the text more accurately; screen readers can use the correct pronunciation; visual browsers can display the correct characters; media players can show captions correctly; and automated translation is enabled.\r\n\r\nAll users find it easier to understand the page’s content.\r\n\r\n## How to fix\r\n\r\nProvide a valid `lang` attribute value:\r\n\r\n1. Identify the page’s primary language.\r\n2. Choose the corresponding a language code from the [IANA Language Subtag Registry](http://www.iana.org/assignments/language-subtag-registry)\r\n3. Make sure the value is spelled correctly.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe content of a web page is written in Spanish. The `\u003chtml\u003e` element has the wrong `lang` attribute for Spanish.\r\nAs a consequence, screen readers don't use the correct pronunciation, and users struggle to understand the content.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003chtml [lang=\"sp\"]\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003chtml\u003e` element has the correct `lang` attribute. It correctly identifies the primary language of the page as Spanish.\r\nScreen reader users find the content easier to understand because it's pronounced correctly.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003chtml [lang=\"es\"]\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   The `\u003chtml\u003e` element’s `lang` attribute has a valid value\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/language-of-page.html\"\u003e\r\n        Understanding Success Criterion 3.1.1: Language of Page\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/International/articles/language-tags/\"\u003eLanguage tags in HTML and XML\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"http://www.iana.org/assignments/language-subtag-registry\"\u003eIANA Language Subtag Registry\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/html-xml-lang-mismatch","description":"html-xml-lang-mismatch","content":"\r\nThe `lang` and `xml:lang` attributes of an element must have the same value.\r\n\r\n## Why it matters\r\n\r\nWhen a web page’s primary language is programmatically identified, browsers and assistive technologies can render the text more accurately; screen readers can use the correct pronunciation; visual browsers can display the correct characters; and media players can show captions correctly.\r\nAll users find it easier to understand the page’s content.\r\n\r\nAll HTML web pages must have a `lang` attribute on the `\u003chtml\u003e` element and additional `lang` attributes on any elements whose content is in a different language.\r\nXHTML web pages and polyglot pages must also provide `xml:lang` attributes on those same elements.\r\n\r\nWhen a single element has both `lang` and `xml:lang` attributes, the two values must match exactly.\r\nWhen the two attributes have different values, the user experience is unpredictable.\r\n\r\n## How to fix\r\n\r\nFor XHTML 1.x pages, or polyglot pages served as text/html:\r\n\r\n1. Use both the `lang` attribute and the `xml:lang` attribute each time you specify the language.\r\n2. Provide identical values for both attributes.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe content of a web page is written primarily in Spanish.\r\nThe `\u003chtml\u003e` element's `lang` attribute correctly identifies the primary language as Spanish, but its `xml:lang` attribute identifies it as English.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003chtml [lang=\"es\" xml:lang=\"en\"]\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nBoth the `lang` attribute and the `xml:lang` attribute correctly identify the primary language of the page as Spanish.\r\nScreen reader users find the content easier to understand because it's pronounced correctly.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003chtml [lang=\"es\" xml:lang=\"es\"]\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   `Lang` and `xml:lang` attributes have identical values\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/language-of-page.html\"\u003e\r\n        Understanding Success Criterion 3.1.1: Language of Page\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/International/questions/qa-when-xmllang.en\"\u003exml:lang in XML document schemas\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/International/questions/qa-choosing-language-tags\"\u003eChoosing a Language Tag\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/image-alt","description":"image-alt","content":"\r\nAn `\u003cimg\u003e` element must have alternative text.\r\n\r\n## Why it matters\r\n\r\nBecause assistive technologies can’t interpret an image directly, they rely on alternative text to communicate the image's meaning to users.\r\nIf an image has (non-empty) alternative text, the image is identified as meaningful, and its alternative text is presented to the user.\r\nIf an image has an empty `alt` attribute, the image is identified as decorative and ignored.\r\nIf an image has no alternative text at all, the image is presumed to be meaningful, and its filename is likely to be presented to the user.\r\n\r\n## How to fix\r\n\r\n1. Determine whether the image is meaningful or decorative:\r\n    - An image is _meaningful_ if it conveys information that isn’t available through other page content.\r\n    - An image is _decorative_ if it could be removed from the page with _no_ impact on meaning or function.\r\n2. If the `\u003cimg\u003e` element is decorative, provide an empty `alt` attribute ( `alt=\"\"` ).\r\n3. If the `\u003cimg\u003e` element is meaningful, provide descriptive alternative text using one of the following methods:\r\n\r\n    Good\r\n\r\n    - `title` attribute\r\n\r\n    Better\r\n\r\n    - `aria-label`\r\n    - `aria-labelledby` attribute\r\n\r\n    Best\r\n\r\n    - `alt` attribute\r\n\r\nFor tips on writing good text alternatives, see [Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content](https://www.w3.org/WAI/WCAG21/Techniques/general/G94).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis image has no alternative text.\r\nAssistive technologies identify the image by its file name, which isn't descriptive. Some users will have no idea what the image conveys.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003cimg src=\"191121131947-28-oak-ed-strike-1121-large-tease.jpg\"\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `alt` attribute describes the image in a way that assistive technology users can easily understand.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cimg src=\"191121131947-28-oak-ed-strike-1121-large-tease.jpg\" [alt=\"Teachers striking in front of the School District Headquarters\"]\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n1. Element has an `alt` attribute\r\n2. Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n3. Element has a non-empty `aria-label` attribute\r\n4. Element has a non-empty `title` attribute\r\n5. Element’s default semantics were overridden with `role=\"presentation\"` or `role=\"none\"`\r\n\r\nUse caution when applying `role=\"presentation\"` or `role=\"none\"` to an `\u003cimg\u003e` element. These roles instruct assistive technologies to disregard the element’s implicit role without hiding its content from users. If an `\u003cimg\u003e` has inner text, adding a `role` of `presentation` or `none` will cause it to be reported to users as a text string with no semantic context.\r\nFor more information, see [Using ARIA: Use of Role=presentation or Role=none](https://www.w3.org/TR/using-aria/#presentation).\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G94\"\u003e\r\n        Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text\r\n        content\r\n    \u003c/HyperLink\u003e\r\n\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web","description":"Info and Examples for Accessibility Insights for Web","content":"\r\n{/* Contain details of needs review rules and automated checks rules */}\r\n"},{"title":"/info-examples/web/input-button-name","description":"input-button-name","content":"\r\nInput buttons must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn input button is an `\u003cinput\u003e` element whose `type` is `button` , `reset` , or `submit`.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\n\r\nWhen an input button doesn’t have an accessible name, people who use assistive technologies have no way of knowing its specific purpose.\r\n\r\n## How to fix\r\n\r\nProvide an accessible name for each input button using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   Non-empty `value` attribute\r\n-   No `value` attribute (applies only if `type` is `submit` or `reset` ; causes the `type` value to be reported as the accessible name)\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nCSS (not shown) is used to display an image on this input button. People with good vision can infer the button's purpose from the image.\r\nHowever, because the button doesn’t have an accessible name, assistive technology users can't determine its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cinput type=\"button\" id=\"new-account\"  /\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `aria-label` attribute provides an accessible name for the input button. Everyone can tell what the button does.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cinput type=\"button\" id=\"new-account\" [aria-label=\"Create my account\"] /\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `title` attribute\r\n-   Element has a non-empty `value` attribute\r\n-   Element with type `submit` or `reset` does not have a value attribute\r\n-   Element’s default semantics were overridden with `role=\"presentation\"` or `role=\"none\"`\r\n\r\nUse caution when applying `role=\"presentation\"` or `role=\"none\"` to an input button.\r\nThese roles instruct assistive technologies to disregard the element’s implicit role without hiding its content from users. If an input button has inner text, adding a `role` of `presentation` or `none` will cause it to be reported to users as a text string with no semantic context. For more information, see [Using ARIA: Use of Role=presentation or Role=none](https://www.w3.org/TR/using-aria/#presentation).\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/input-image-alt","description":"input-image-alt","content":"\r\nImage buttons must have alternative text.\r\n\r\n## Why it matters\r\n\r\nAn image button is an `\u003cinput\u003e` element with `type=\"image\"`.\r\nAlternative text is a word or phrase that (1) is coded in a way that assistive technologies can associate it with a specific non-text object, and (2) conveys the same information as the non-text object.\r\n\r\nBecause assistive technologies can’t interpret an image directly, they rely on alternative text to communicate the image button’s purpose. When an image button doesn’t have alternative text, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nProvide alternative text that describes the input button’s purpose using one of the following methods:\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute\r\n\r\nBest\r\n\r\n-   `alt` attribute\r\n\r\nFor tips on writing good text alternatives, see [Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content](https://www.w3.org/WAI/WCAG21/Techniques/general/G94).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis image button has no alternative text. People who use assistive technologies can't determine its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cinput type=\"image\" src=\"envelope.png\" name=\"new\" height=\"50\" width=\"150\"\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `alt` attribute describes the image button's purpose. Everyone can tell what the button does.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cinput type=\"image\" src=\"envelope.png\" name=\"new\" [alt=\"Create a new message\"] height=\"50\" width=\"150\"\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `alt` attribute\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G94\"\u003e\r\n        Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text\r\n        content\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/label-content-name-mismatch","description":"label-content-name-mismatch","content":"\r\nAn element's visible text must be included in its accessible name.\r\n\r\n## Why it matters\r\n\r\nAnyone who uses speech-based interaction benefits when UI components' accessible names match their visible text. Sighted people who can't use a mouse or keyboard might use speech input. When a UI component's accessible name matches its visible text, speech input users can activate them by speaking their visible text. People with low vision might use text-to-speech when they visit a new page to get an overview of the content. Such users might be confused if the accessible names they hear don’t match the text they see on the screen. People with cognitive challenges might find it especially difficult to remember speech commands that are different from what's visible on the screen.\r\n\r\n## How to fix\r\n\r\nGood\r\n\r\n-   Make sure the element's accessible name contains its visible text.\r\n\r\nBetter\r\n\r\n-   Make sure the element's accessible name begins with its visible text.\r\n\r\nBest\r\n\r\n-   Make sure the element's accessible name exactly matches its visible label.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA shopping site has a link with visible text that says, \"Shop now,\" An `aria-label` attribute gives the link a more detailed accessible name: \"Shop our complete line of children's outerwear.\" People who use speech-to-text are likely to find the mismatch confusing. People who use text-to-speech won't be able to activate the link by speaking the visible text.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`…\r\n\u003ca href=\"/children/outerwear/landing.htm\" aria-label=\"Shop our complete line of children's outerwear.\"\u003eShop now\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe visible text label is changed to \"Shop children's outerwear\" and the `aria-label` attribute is removed. Everyone sees and hears the same text.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`…\r\n\u003ca href=\"/children/outerwear/landing.htm\"\u003eShop children's outerwear\u003c/a\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if the element's accessible name is or contains an exact match of its visible text.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/label-in-name.html\"\u003e\r\n        Understanding Success Criterion 2.5.3: Label in Name\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G208\"\u003e\r\n        Including the text of the visible label as part of the accessible name\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G211\"\u003eMatching the accessible name to the visible label\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/failures/F96\"\u003e\r\n        Failure due to the accessible name not containing the visible label text\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/label","description":"label","content":"\r\nForm controls must have accessible names.\r\n\r\n## Why it matters\r\n\r\nA form control is an interactive HTML element used for user input. Form controls include buttons, checkboxes, text fields, color pickers, and more.\r\n\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by its name, not just by type (role).\r\n\r\nWhen a form control doesn't have an accessible name, people who use assistive technologies have no way of knowing its specific purpose.\r\n\r\n## How to fix\r\n\r\nFor each `\u003cinput\u003e` or `\u003ctextarea\u003e` element, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n-   `placeholder` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute\r\n\r\nBest\r\n\r\n-   Explicit `\u003clabel\u003e` element\r\n-   Implicit (wrapped) `\u003clabel\u003e` element\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003ctextarea\u003e` element is preceded by descriptive text in a `\u003cp\u003e` element, but the two elements are not programmatically associated to convey this information to assistive technologies.\r\nPeople who use assistive technologies can use the keyboard or speech commands to navigate to the `\u003ctextarea\u003e`, but because it has no name, they won't know its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cp\u003eShipping instructions:\u003c/p\u003e\u003ctextarea rows=\"4\" cols=\"50\"\u003e\u003c/textarea\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `aria-labelledby` attribute indicates to assistive technologies that the `\u003cp\u003e` element serves as a label for the `\u003ctextarea\u003e` element.\r\nThe purpose of the `\u003ctextarea\u003e` is communicated to all users.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003clabel [for=\"ship-instr\"\u003eShipping instructions:\u003c/label\u003e]\r\n\u003ctextarea rows=\"4\" cols=\"50\" [id=\"ship-instr\"]\u003e\u003c/textarea\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references a non-empty element or elements which provide its accessible name\r\n-   Element has a non-empty `title` attribute\r\n-   Element has an explicit `\u003clabel\u003e` that is not hidden\r\n-   Element has an implicit (wrapped) `\u003clabel\u003e`\r\n-   Element has a non-empty `placeholder` attribute\r\n-   Element is not focusable (i.e., `disabled`) and its default semantics are overridden with `role=\"presentation\"` or `role=\"none\"`\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions.html\"\u003e\r\n        Understanding Success Criterion 3.3.2: Labels or Instructions\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/link-in-text-block","description":"link-in-text-block","content":"\r\nLinks must be visually distinguished from surrounding text through styling or contrast.\r\n\r\n## Why it matters\r\n\r\nLinks embedded in text are most visible when they have distinct styling or sufficient contrast with the surrounding text.\r\n\r\n-   Styling can make an embedded link discernable if it changes the shape of the text, for example by adding an underline or border or switching to a different font.\r\n-   Contrast can make an embedded link discernable if the link text is sufficiently darker or lighter than surrounding text.\r\n\r\nAn embedded link with no styling and insufficient contrast can be difficult to discern, especially for people with low vision or limited color vision.\r\n\r\n\r\n## How to fix\r\n\r\nImplement one or both of the following:\r\n\r\nGood\r\n\r\n-   Adjust the color of the link text and/or the surrounding text to provide a contrast ratio of at least 3:1.\r\n\r\nBetter\r\n\r\n-   Provide a distinct style for the link text, such as an underline, a border, or a different font.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nIn this page, paragraph text is styled to be black, and links are styled to be blue. Links embedded in paragraphs have an inadequate contrast ratio of 2.4:1 with the surrounding text. Moreover, the links' default underline has been removed by setting the `text-decoration` attribute to `none`. Because of these styling choices, some people will have difficulty seeing the embedded links.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cstyle\u003e\r\n[p {color: #000000}\r\na:link {text-decoration: none; color: #0000FF}]\r\n...\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nIn this page, all embedded links are contained in `\u003cp\u003e` elements. The styling specifies that _links in paragraphs_ will have an underline. Links in other elements, such as tables or lists, are not underlined. Everyone will find it easier to see the embedded links.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cstyle\u003e\r\np {color: #000000}\r\n[p a:link {text-decoration: underline; color: #0000FF}]\r\na:link {text-decoration: none; color: #0000FF}\r\n...\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nInstances need review if ALL of the following are true:\r\n\r\n-   Link has no distinct style\r\n-   Link's contrast ratio with surrounding tet is less than 3:1\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html\"\u003e\r\n        Understanding Success Criterion 1.4.1 Use of Color\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/link-name","description":"link-name","content":"\r\nLinks must have accessible names.\r\n\r\n## Why it matters\r\n\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type. When a link doesn’t have an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each link, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `aria-label` attribute\r\n\r\nBetter\r\n\r\n-   `aria-labelledby` attribute\r\n\r\nBest\r\n\r\n-   Link text that’s available to assistive technologies (_not_ marked with `display: none` or `aria-hidden=\"true\"` )\r\n\r\nEach link’s accessible name should concisely describe its unique purpose.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis link at a gourmet foods website contains an image of a coffee cup, but it has no accessible name.\r\nPeople who use assistive technologies can't determine its purpose.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003ca href=\"https://mycompany.com/coffee.htm\"\u003e\u003cimg src=\"//4/45/coffee.jpg\" height=\"25\" width=\"25\"\u003e\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `aria-label` attribute provides an accessible name that describes the link's purpose.\r\nEveryone can tell what the link does.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003ca href=\"https://mycompany.com/coffee.htm\"\u003e\u003cimg src=\"//4/45/coffee.jpg\" height=\"25\" width=\"25\" [aria-label=\"Browse our coffee products\"]\u003e\u003c/a\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following are true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has text that is visible to screen readers\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-in-context.html\"\u003e\r\n        Understanding Success Criterion 2.4.4: Link Purpose (In Context)\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/list","description":"list","content":"\r\nA `\u003cul\u003e`, `\u003col\u003e` or `\u003cmenu\u003e` element must directly contain only `\u003cli\u003e` , `\u003cscript\u003e` or `\u003ctemplate\u003e` elements.\r\n\r\n## Why it matters\r\n\r\nIn a properly structured list, all _content_ is contained within list items. _Content_ includes text and other HTML elements.\r\nCertain _non-content_ elements are also allowed.\r\n\r\nWhen an assistive technology encounters a list that’s poorly structured or contains disallowed elements, it might respond in an unexpected way.\r\nAs a result, people who use assistive technologies might find it difficult to interpret the list.\r\n\r\n## How to fix\r\n\r\nFor each ordered or unordered list ( `\u003col\u003e`, `\u003cul\u003e` or `\u003cmenu\u003e` element):\r\n\r\n-   Make sure all list content is contained within `\u003cli\u003e` elements.\r\n-   Don’t use a `role` attribute to override the native semantics of a `\u003cli\u003e` element.\r\n-   If you include any other HTML elements, enclose them within `\u003cli\u003e` elements.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis unordered list has one `\u003cli\u003e` element whose `role` has been changed to `heading`.\r\nAs a result, assistive technologies do not recognize the element as a list item, but rather as a heading, which is not allowed in a list.\r\nThe disallowed content breaks the expected list structure; it isn't clear how assistive technologies should interpret this code.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ch2\u003eBeverages\u003c/h2\u003e\r\n\u003cul\u003e\r\n\u003cli [role=\"heading\"] aria-level=\"3\"\u003eIncluded\u003c/li\u003e\r\n\u003cli\u003eCoffee\u003c/li\u003e\r\n\u003cli\u003eTea\u003c/li\u003e\r\n\u003cli\u003eSoda\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe heading content is removed from the list, and instead marked up as an `\u003ch3\u003e` element that appears before the unordered list in the DOM.\r\nNow, all content within the list is contained within `\u003cli\u003e` elements. Assistive technologies can interpret the list consistently.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003ch2\u003eBeverages\u003c/h2\u003e\r\n[\u003ch3\u003eIncluded\u003c/h3\u003e]\r\n\u003cul\u003e\r\n\u003cli\u003eCoffee\u003c/li\u003e\r\n\u003cli\u003eTea\u003c/li\u003e\r\n\u003cli\u003eSoda\u003c/li\u003e\r\n\u003c/ul\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   List ( `\u003cul\u003e`, `\u003col\u003e` or `\u003cmenu\u003e` element) has as direct children only `\u003cli\u003e` , `\u003cscript\u003e` , or `\u003ctemplate\u003e` elements\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/listitem","description":"listitem","content":"\r\nAll `\u003cli\u003e` elements must be contained by a `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` parent element.\r\n\r\n## Why it matters\r\n\r\nIn a properly structured list, all list items ( `\u003cli\u003e` elements) are contained by a `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` parent element.\r\n\r\nWhen an assistive technology encounters a list that’s poorly structured, it might respond in an unexpected way.\r\nAs a result, people who use assistive technologies might find it difficult to interpret the list.\r\n\r\n## How to fix\r\n\r\nAll `\u003cli\u003e` elements must be contained by a `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` parent element.\r\n\r\nFor each list item (`\u003cli\u003e` element):\r\n\r\n-   Enclose the `\u003cli\u003e` element in a `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` element (or in a parent element with `role=\"list\"`).\r\n-   Don’t use a `role` attribute to override the native list semantics of the `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` element.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThese list elements are not contained in a `\u003cul\u003e`, `\u003col\u003e`, or `\u003cmenu\u003e` parent element.\r\nAssistive technologies will not interpret the `\u003cli\u003e` elements as being part of a single list. \r\nSome assistive technologies may not even interpret the content as list items at all.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ch2\u003eBeverages\u003c/h2\u003e\r\n[\u003cli\u003eCoffee\u003c/li\u003e\r\n\u003cli\u003eTea\u003c/li\u003e\r\n\u003cli\u003eSoda\u003c/li\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe list items are contained in a `\u003cul\u003e` element.\r\nAssistive technologies can interpret the list consistently.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003ch2\u003eBeverages\u003c/h2\u003e\r\n[\u003cul\u003e]\r\n\u003cli\u003eCoffee\u003c/li\u003e\r\n\u003cli\u003eTea\u003c/li\u003e\r\n\u003cli\u003eSoda\u003c/li\u003e\r\n[\u003c/ul\u003e]\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   List item has a `\u003cul\u003e`, `\u003col\u003e`, `\u003cmenu\u003e` or `role=\"list\"` parent element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/marquee","description":"marquee","content":"\r\nThe `\u003cmarquee\u003e` element is deprecated and must not be used.\r\n\r\n## Why it matters\r\n\r\nA `\u003cmarquee\u003e` element is used to display text that moves horizontally or vertically across the screen.\r\n\r\nMoving text can be distracting, especially for people with attention deficits or cognitive disabilities.\r\nMoving text also can be difficult to read, especially for people with low vision or reading disabilities.\r\nAnd a UI control that moves can be difficult to activate, especially for people with limited dexterity.\r\n\r\n## How to fix\r\n\r\n1. Remove `\u003cmarquee\u003e` elements.\r\n2. Avoid coding text to move across the screen.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn important date is displayed in a `\u003cmarquee\u003e` element that moves across the top of this web page.\r\nThe moving text is distracting and difficult to read.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cbody\u003e\r\n[\u003cmarquee\u003eLast day to order is tomorrow!\u003c/marquee\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cmarquee\u003e` element has been swapped for a static element.\r\nStyling (not shown) makes the text visually prominent.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cbody\u003e\r\n[\u003cp\u003eLast day to order is tomorrow!\u003c/p\u003e]\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No `\u003cmarquee\u003e` element is visible\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide.html\"\u003e\r\n        Understanding Success Criterion 2.2.2: Pause, Stop, Hide\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/meta-refresh","description":"meta-refresh","content":"\r\nA `\u003cmeta\u003e` element must not have an `http-equiv=\"refresh\"` attribute.\r\n\r\n## Why it matters\r\n\r\nUsing `http-equiv=\"refresh\"` in a `\u003cmeta\u003e` element causes a web page to refresh automatically at a specified time interval.\r\n\r\nAn automatic page refresh can be disorienting.\r\nIf a refresh causes input focus to move unexpectedly back to its original state, it can be especially frustrating for people who use screen readers and other keyboard users.\r\n\r\n## How to fix\r\n\r\nRemove `http-equiv=\"refresh\"` from all `\u003cmeta\u003e` elements. If a page refresh is required:\r\n\r\n-   Implement the refresh using a script\r\n-   AND provide a mechanism for users to turn off, extend, or adjust the timing of the page refresh.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA news page uses `\u003cmeta http-equiv=\"refresh\" content=\"60\"\u003e` to refresh the page automatically every 60 seconds.\r\nUsers have no mechanism to turn off, extend, or adjust the timing of the refresh.\r\nMost users find the refresh annoying; for some, it makes the page unusable.\r\n\r\n\u003c/FailSection\u003e\r\n\r\n\u003cPassSection\u003e\r\n\r\nScripting is used to update specific content rather than refreshing the entire page.\r\nUsers are given the option of updating manually rather than automatically.\r\nEveryone finds the page easier to use.\r\n\r\n\u003c/PassSection\u003e\r\n\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No `\u003cmeta\u003e` element contains `http-equiv=\"refresh\"`\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/timing-adjustable.html\"\u003e\r\n        Understanding Success Criterion 2.2.1: Timing Adjustable\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/meta-viewport","description":"meta-viewport","content":"\r\n## Why it matters\r\n\r\nUsing `content=\"user-scalable=no\"` in a `\u003cmeta name=\"viewport\"\u003e` element disables zooming in some browsers.\r\nUsers are forced to view the text at the specified size.\r\n\r\nMost people find it easier to read text when it is sufficiently large.\r\nPeople with visual disabilities, low vision, or limited color perception are likely to find text unreadable when it’s too small.\r\n\r\n## How to fix\r\n\r\nRemove `content=\"user-scalable=no\"` from all `\u003cmeta\u003e` elements.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA news page is coded in a way that browser zooming causes some content to extend beyond the screen's viewport.\r\nIn an attempt to address that problem, a `\u003cmeta\u003e` element is configured to disable browser zooming.\r\n\r\nAs a result, text is always displayed at the specified size. However, some users now find some text difficult to read because it is too small.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cmeta name=\"viewport\" [content=\"user-scalable=no\"]\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cmeta\u003e` element is reconfigured to (1) set the width of the page to match the screen width of the device, and (2) set the initial zoom level of the page.\r\nEveryone can zoom the text to a readable size, and the content stays within the viewport.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cmeta name=\"viewport\" [content=\"width=device-width, initial-scale=1.0\"]\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   No `\u003cmeta\u003e` element contains `content=\"user-scalable=no\"`\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/resize-text.html\"\u003e\r\n        Understanding Success Criterion 1.4.4: Resize text\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/aria-input-field-name","description":"aria-input-field-name","content":"\r\nCustom ARIA input fields must communicate their _complete_ names to assistive technologies.\r\n\r\n## Why it matters\r\n\r\nEvery custom input field must have an accessible name that communicates its specific purpose.\r\n\r\nA custom ARIA input field might be based on an element (such as `\u003cdiv\u003e`) that isn't supported by `\u003clabel\u003e` elements. Browsers will not associate a `\u003clabel\u003e` element with any element that is not a [labelable element](https://html.spec.whatwg.org/multipage/forms.html#category-label) in HTML. This is true even if the element's role were to be changed to match the implicit ARIA role of a labelable element. For instance, while an `\u003cinput type=\"text\"\u003e` is a labelable element, a `\u003cdiv role=\"textbox\"\u003e` is not. As a result, if a `\u003clabel\u003e` element references an unsupported element, its text will not be used to name the referenced custom input field, and thus will not be exposed available to assistive technologies. If such a `\u003clabel\u003e` contains a meaningful part of the custom input field's name, people who use assistive technologies won't know its complete name. They might find it difficult to distinguish among elements with similar names.\r\n\r\n## How to check\r\n\r\nInspect the element using the [Accessibility pane in the browser Developer Tools](https://developer.chrome.com/blog/new-in-devtools-65/#a11y-pane) to verify that the field's accessible name is complete without the associated `\u003clabel\u003e`.\r\n\r\nIf the element's accessible name is complete without the associated `\u003clabel\u003e` text, then no changes are needed.\r\n\r\n## How to fix  \r\n\r\nProvide the complete accessible name using ONE of the following methods:\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA `\u003cdiv\u003e` functions as a slider. Part of its name is contained only in a `\u003clabel\u003e` element. Because `\u003cdiv\u003e` elements aren't supported by `\u003clabel\u003e` elements, assistive technologies won't have access to, and thus won't announce the `\u003clabel\u003e` text. Assistive technology users won't know they're being asked for a shirt size.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`[\u003clabel for=\"field1\"\u003e]Shirt size\u003c/label\u003e\r\n\u003cdiv id=\"field1\" role=\"slider\" aria-label=\"women's\"\u003e...\u003c/div\u003e`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe element's complete name is provided using an `aria-labelledby` attribute. Everyone will understand what they are selecting.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003cp id=\"field1label\"\u003e]Women's shirt size\u003c/p\u003e\r\n\u003cdiv id=\"field1\" role=\"slider\" [aria-labelledby=\r\n\"field1label\"]\u003e...\u003c/div\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nInstances need review if ALL of the following are true:\r\n\r\n-   Element has one of the following role attribute values:\r\n    -   `combobox`\r\n    -   `listbox`\r\n    -   `searchbox`\r\n    -   `slider`\r\n    -   `spinbutton`\r\n    -   `textbox`\r\n-   Element has an accessible name provided by an `aria-label`, `aria-labelledby`, or `title` attribute\r\n-   Element's `id` is referenced by a `\u003clabel\u003e` element\r\n-   Element's type is not [labelable](https://html.spec.whatwg.org/multipage/forms.html#category-label)\r\n-   `\u003clabel\u003e` contains text that isn't included in the element's accessible name\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2 Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/color-contrast","description":"color-contrast","content":"\r\nText elements must have sufficient contrast.\r\n\r\n## Why it matters\r\n\r\nMost people find it easier to read text when it has a sufficiently high contrast against its background.\r\n\r\nPeople with visual disabilities, low vision, limited color perception, or [presbyopia](https://en.wikipedia.org/wiki/Presbyopia) are likely to find text unreadable when contrast is too low.\r\n\r\n## How to check\r\n\r\nUse [Accessibility Insights for Windows](https://go.microsoft.com/fwlink/?linkid=2075365) (or the [Colour Contrast Analyser](https://developer.paciellogroup.com/resources/contrastanalyser/) if you're testing on a Mac) to manually verify that the text has sufficient contrast against the background. If the background is an image or gradient, test an area where contrast appears to be lowest.\r\n\r\nIf the text has sufficient contrast against all areas of the background, then no changes are needed.\r\n\r\nIf the element is an icon or other non-text content, then this requirement does not apply.\r\n\r\nFor detailed test instructions, go to **Assessment** \u003e **Adaptable content** \u003e **Contrast**.\r\n\r\n## How to fix\r\n\r\nIf the text has a contrast ratio of 1:1 and is intended to be hidden, mark the element with `aria-hidden=\"true\"`.\r\n\r\nIf the text is intended to be visible, adjust its foreground color and/or background color to provide sufficient contrast.\r\n\r\n-   A minimum contrast ratio of 3:1 is required for large text, defined as:\r\n\r\n    -   18pt (24 CSS pixels)\r\n    -   OR bold 14pt (19 CSS pixels)\r\n\r\n-   A minimum contrast ratio of 4.5:1 is required for smaller text.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA small amount of white text is centered over a large background image. Portions of the text don't have sufficient contrast against the background. Some people will find the text difficult to read.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn overlay is used to darken the background image in the area beneath the white text. Where the image has no text, it retains its original colors. The darker background provides sufficient contrast with all portions of the text. Most people will find the text legible.\r\n\r\n\u003c/PassSection\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nInstances need review if ANY of the following are true:\r\n\r\n-   Element's background color can't be determined (for example, because of an image or gradient)\r\n-   Element's foreground color can't be determined (for example, because of transparency)\r\n-   Element's foreground and background have a 1:1 contrast ratio\r\n-   Element is overlapped or obscured by another element\r\n-   Element content is very short or contains non-text characters\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html\"\u003e\r\n        Understanding Success Criterion 1.4.3 Contrast (Minimum)\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/duplicate-id-aria","description":"duplicate-id-aria","content":"\r\nAn element referenced by a label or ARIA attribute must have a unique `id` value.\r\n\r\n## Why it matters\r\n\r\nLabels and ARIA relationship attributes (such as `aria-controls`, `aria-labelledby`, and `aria-owns`) depend on unique `id` values to identify specific UI components. When multiple elements in a web page share the same `id` value, assistive technologies are likely to recognize only the first, and ignore others.\r\n\r\n## How to check\r\n\r\nMake sure each ID value assigned to an ARIA attribute or a label element (via its `for` attribute) is different.  In other words, make sure ID values that need to be referenced by ARIA attributes or label elements aren't used more than once in the same document, application, or web page.   \r\n\r\n## How to fix\r\n\r\nFor each element referenced by a label or ARIA attribute, provide a unique `id` value.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA web page has separate controls for searching across the site or searching within the current page. Each control is labelled by a `\u003cp\u003e` element through an `aria-labelledby` attribute.\r\nBut both `\u003cp\u003e` elements have the same `id` value. When interpreting these `aria-labelledby` attributes, assistive technologies use the first element that matches the specified `id` value. As a result, both search fields are reported as \"Search this site.\"\r\nAssistive technology users would not know that the second search field is actually for searching within the page.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cform id=\"site-search\" role=\"search\"\u003e\r\n\u003cp [id=\"search-label\"]\u003eSearch this site\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"site-search-field\" [aria-labelledby=\"search-label\"] size=\"50\"\u003e\r\n\u003cinput type=\"submit\" id=\"site-search-submit\" value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n…\r\n\u003cform id=\"page-search\" role=\" search\"\u003e\r\n\u003cp [id=\"search-label\"]\u003eSearch this page\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"page-search-field\" [aria-labelledby=\"search-label\"] size=\"50\"\u003e\r\n\u003cinput type=\"submit\" id=\"page-search-submit\" value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cp\u003e` elements referenced by the `aria-labelledby` attributes have unique `id` values.\r\nAssistive technologies report the correct label for each control.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cform id=\"site-search\" role=\"search\"\u003e\r\n\u003cp [id=\"site-search-label\"]\u003eSearch this site\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"site-search-field\" [aria-labelledby=\"site-search-label\"] size=\"50\"\u003e\r\n\u003cinput type=\"submit\" id=\"site-search-submit\" value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n…\r\n\u003cform id=\"page-search\" role=\" search\"\u003e\r\n\u003cp [id=\"page-search-label\"]\u003eSearch this page\u003c/p\u003e\r\n\u003cinput type=\"search\" id=\"page-search-field\" [aria-labelledby=\"page-search-label\"] size=\"50\"\u003e\r\n\u003cinput type=\"submit\" id=\"page-search-submit\" value=\"Search\"\u003e\r\n\u003c/form\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   Document has no elements referenced by ARIA or labels that share the same id attribute value\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/parsing.html\"\u003eUnderstanding Success Criterion 4.1.1: Parsing\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/label-content-name-mismatch","description":"label-content-name-mismatch","content":"\r\nAn element's visible text must be included in its accessible name.\r\n\r\n## Why it matters\r\n\r\nAnyone who uses speech-based interaction benefits when UI components' accessible names match their visible text. Sighted people who can't use a mouse or keyboard might use speech input. When a UI component's accessible name matches its visible text, speech input users can activate them by speaking their visible text. People with low vision might use text-to-speech when they visit a new page to get an overview of the content. Such users might be confused if the accessible names they hear don’t match the text they see on the screen. People with cognitive challenges might find it especially difficult to remember speech commands that are different from what's visible on the screen.\r\n\r\n## How to fix\r\n\r\nGood\r\n\r\n-   Make sure the element's accessible name contains its visible text.\r\n\r\nBetter\r\n\r\n-   Make sure the element's accessible name begins with its visible text.\r\n\r\nBest\r\n\r\n-   Make sure the element's accessible name exactly matches its visible label.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA shopping site has a link with visible text that says, \"Shop now,\" An `aria-label` attribute gives the link a more detailed accessible name: \"Shop our complete line of children's outerwear.\" People who use speech-to-text are likely to find the mismatch confusing. People who use text-to-speech won't be able to activate the link by speaking the visible text.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`…\r\n\u003ca href=\"/children/outerwear/landing.htm\" aria-label=\"Shop our complete line of children's outerwear.\"\u003eShop now\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe visible text label is changed to \"Shop children's outerwear\" and the `aria-label` attribute is removed. Everyone sees and hears the same text.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`…\r\n\u003ca href=\"/children/outerwear/landing.htm\"\u003eShop children's outerwear\u003c/a\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if the element's accessible name is or contains an exact match of its visible text.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/label-in-name.html\"\u003e\r\n        Understanding Success Criterion 2.5.3: Label in Name\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G208\"\u003e\r\n        Including the text of the visible label as part of the accessible name\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G211\"\u003eMatching the accessible name to the visible label\u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/failures/F96\"\u003e\r\n        Failure due to the accessible name not containing the visible label text\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/link-in-text-block","description":"link-in-text-block","content":"\r\nLinks must be visually distinguished from surrounding text through styling or contrast.\r\n\r\n## Why it matters\r\n\r\nLinks embedded in text are most visible when they have distinct styling or sufficient contrast with the surrounding text.\r\n\r\n-   Styling can make an embedded link discernable if it changes the shape of the text, for example by adding an underline or border or switching to a different font.\r\n-   Contrast can make an embedded link discernable if the link text is sufficiently darker or lighter than surrounding text.\r\n\r\nAn embedded link with no styling and insufficient contrast can be difficult to discern, especially for people with low vision or limited color vision.\r\n\r\n## How to check\r\n\r\nManually verify that the link text has one or both of the following:\r\n\r\n-   A contrast ratio of at least 3:1 compared to surrounding text\r\n-   A visual style (such as underline, bold, or italics) that gives it shape that's different from surrounding text.\r\n\r\nTo measure contrast, use [Accessibility Insights for Windows](https://go.microsoft.com/fwlink/?linkid=2075365) (or the [Colour Contrast Analyser](https://developer.paciellogroup.com/resources/contrastanalyser/) if you're testing on a Mac).\r\n\r\nIf the link text has sufficient contrast and/or a distinct visual style, then no changes are needed.\r\n\r\n## How to fix\r\n\r\nImplement one or both of the following:\r\n\r\nGood\r\n\r\n-   Adjust the color of the link text and/or the surrounding text to provide a contrast ratio of at least 3:1.\r\n\r\nBetter\r\n\r\n-   Provide a distinct style for the link text, such as an underline, a border, or a different font.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nIn this page, paragraph text is styled to be black, and links are styled to be blue. Links embedded in paragraphs have an inadequate contrast ratio of 2.4:1 with the surrounding text. Moreover, the links' default underline has been removed by setting the `text-decoration` attribute to `none`. Because of these styling choices, some people will have difficulty seeing the embedded links.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cstyle\u003e\r\n[p {color: #000000}\r\na:link {text-decoration: none; color: #0000FF}]\r\n...\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nIn this page, all embedded links are contained in `\u003cp\u003e` elements. The styling specifies that _links in paragraphs_ will have an underline. Links in other elements, such as tables or lists, are not underlined. Everyone will find it easier to see the embedded links.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cstyle\u003e\r\np {color: #000000}\r\n[p a:link {text-decoration: underline; color: #0000FF}]\r\na:link {text-decoration: none; color: #0000FF}\r\n...\r\n\u003c/style\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nInstances need review if ALL of the following are true:\r\n\r\n-   Link has no distinct style\r\n-   Link's contrast ratio with surrounding tet is less than 3:1\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html\"\u003e\r\n        Understanding Success Criterion 1.4.1 Use of Color\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html\"\u003e\r\n        Understanding Success Criterion 1.4.3 Contrast (Minimum)\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/needs-review/p-as-heading","description":"p-as-heading","content":"\r\n`\u003cp\u003e` elements must not be styled to look like headings.  \r\n\r\n## Why it matters \r\n\r\nHeadings are used to convey the structure and hierarchy of the content displayed on the page. Headings should be denoted by the use of `\u003ch1\u003e` through `\u003ch6\u003e` elements in hierarchical order. When these headings are improperly ordered or `\u003cp\u003e` elements are styled to look like headings, the heading structure isn’t defined in a way that assistive technologies can recognize. As a result, screen reader users won’t be able to use the navigational structure within a page.  \r\n\r\n## How to fix \r\nGood:  \r\n- Make sure that `\u003cp\u003e` elements are not styled to serve as headings. \r\n\r\nBetter:\r\n- Re-implement headings using the appropriate heading tags (`\u003ch1\u003e` through `\u003ch6\u003e`) or use `role=”heading”` and `aria-level` attributes on the element which is visually styled to serve as a heading. \r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA page on cooking techniques uses a `\u003cp\u003e` element with a bold style to serve as the primary heading of the page. The `\u003cp\u003e` element might look like a heading, but it will not be communicated to screen readers as a heading.  \r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={` \u003chtml xmlns=\"http://www.thisIsATestSite.org/1800/xhtml\"\u003e \r\n\r\n                \u003chead\u003e \r\n\r\n                \u003ctitle\u003eCooking techniques\u003c/title\u003e \r\n\r\n                \u003c/head\u003e \r\n\r\n                \u003cbody\u003e \r\n\r\n                \u003cp\u003e\u003cb\u003eCooking techniques\u003c/b\u003e\u003c/p\u003e \r\n\r\n                ... some text here ... \r\n\r\n                \u003ch2\u003eCooking with oil\u003c/h2\u003e \r\n\r\n                ... text of the section ... \r\n\r\n                \u003cp\u003e\u003cb\u003e Sautéeing \u003c/b\u003e\u003c/p\u003e \r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nA page on cooking techniques uses a `\u003ch1\u003e` element for the primary heading, and `\u003ch2\u003e` and `\u003ch3\u003e` elements to introduce the major sections. This structure of the document can be communicated to screen readers. \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003chtml xmlns=\" http://www.thisIsATestSite.org/1800/xhtml\"\u003e \r\n\r\n                \u003chead\u003e \r\n\r\n                \u003ctitle\u003eCooking techniques\u003c/title\u003e \r\n\r\n                \u003c/head\u003e \r\n\r\n                \u003cbody\u003e \r\n\r\n                \u003ch1\u003eCooking techniques\u003c/h1\u003e \r\n\r\n                ... some text here ... \r\n\r\n                \u003ch2\u003eCooking with oil\u003c/h2\u003e \r\n\r\n                ... text of the section ... \r\n\r\n                \u003ch3\u003eSautéeing\u003c/h3\u003e \r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n\r\n## About this rule \r\n\r\nThis rule passes if the following are true: \r\n- paragraph elements do not use italic, bold, or font size to give the appearance of headings. \r\n\r\n## More examples \r\n\r\n    [Understanding Success Criterion 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html)\r\n\r\n    [More information on Headings](https://www.w3.org/WAI/tutorials/page-structure/headings/)\r\n\r\n    [Organizing a page using headings](https://www.w3.org/WAI/WCAG21/Techniques/general/G141)\r\n\r\n    [Using h1-h6 to identify headings](https://www.w3.org/WAI/WCAG21/Techniques/html/H42)\r\n\r\n    [Providing heading elements at the beginning of each section of content](https://www.w3.org/WAI/WCAG21/Techniques/html/H69)\r\n\r\n    [Using standard text formatting conventions for headings](https://www.w3.org/WAI/WCAG21/Techniques/text/T3)\r\n"},{"title":"/info-examples/web/needs-review/th-has-data-cells","description":"th-has-data-cells","content":"\r\nA header cell in a data table must not have missing data cells.\r\n\r\n## Why it matters\r\n\r\nPeople with good vision typically read a data table by visually scanning its rows or columns of data. They can easily skip over a missing data cell and continue through the rest.\r\n\r\nPeople who use assistive technologies a read data table by navigating through its rows or columns using a keyboard. When they encounter a missing data cell, they might not realize there's any content beyond it. Even if they do, they can't skip over the missing data cell; instead, they have to navigate around it. They are likely to have difficulty interpreting the table.\r\n\r\n## How to check\r\n\r\nExamine the row or column header in the context of the table to verify that it has no data cells.\r\n\r\nIf the header _has no data cells_, then no changes are required. (The missing cells will not disrupt keyboard navigation.)\r\n\r\n## How to fix\r\n\r\nIf a row or column header _has at least one data cell_, then ensure that ALL of the following are true:\r\n\r\n-   The header has a full set (row or column) of related data cells. (It's ok if cells are empty.)\r\n-   All of the data cells are programmatically related to the header.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nIn this table, the third column is missing one data cell. Assistive technology users who attempt to navigate down that column using a keyboard might conclude incorrectly that the column has no additional cells.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ctable\u003e\r\n\u003cthead\u003e\r\n\u003ctr\u003e\r\n\u003cth scope=\"col\"\u003eItem\u003c/th\u003e\r\n\u003cth scope=\"col\"\u003ePounds\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\u003c/thead\u003e\r\n\u003ctbody\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003eApples\u003c/th\u003e\r\n\u003ctd\u003e12\u003c/td\u003e\r\n\u003c/tr\u003e\r\n[\u003ctr\u003e\r\n\u003cth\u003eBananas\u003c/th\u003e\r\n\u003c/tr\u003e]\r\n\u003ctr\u003e\r\n\u003cth\u003eOranges\u003c/th\u003e\r\n\u003ctd\u003e16\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003ePears\u003c/th\u003e\r\n\u003ctd\u003e6\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003c/tbody\u003e\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe missing data cell has been added, though it remains empty. All users can infer that the cell has no data, and they can easily access the remaining cells in the column.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003ctable\u003e\r\n\u003cthead\u003e\r\n\u003ctr\u003e\r\n\u003cth scope=\"col\"\u003eItem\u003c/th\u003e\r\n\u003cth scope=\"col\"\u003ePounds\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\u003c/thead\u003e\r\n\u003ctbody\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003eApples\u003c/th\u003e\r\n\u003ctd\u003e12\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003eBananas\u003c/th\u003e\r\n[\u003ctd\u003e\u003c/td\u003e]\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003eOranges\u003c/th\u003e\r\n\u003ctd\u003e16\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003cth\u003ePears\u003c/th\u003e\r\n\u003ctd\u003e6\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003c/tbody\u003e\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nInstances need review if ALL of the following are true:\r\n\r\n-   Element is a header cell (`\u003cth\u003e` or has `role=\"columnheader\"` or `role=\"rowheader\"`)\r\n-   Header cell is missing one or more programmatically related data cells.\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1 Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/nested-interactive","description":"nested-interactive","content":"\r\nInteractive controls must not have focusable descendants.\r\n\r\n## Why it matters\r\n\r\nCertain interactive controls such as `button`, `checkbox`, `img`, `scrollbar`or `slider` can't have interactive children.\r\nAssistive technologies, such as screen readers, might ignore or respond unexpectedly to such nested controls.\r\n\r\n## How to fix\r\n\r\nEnsure interactive controls don't have focusable descendants by separating nested interactive components or styling a single element.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nAn element with `role=\"button\"` has a link as part of the text. Screen readers will not read the link.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cdiv role =\"button\"\u003e \u003ca href=foo.bar\u003eDownload or click here to learn more\u003c/a\u003e\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe link is now outside the button. All users can interact with the button and the link.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cdiv role =\"button\"\u003eDownload\u003c/div\u003e\r\n \u003ca href=foo.bar\u003eLearn more about your download\u003c/a\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   There are no focusable elements nested in controls that don't allow interactive children\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/object-alt","description":"object-alt","content":"\r\nAn `\u003cobject\u003e` element must have alternative text.\r\n\r\n## Why it matters\r\n\r\nAn `\u003cobject\u003e` element is used to embed multimedia content in a web page. It can also be used to embed one web page inside another.\r\n\r\nAlternative text is a word or phrase that (1) is coded in a way that assistive technologies can associate it with a specific non-text object, and (2) conveys the same information as the non-text object.\r\n\r\nBecause assistive technologies can’t interpret objects directly, they rely on alternative text to communicate the meaning of non-text content to users.\r\n\r\n## How to fix\r\n\r\nFor each `\u003cobject\u003e` element, provide alternative text using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n\r\nFor tips on writing good text alternatives, see [Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content](https://www.w3.org/WAI/WCAG21/Techniques/general/G94).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cobject\u003e` element doesn't have alternative text.\r\nAssistive technology users won't have any idea what information the object contains unless they interact with it.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003cobject type=\"application/pdf\" data=\"/media/beeth_fe.pdf\" width=\"250\" height=\"200\"\u003e\r\n\u003c/object\u003e\t\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cobject\u003e` element uses an `aria-label` attribute to provide alternative text.\r\nAssistive technology users can judge from the name whether the object is likely to have useful content.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cobject type=\"application/pdf\" data=\"/media/beeth_fe.pdf\" width=\"250\" height=\"200\" [aria-label=\"Sheet music for Beethoven's \"Für Elise\"]\u003e\r\n\u003c/object\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `title` attribute\r\n-   Element’s default semantics were overridden with `role=\"presentation\"` or `role=\"none\"`\r\n\r\nImportant: Use caution when applying `role=\"presentation\"` or `role=\"none\"` to an `\u003cobject\u003e` element.\r\nThese roles instruct assistive technologies to disregard the element’s implicit role without hiding its content from users.\r\nIf an `\u003cobject\u003e` element with a `role` of `presentation` or `none` has inner text, it will be reported to users as a text string with no semantic context. For more information, see [Using ARIA: Use of Role=presentation or Role=none](https://www.w3.org/TR/using-aria/#presentation).\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G94\"\u003e\r\n        Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text\r\n        content\r\n    \u003c/HyperLink\u003e\r\n\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/presentation-role-conflict","description":"presentation-role-conflict","content":"\r\nThe use of role=\"none\" or role=\"presentation\" on HTML elements must not conflict with the implicit functionality of the element, and must not be in conflict with other specified global ARIA attributes.  \r\n\r\n## Why it matters\r\nAn [ARIA role](https://www.w3.org/TR/wai-aria/#roles_categorization) attribute can be added to an element to instruct assistive technologies to treat the element as something other than its native HTML element type. For example, an `\u003ca\u003e` element with `role=\"button\"` is to be treated as a button, not a link. \r\n\r\nAssistive technologies will often report an element’s role when the role has semantics important to accessibility. For example, they inform users when they encounter links, buttons, headings, or images. However, they generally ignore exposing properties of semantically neutral (generic) elements, such as `\u003cspan\u003e` or `\u003cdiv\u003e` elements.  \r\n\r\nThe `role=“presentation”` or `role=“none”` attributes instruct assistive technologies to disregard the element’s implicit role without hiding its content from users. However, in some cases HTML elements will not respect a role=\"none\" or role=\"presentation\". Generally this occurs when an element has implicit behaviors or explicit properties which are important to accessibility, and they conflict with the specified presentational roles. As a result, the roles are ignored and users will continue to be able to interact with the element as if the specified `role` was not present.\r\n\r\n## How to fix\r\nFor each element with `role=\"none\"` or `role=\"presentation\"`: \r\n- Make sure it doesn’t have a global ARIA attribute. \r\n- Make sure it's not focusable. \r\n\r\n**Note:** an element with `tabindex=\"-1\"` is removed from the web page's tabbing order. It is, however, still focusable.\r\n\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe element `\u003carticle\u003e` has a global ARIA attribute of `aria-label` in addition to the `role=\"presentation\"`, and because of its `tabindex` attribute, it is also a focusable element. This causes a failure due to conflict between the global ARIA attribute, the element being focusable, and the presentational role.  \r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003carticle tabindex=\"-1\" aria-label=\"I am a global aria-attribute\" role=\"presentation\"\u003e `} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe element `\u003carticle\u003e` has an empty ARIA attribute of `aria-label=\"\"` in addition to the `role=\"presentation\"`. Its `tabindex` attribute has been removed. Now, the element's implicit `article` role is not reported to the browser's accessibility tree, because the conflicting properties which were important to accessibility (named element and being focusable) have been removed.  \r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003carticle\" aria-label=\"\" role=\"presentation\"\u003e`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule \r\n\r\nThis rule passes if ALL of the following are true: \r\n- all elements with `role=“none”` or `role=“presentation”` do not have a global ARIA attribute. \r\n- all elements with `role=“none”` or `role=“presentation”` are not focusable.  \r\n\r\n\r\n## More examples \r\n    [Using ARIA: Use of Role=presentation or Role=none](https://www.w3.org/TR/using-aria/#presentation)\r\n\r\n    [Understanding Success Criterion 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships)\r\n\r\n    [Understanding Success Criterion 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html)\r\n"},{"title":"/info-examples/web/role-img-alt","description":"role-img-alt","content":"\r\nElements with `role=\"img\"` must have alternative text.\r\n\r\n## Why it matters\r\n\r\nThe attribute `role=\"img\"` is used to identify the container for a collection of elements that together form a single meaningful image.\r\n\r\nAlternative text is a word or phrase that (1) is coded in a way that assistive technologies can associate it with a specific non-text object, and (2) conveys the same information as the non-text object.\r\n\r\nBecause assistive technologies can’t interpret images directly, they rely on alternative text to communicate the meaning of non-text content to users.\r\n\r\n## How to fix\r\n\r\nFor each element with `role=\"img\"` :\r\n\r\n1. Determine whether the image as a whole is meaningful or decorative:\r\n\r\n-   An image is _meaningful_ if it conveys information that isn’t available through other page content.\r\n-   An image is _decorative_ if it could be removed from the page with _no_ impact on meaning or function.\r\n\r\n2. If the image is meaningful, provide alternative text using one of the following attributes:\r\n\r\n-   `aria-label`\r\n-   `aria-labelledby`\r\n-   `title`\r\n\r\n3. If the image is decorative, replace `role=\"img\"` with `role=\"presentation\"` or `role=\"none\"`.\r\n\r\nFor tips on writing good text alternatives, see [Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content](https://www.w3.org/WAI/WCAG21/Techniques/general/G94)\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cdiv\u003e` is correctly identified as the container for an image (composed of ASCII characters), but it has no alternative text.\r\nAssistive technologies can't tell users anything about the image's meaning.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n[\u003cdiv role=\"img\"\u003e(ㆆ _ ㆆ)\u003c/div\u003e]\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAn `aria-label` attribute allows assistive technologies to describe the image to users.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cdiv role=\"img\" [aria-label=\"scared face\"]\u003e(ㆆ _ ㆆ)\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n-   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Techniques/general/G94\"\u003e\r\n        Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text\r\n        content\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/scrollable-region-focusable","description":"scrollable-region-focusable","content":"\r\nElements with scrollable content must be accessible by keyboard.\r\n\r\n## Why it matters\r\n\r\nWhen a page includes content in a scrollable element, all users must be able to scroll any hidden content into view. Mouse users can scroll such content by clicking the scrollbar associated with the scrollable element. However, it isn’t possible activate a scrollbar using a keyboard, because a scrollbar can’t receive input focus. Instead, focus must be moved either to the scrollable element itself or to a child element within the scrollable element. Then the content can be scrolled using the keyboard’s arrow keys. Thus, scrollable content is keyboard accessible only if the scrollable element is focusable or contains a focusable element. (An element is focusable if it can receive input focus via scripting, mousing, or keyboard tabbing.)\r\n\r\n## How to fix\r\n\r\nFor each element with the `overflow` property set to `auto` or `scroll` , make sure the element itself is focusable or contains a focusable element.\r\n\r\n-   Some scrollable elements (such as `\u003cinput type=\"text\"\u003e` are natively focusable.\r\n-   Elements that are not natively focusable (such as `\u003cdiv\u003e` elements) can be made focusable by adding the attribute `tabindex=\"0\"`.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe content in the `\u003cdiv\u003e` is scrollable, but neither the `\u003cdiv\u003e` itself nor any of its content is tabbable.\r\nAs a result, keyboard users can't operate the scrollbar to see all of the content.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ch3\u003eSeverability\u003c/h3\u003e\r\n\u003cdiv [style=\"height: 50px; overflow: auto;]\"\u003eIf any provision of these terms is found to be unenforceable or invalid under any applicable law, such unenforceability or invalidity shall not render these terms unenforceable or invalid as a whole, and such provisions shall be deleted without affecting the remaining provisions herein.\u003c/div\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe attribute `tabindex=\"0\"` makes the `\u003cdiv\u003e` tabbable.\r\nKeyboard users can tab to the `\u003cdiv\u003e` and then use operate the scrollbar by using arrow keys.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\t\u003ch3\u003eSeverability\u003c/h3\u003e\r\n\u003cdiv style=\"height: 50px; overflow: auto;\" [tabindex=\"0\"]\u003eIf any provision of these terms is found to be unenforceable or invalid under any applicable law, such unenforceability or invalidity shall not render these terms unenforceable or invalid as a whole, and such provisions shall be deleted without affecting the remaining provisions herein.\u003c/div\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Scrollable element is focusable\r\n-   Scrollable element contains focusable elements\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html\"\u003eUnderstanding Success Criterion 2.1.1: Keyboard\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/select-name","description":"select-name","content":"\r\nAll `\u003cselect\u003e` elements must have accessible names.\r\n\r\n## Why it matters\r\n\r\nA `\u003cselect\u003e` element is an HTML control for selecting among a set of options.\r\nAn accessible name is a word or phrase coded in a way that assistive technologies can associate it with a specific user interface object. Assistive technologies can then refer to the object by name, not just by type.\r\nWhen a `\u003cselect\u003e` element doesn't an accessible name, people who use assistive technologies have no way of knowing its purpose.\r\n\r\n## How to fix\r\n\r\nFor each `\u003cselect\u003e` element, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n-   `aria-labelledby` attribute referencing visible text\r\n\r\nBest\r\n\r\n-   Explicit `\u003clabel\u003e` element\r\n-   Implicit (wrapped) `\u003clabel\u003e` element\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cselect\u003e` element doesn't have an accessible name. Instead, the first option—configured as a placeholder—is used to communicate the control's purpose. Although some people might correctly infer the purpose of the control, the implementation is potentially confusing to any user.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003cselect name=\"flavorchoices\"\u003e\r\n\u003coption value=\"0\"\u003e[Flavor:]\u003c/option\u003e\r\n\u003coption value=\"1\"\u003eApple\u003c/option\u003e\r\n\u003coption value=\"2\"\u003eCherry\u003c/option\u003e\r\n\u003coption value=\"3\"\u003eGrape\u003c/option\u003e\r\n\u003coption value=\"4\"\u003eLemon\u003c/option\u003e\r\n\u003coption value=\"5\"\u003eWatermelon\u003c/option\u003e\r\n\u003c/select\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003cselect\u003e` element is provided an accessible name using a `\u003clabel\u003e` element. All users can tell that the control allows them to select a flavor.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`[\u003clabel for=\"flavor\"\u003e]Flavor:\u003c/label\u003e\r\n\u003cselect [id=\"flavor\"] name=\"flavorchoices\"\u003e\r\n\u003coption value=\"0\"\u003eApple\u003c/option\u003e\r\n\u003coption value=\"1\"\u003eCherry\u003c/option\u003e\r\n\u003coption value=\"2\"\u003eGrape\u003c/option\u003e\r\n\u003coption value=\"3\"\u003eLemon\u003c/option\u003e\r\n\u003coption value=\"4\"\u003eWatermelon\u003c/option\u003e\r\n\u003c/select\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following are true:\r\n\r\n-   Element has an `aria-labelledby` attribute referencing an element that is visible to screen readers\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n-   Element has an explicit `\u003clabel\u003e` element\r\n-   Element has an implicit (wrapped) `\u003clabel\u003e` element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/server-side-image-map","description":"server-side-image-map","content":"\r\nServer-side image maps must not be used.\r\n\r\n## Why it matters\r\n\r\nServer-side image maps work by passing mouse click coordinates to a server-side script, which then determines what was clicked.\r\n\r\nBecause server-side image maps require the use of a mouse, they are not accessible to people who use keyboards (including people who use screen readers) or speech commands.\r\n\r\n## How to fix\r\n\r\nReplace server-side image maps ( `\u003cimg ismap\u003e` elements) with client-side image maps ( `\u003cimg usemap\u003e` elements).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nA server-side image map requires users to select a business location using a mouse.\r\nThis image map is unusable by people who use a keyboard or speech commands.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ca href=\"/media/locations.map\"\u003e\r\n\u003cimg src=\"/media/locations.png\" [ismap]\u003e\r\n\u003c/a\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nA client-side image map allows users to select a business location using a mouse, a keyboard, or a speech command.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003cp\u003eSelect a business location to see our business hours:\u003c/p\u003e\r\n\u003cimg src=\"locations.png\" width=\"800\" height=\"400\" alt=\"Map of business locations\" [usemap]=\"#locations-map\"\u003e\r\n\u003cmap name=\"locations-map\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,200,400\" alt=\"Corporate headquarters\" href=\"location1.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,400,400\" alt=\"Elm Street store\" href=\"location2.htm\"\u003e\r\n\u003carea shape=\"rect\" coords=\"0,0,600,400\" alt=\"Maple Street store\" href=\"location3.htm\"\u003e\r\n\u003c/map\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   `\u003cimg\u003e` with `ismap` attribute does not exist\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html\"\u003eUnderstanding Success Criterion 2.1.1: Keyboard\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/summary-name","description":"summary-name","content":"\r\nAll `\u003csummary\u003e` elements must have discernible text\r\n\r\n## Why it matters\r\n\r\nThe `\u003csummary\u003e` HTML element represents a brief summary, caption, or legend for the rest of the content of its parent `\u003cdetails\u003e` element. Together, a `\u003csummary\u003e` and `\u003cdetails\u003e` element can be used to create a native HTML disclosure widget.\r\nIf a `\u003csummary\u003e` element does not have discernible text or an accessible name, a screen reader user cannot determine\r\nthe purpose of the element, nor what the disclosure widget is meant to represent.\r\n\r\n## How to fix\r\n\r\nFor each `\u003csummary\u003e` element, provide discernible text using one of the following methods:\r\n\r\n-   Provide inner text content that is available to assistive technologies (_not_ marked with `display: none` or `aria-hidden=\"true\"`)\r\n-   Provide a `title` attribute\r\n-   Privide an `aria-label` attribute\r\n-   Provide an `aria-labelledby` attribute referencing visible text\r\n-   Only in the event a name cannot be determined, remove the `\u003csummary\u003e` element and the user agent will supply a localized \"Details\" string as the summary.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003cdetails\u003e` element contains a `\u003csummary\u003e` element that does not have discernible text.\r\n\r\n\u003c/FailSection\u003e\r\n\r\n\u003cFailExample\r\n    example={`\u003cdetails\u003e\r\n[\u003csummary\u003e\u003c/summary\u003e]\r\n\u003cp\u003eThe \u003csummary\u003e HTML element represents a brief summary, caption, or legend for the rest of the content of its parent \u003cdetails\u003e element. Together, a \u003csummary\u003e and \u003cdetails\u003e element can be used to create a native HTML disclosure widget.\u003c/p\u003e`}\r\n/\u003e\r\n\r\n\u003cPassSection\u003e\r\n\r\nVisible inner text gives the `\u003csummary\u003e` element a discernible text label and accessible name.\r\n\r\n\u003c/PassSection\u003e\r\n\r\n\u003cPassExample\r\n    example={`\u003cdetails\u003e\r\n[\u003csummary\u003eSummary Element\u003c/summary\u003e]\r\n\u003cp\u003eThe \u003csummary\u003e HTML element represents a brief summary, caption, or legend for the rest of the content of its parent \u003cdetails\u003e element. Together, a \u003csummary\u003e and \u003cdetails\u003e element can be used to create a native HTML disclosure widget.\u003c/p\u003e`}\r\n/\u003e\r\n\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if ANY of the following is true:\r\n\r\n-   Element has inner text content that is visible to screen readers\r\n-   Element has an `aria-labelledby` attribute that references an element or elements containing text\r\n-   Element has a non-empty `aria-label` attribute\r\n-   Element has a non-empty `title` attribute\r\n-   The parent `\u003cdetails\u003e` element does not have a `\u003csummary\u003e` element\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html\"\u003e\r\n        Understanding Success Criterion 4.1.2: Name, Role, Value\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/svg-img-alt","description":"svg-img-alt","content":"\r\nAn `\u003csvg\u003e` element with an image or graphics role must have alternative text.\r\n\r\n## Why it matters\r\n\r\nAn `\u003csvg\u003e` element is a container for images and graphics.\r\nAlternative text is text that conveys the meaning of non-text content, such as icons, photos, illustrations, and graphs. Because assistive technologies can't interpret an image directly, they rely on alternative text to communicate the image's meaning to users.\r\nWhen an `\u003csvg\u003e` element marked with `role=\"img\"`, `role=\"graphics-document\"`, or `role=\"graphics-symbol\"` doesn't have alternative text, people who use assistive technologies have no way of knowing what it means.\r\n\r\n## How to fix\r\n\r\nFor each `\u003csvg\u003e` element with `role=\"img\"`, `role=\"graphics-document\"`, or `role=\"graphics-symbol\"`, provide an accessible name using one of the following methods.\r\n\r\nGood\r\n\r\n-   `title` attribute\r\n-   child `\u003ctitle\u003e` element\r\n\r\nBetter\r\n\r\n-   `aria-label` attribute\r\n\r\nBest\r\n\r\n-   `aria-labelledby` attribute\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThis `\u003csvg\u003e` element contains a red circle and has a role attribute to indicate that it contains an image.\r\nBut because the `\u003csvg\u003e` element doesn't have alternative text, people who use assistive technologies won't know what image it represents.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\u003csvg role=\"img\" width=\"100\" height=\"100\"\u003e\r\n\u003ccircle cx=\"50\" cy=\"50\" r=\"40\" fill=\"red\"\u003e\r\n\u003c/circle\u003e\r\n\u003c/svg\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe `\u003csvg\u003e` element gets alternative text through an `aria-labelledby` element referencing visible text in a paragraph.\r\nAll users can tell that the image is a red circle.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\u003cp [id=\"circle\"]\u003e[A red circle]\u003c/p\u003e\r\n\u003csvg role=\"img\" width=\"100\" height=\"100\" [aria-labelledby=\"circle\"]\u003e\r\n\u003ccircle cx=\"50\" cy=\"50\" r=\"40\" fill=\"red\"\u003e\r\n\u003c/circle\u003e\r\n\u003c/svg\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   ANY of the following are true:\r\n    -   Element has an `aria-labelledby` attribute that references elements that are visible to screen readers\r\n    -   Element has a non-empty `aria-label` attribute\r\n    -   Element has a non-empty child `\u003ctitle\u003e` element\r\n    -   Element has a non-empty `title` attribute\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html\"\u003e\r\n        Understanding Success Criterion 1.1.1: Non-text Content\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/td-headers-attr","description":"td-headers-attr","content":"\r\nThe headers attribute in a `\u003ctable\u003e` element must refer to a cell within the same table.\r\n\r\n## Why it matters\r\n\r\nIn a table, a header cell and a data cell are programmatically related if they are coded in a way that assistive technologies can accurately determine their relationship.\r\nWhen a data cell has a `headers` attribute that points to a cell in a different table, the programmatic relationship isn’t defined in a way that assistive technologies can recognize.\r\nAs a result, assistive technology users can’t tell which header cell goes with a given data cell.\r\n\r\n## How to fix\r\n\r\nFor each `\u003ctd\u003e` element, make sure the `headers` attribute points to a `\u003cth\u003e` element within the same table.\r\nNote that the `headers` attribute is typically necessary only in extremely complex tables.\r\n\r\nIn most cases, using the `scope` attribute is sufficient and simpler to implement.\r\nFor details about accessible table markup, see [Tables – WAI Web Accessibility Tutorials](https://www.w3.org/WAI/tutorials/tables/).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe code below includes two tables with the same column structure. The `headers` attributes in the second table reference `\u003cth\u003e` elements in the first table.\r\nHowever, because assistive technologies expect a `headers` attribute to reference a cell within the same table, they might not identify any headers for the second table.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ctable\u003e\r\n\u003ccaption\u003eEast Branch Members\u003c/caption\u003e\r\n\u003ctr\u003e\r\n\u003cth id=\"name\"\u003eName\u003c/th\u003e\r\n\u003cth id=\"email\"\u003eE-mail\u003c/th\u003e\r\n\u003cth id=\"phone\"\u003ePhone\u003c/th\u003e\r\n\u003cth id=\"city\"\u003eCity\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd [headers=\"name\"]\u003eAlexandra Gunderson\u003c/td\u003e\r\n\u003ctd [headers=\"email\"]\u003ealexg@company.com\u003c/td\u003e\r\n\u003ctd [headers=\"phone\"]\u003e1-234-5678\u003c/td\u003e\r\n\u003ctd [headers=\"city\"]\u003eCharlotte\u003c/td\u003e\r\n\u003c/tr\u003e\r\n…\r\n\u003c/table\u003e\r\n\u003ctable\u003e\r\n\u003ccaption\u003eWest Branch Members\u003c/caption\u003e\r\n\u003ctr\u003e\r\n\u003ctd headers=\"name\"\u003eMary Gonzales\u003c/td\u003e\r\n\u003ctd headers=\"email\"\u003emary@company.com\u003c/td\u003e\r\n\u003ctd headers=\"phone\"\u003e1-234-5678\u003c/td\u003e\r\n\u003ctd headers=\"city\"\u003ePortland\u003c/td\u003e\r\n\u003c/tr\u003e\r\n…\r\n\u003ctd headers=\"name\"\u003eLi Shen\u003c/td\u003e\r\n…\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\n`\u003cth\u003e` cells have been added to the second table.\r\nAssistive technologies can correctly identify column headers for both tables.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003ctable\u003e\r\n\u003ccaption\u003eEast Branch Members\u003c/caption\u003e\r\n\u003ctr\u003e\r\n\u003cth id=\"name\"\u003eName\u003c/th\u003e\r\n\u003cth id=\"email\"\u003eE-mail\u003c/th\u003e\r\n\u003cth id=\"phone\"\u003ePhone\u003c/th\u003e\r\n\u003cth id=\"city\"\u003eCity\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd headers=\"name\"\u003eAlexandra Gunderson\u003c/td\u003e\r\n\u003ctd headers=\"email\"\u003ealexg@company.com\u003c/td\u003e\r\n\u003ctd headers=\"phone\"\u003e1-234-5678\u003c/td\u003e\r\n\u003ctd headers=\"city\"\u003eCharlotte\u003c/td\u003e\r\n\u003c/tr\u003e\r\n…\r\n\u003c/table\u003e\r\n\u003ctable\u003e\r\n\u003ccaption\u003eWest Branch Members\u003c/caption\u003e\r\n\u003ctr\u003e\r\n[\u003cth id=\"name\"\u003eName\u003c/th\u003e]\r\n[\u003cth id=\"email\"\u003eE-mail\u003c/th\u003e]\r\n[\u003cth id=\"phone\"\u003ePhone\u003c/th\u003e]\r\n[\u003cth id=\"city\"\u003eCity\u003c/th\u003e]\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd headers=\"name\"\u003eMary Gonzales\u003c/td\u003e\r\n\u003ctd headers=\"email\"\u003emary@company.com\u003c/td\u003e\r\n\u003ctd headers=\"phone\"\u003e1-234-5678\u003c/td\u003e\r\n\u003ctd headers=\"city\"\u003ePortland\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctd headers=\"name\"\u003eLi Shen\u003c/td\u003e\r\n...\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   The `headers` attribute refers only to cells within the same table\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/tutorials/tables/\"\u003eTables – WAI Web Accessibility Tutorials\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/th-has-data-cells","description":"th-has-data-cells","content":"\r\nA `\u003cth\u003e` element or element with `role=\"columnheader\"` or `role=\"rowheader\"` must have an associated `\u003ctd\u003e` element.\r\n\r\n## Why it matters\r\n\r\nWhen people with good vision see a table with a row or column header that has no associated data cells, they can tell at a glance that the data is missing. People who use assistive technologies must explore a table deliberately to discover its contents; they are likely to have difficulty interpreting a table with missing data cells.\r\n\r\n## How to fix\r\n\r\nMake sure each `\u003cth\u003e` element has an associated data cell.\r\nFor details about accessible table markup, see [Tables – WAI Web Accessibility Tutorials](https://www.w3.org/WAI/tutorials/tables/).\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nOne header cell (`\u003cth\u003e` element) in this table has no associated data cells (`\u003ctd\u003e` elements).\r\nAssistive technology users are likely to find the table structure confusing.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003ctable\u003e\r\n\u003ctr\u003e\r\n\u003ctd scope=\"col\"\u003eName\u003c/th\u003e\r\n\u003cth scope=\"col\"\u003eE-mail\u003c/th\u003e\r\n[\u003cth scope=\"col\"\u003eCity\u003c/th\u003e]\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eMary Gonzales\u003c/td\u003e\r\n\u003ctd\u003emary@company.com\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eArvind Gupta\u003c/td\u003e\r\n\u003ctd\u003earvind@company.com\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eSelena Anders\u003c/td\u003e\r\n\u003ctd\u003eselena@company.com\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nAll `\u003cth\u003e` elements have associated `\u003ctd\u003e` elements.\r\nThe table structure is clear to everyone, and everyone can tell that some data cells are empty.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003ctable\u003e\r\n\u003ctr\u003e\r\n\u003cth scope=\"col\"\u003eName\u003c/th\u003e\r\n\u003cth scope=\"col\"\u003eE-mail\u003c/th\u003e\r\n\u003cth scope=\"col\"\u003eCity\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eMary Gonzales\u003c/td\u003e\r\n\u003ctd\u003emary@company.com\u003c/td\u003e\r\n[\u003ctd\u003eSeattle\u003c/td\u003e]\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eArvind Gupta\u003c/td\u003e\r\n\u003ctd\u003earvind@company.com\u003c/td\u003e\r\n[\u003ctd\u003e\u003c/td\u003e]\r\n\u003c/tr\u003e\r\n\u003ctr\u003e\r\n\u003ctd\u003eSelena Anders\u003c/td\u003e\r\n\u003ctd\u003eselena@company.com\u003c/td\u003e\r\n[\u003ctd\u003e\u003c/td\u003e]\r\n\u003c/tr\u003e\r\n\u003c/table\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   All table header cells are associated with data cells that exist\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html\"\u003e\r\n        Understanding Success Criterion 1.3.1: Info and Relationships\r\n    \u003c/HyperLink\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/tutorials/tables/\"\u003eTables – WAI Web Accessibility Tutorials\u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/info-examples/web/valid-lang","description":"valid-lang","content":"\r\nThe `lang` attribute must have a valid value.\r\n\r\n## Why it matters\r\n\r\nSometimes a web page written in one language has a passage in a different language. When the language of such a passage is correctly identified (by a `lang` attribute on the containing element), browsers and assistive technologies can render the text more accurately; screen readers can use the correct pronunciation; visual browsers can display the correct characters; and media players can show captions correctly. All users find it easier to understand the content.\r\n\r\n## How to fix\r\n\r\nProvide a valid `lang` attribute value:\r\n\r\n1. Identify the passage’s language.\r\n2. Choose the corresponding language code from the [IANA Language Subtag Registry](http://www.iana.org/assignments/language-subtag-registry)\r\n3. Make sure the value is spelled correctly.\r\n\r\n## Example\r\n\r\n\u003cPassFailGrid\u003e\r\n\u003cFailSection\u003e\r\n\r\nThe default language of the page is English. A passage in Spanish has an invalid language attribute, so assistive technologies ignore it.\r\nScreen readers announce the Spanish passage as if it were written in English, making it more difficult to understand.\r\n\r\n\u003c/FailSection\u003e\r\n\u003cFailExample example={`\r\n\u003chtml lang=\"en-US\u003e\r\n…\r\n\u003cbody\u003e\r\n…\r\n\u003cspan id=\"original\"\u003eThe quick brown fox jumps over the lazy dog.\u003c/span\u003e\r\n…\r\n\u003cspan id=\"translation\" [lang=\"sp\"]\u003e El rápido zorro marrón salta sobre el perro perezoso.\u003c/span\u003e\r\n`} /\u003e\r\n\u003cPassSection\u003e\r\n\r\nThe passage has the correct language attribute for Spanish.\r\nScreen readers announce the passage using correct pronunciation, making it easier to understand.\r\n\r\n\u003c/PassSection\u003e\r\n\u003cPassExample example={`\r\n\u003chtml lang=\"en-US\u003e\r\n…\r\n\u003cbody\u003e\r\n…\r\n\u003cspan id=\"original\"\u003eThe quick brown fox jumps over the lazy dog.\u003c/span\u003e\r\n…\r\n\u003cspan id=\"translation\" [lang=\"es\"]\u003e El rápido zorro marrón salta sobre el perro perezoso.\u003c/span\u003e\r\n`} /\u003e\r\n\u003c/PassFailGrid\u003e\r\n\r\n## About this rule\r\n\r\nThis rule passes if:\r\n\r\n-   The `lang` attribute has a valid value\r\n\r\n## More examples\r\n\r\n\u003cLinks\u003e\r\n    \u003cHyperLink href=\"https://www.w3.org/WAI/WCAG21/Understanding/language-of-parts.html\"\u003e\r\n        Understanding Success Criterion 3.1.2: Language of Parts\r\n    \u003c/HyperLink\u003e\r\n\u003c/Links\u003e\r\n"},{"title":"/docs/android/reference/releases","description":"Release Notes for Accessibility Insights for Android","content":"\r\nAccessibility Insights for Android is no longer available for download. While existing installations remain functional, they will no longer receive updates (including security updates) going forward. [learn more](https://aka.ms/accessibility-insights-android/deprecated)"},{"title":"/docs/general/faq","description":"Accessibility Insights FAQ","content":"\r\nWe have aggregated general FAQs here. Each tool has its dedicated FAQ sections:\r\n\r\n- [FAQ for Accessibility Insights for Web](/docs/web/reference/faq/)\r\n- [FAQ for Accessibility Insights for Windows](/docs/windows/reference/faq/)\r\n\r\n## What does Accessibility Insights do with telemetry?\r\n\r\nYou have the option to opt into telemetry. When you do, Accessibility Insights collects anonymized data to identify the top accessibility issues found by users. This will help focus the accessibility tools and standards community to improve guidelines, rules engines, and features. [Read more about telemetry](/docs/general/telemetry/).\r\n\r\n## How can I contribute to Accessibility Insights tools?\r\n\r\nAccessibility Insights for Web and for Windows are open source on GitHub:\r\n\r\n- [Go to the GitHub repository for Accessibility Insights for Web](https://github.com/microsoft/accessibility-insights-web)\r\n- [Go to the GitHub repository for Accessibility Insights for Windows](https://github.com/microsoft/accessibility-insights-windows)\r\n\r\n## Why can't I download Accessibility Insights for Android any more?\r\n\r\nAccessibility Insights for Android is no longer available for download. While existing installations remain functional, they will no longer receive updates (including security updates) going forward. [learn more](https://aka.ms/accessibility-insights-android/deprecated)\r\n"},{"title":"/docs/general/quality","description":"Commitment to quality","content":"\r\nThe Accessibility Insights team is committed to providing tools that are fast, easy to use, and accurate.\r\n\r\nTeams who are new to Accessibility Insights sometimes see failures that appear to be false positives rather than legitimate accessibility issues. In most cases, investigation has revealed that Accessibility Insights has identified a legitimate accessibility issue. In the few cases where an actual false positive has been discovered, the Accessibility Insights team has quickly fixed it and deployed an update to ensure zero false positives.\r\n\r\nWe have two approaches to reported false positives:\r\n\r\n## 1. Investigate and fix\r\n\r\nFor verified false positives, we will try to provide a fix as quickly as possible.\r\n\r\n## 2. Clarify and build consensus\r\n\r\nSometimes it isn't immediately clear whether a failure is a false positive or a legitimate accessibility issue. In this case, Accessibility Insights has historically raised the issue to internal stakeholders to build consensus.\r\n\r\nBuilding Accessibility Insights is an ongoing learning process for everyone involved. The Accessibility Insights team is committed not only to improving our tools, but also to collaborating with the people\r\nwho use them, consulting with accessibility experts across the community, and documenting key decisions.\r\n\r\nTo ask questions or to file issues:\r\n\r\n-   [Help for Accessibility Insights for Web](/docs/web/reference/help/)\r\n-   [Help for Accessibility Insights for Windows](/docs/windows/reference/help/)\r\n"},{"title":"/docs/general/support","description":"Support for Accessibility Insights","content":"\r\nFor support on individual Accessibility Insights tools and their respective documentation:\r\n\r\n-   [Help for Accessibility Insights for Web](/docs/web/reference/help/)\r\n-   [Help for Accessibility Insights for Windows](/docs/windows/reference/help/)\r\n"},{"title":"/docs/general/telemetry","description":"Accessibility Insights and Telemetry","content":"\r\nWhen you opt into telemetry, Accessibility Insights collects telemetry data, which we share back to the community, to have a better understanding on what accessibility issues are more common and how users are leveraging the tool to improve the overall accessibility of their websites and Windows applications.\r\n\r\nBy opting into telemetry, you help develop inclusive software and improve the existing tools. This data gives you a voice in the community and in the development of Accessibility Insights, and can influence the focus of the accessibility tools and the standards community to improve guidelines, rules engines, and features.\r\n\r\nAccessibility Insights will share, via a blog post, regular reports on any trends observed, with the goal of bringing more clarity to the accessibility space for everyone.\r\n\r\nWhile we appreciate the telemetry insight as it's very valuable, we also know and respect that not everyone wants to share this data, so we ask for your permission every time you install our tools in a new device and offer the ability to disable telemetry in the settings:\r\n\r\n-   [Learn how to disable telemetry in Accessibility Insights for Web](/docs/web/reference/telemetry/)\r\n-   [Learn how to disable telemetry in Accessibility Insights for Windows](/docs/windows/reference/telemetry/)\r\n\r\nFinally, we want to reiterate that we take your privacy very seriously. All collected data is anonymized and has gone through a privacy review. If you want to learn more about what data we collect, our code is open source:\r\n\r\n-   [Go to the GitHub repository for Accessibility Insights for Web](https://github.com/microsoft/accessibility-insights-web)\r\n-   [Go to the GitHub repository for Accessibility Insights for Windows](https://github.com/microsoft/accessibility-insights-windows)\r\n"},{"title":"/docs/web/getstarted/assessment","description":"Assessment in Accessibility Insights for Web","content":"\r\n## What is an assessment?\r\n\r\nAn assessment is a comprehensive process that measures compliance with [Web Content Accessibility Guidelines (WCAG) 2.2 Level AA](https://www.w3.org/WAI/WCAG22/quickref/?versions=2.2\u0026levels=aaa) success criteria. The assessment process currently includes 24 tests, and each test covers one or more accessibility requirements.\r\n\r\nThere are three types of requirement:\r\n\r\n-   **Automated** – the tool identifies instances and evaluates them automatically.\r\n-   **Assisted** – the tool actively helps you identify or evaluate instances.\r\n-   **Manual** – the tool provides instructions for identifying and evaluating instances.\r\n\r\nNote: Completing an assessment requires you to use standard keyboard commands and to visually identify interactive interface elements.\r\n\r\n## How to complete an assessment\r\n\r\n### Get ready to test\r\n\r\n1. In Chrome or the new Microsoft Edge, navigate to the page you want to test (aka the target page).\r\n1. Open Accessibility Insights for Web:\r\n\r\n    - Select the extension icon.\r\n\r\n    or\r\n\r\n    - Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n\r\n        Windows or Linux:\r\n\r\n        1. Press Shift+Alt+T or F10 to set focus on the browser's address bar.\r\n        1. Press the Left arrow to set focus on the Accessibility Insights for Web extension.\r\n        1. Press the Space key to open the extension.\r\n\r\n        MacOS:\r\n\r\n        1. Press ⌘+L to set focus on the browser's address bar.\r\n        1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n        1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch pad**.\r\n\r\n    ![Four options are available in the Launch pad: FastPass, Quick Assess, Assessment, Ad hoc tools](/assets/web/getstarted/general/launch-pad.png)\r\n\r\n1. In the **Launch pad**, select **Assessment**.\r\n\r\n    A secondary browser window will open to an overview of the assessment process and results. At this point, the assessment is 100% incomplete, so no results are available.\r\n\r\n    ![Target page and the overview displayed side-by-side](/assets/web/getstarted/assessment/overview-start.png)\r\n\r\n### Run the automated checks\r\n\r\n1. In the navigation pane, select **Automated checks**.\r\n\r\n    Automated checks will run on your target page. Activate the visual helper to highlight failure instances in the target page.\r\n\r\n2. Review the automated check results.\r\n\r\nYou can review the automated check results in the Accessibility Insights for Web page.\r\n\r\n![Failures listed in the Accessibility Insights for Web page](/assets/web/getstarted/assessment/automated-checks-failed-rules.png)\r\n\r\n##### Review results in the Accessibility Insights for Web page\r\n\r\nBy default, the Accessibility Insights for Web page shows:\r\n\r\n-   The total number of failed instances\r\n-   A list of any accessibility rules that were violated\r\n-   The number of failed instances for each rule\r\n-   A visual helper toggle that allows you to quickly show or hide failure highlighting in the target page\r\n\r\n![Failed rules in the Accessibility Insights for Web page](/assets/web/getstarted/assessment/automated-checks-failed-rules.png)\r\n\r\nA rule can be expanded to show information about its failed instances.\r\nRules can be expanded or collapsed:\r\n\r\n-   All at once by using **Expand all / Collapse all**\r\n-   Individually by clicking a rule, or by tabbing to it and pressing **Enter**\r\n\r\nExpanding a rule:\r\n\r\n-   Shows links to additional information about the rule, including why it matters, examples, and detailed instructions for fixing\r\n-   Highlights its failed instances in the target page\r\n-   Shows the failed instances in a list\r\n\r\nEach failed instance includes:\r\n\r\n-   Unique identifying information about the element that failed (for example, a CSS selector)\r\n-   How to fix the detected issue\r\n-   Additional information to help identify the element (some rules only)\r\n-   Buttons to take action on the individual issue. You can:\r\n    -   **File an issue** in your GitHub or Azure Boards repository.\r\n    -   **Copy failure details** to your clipboard and paste them into the tool or document of your choice.\r\n\r\n![Failed instances in the Accessibility Insights for Web page](/assets/web/getstarted/assessment/automated-checks-rule-expanded.png)\r\n\r\nSelecting a failed instance highlights it in the target page. You can select multiple instances.\r\nAn instance can be selected or deselected by clicking it, or by tabbing to it and pressing **Enter**.\r\n\r\n![One failed instance selected in the Accessibility Insights for Web page and highlighted in the target page](/assets/web/getstarted/fastpass/automated-checks-instance-selected.png)\r\n\r\n### Complete the assisted and manual tests\r\n\r\nEach of the remaining tests covers a set of related requirements. We recommend completing the tests and requirements in the order they appear in the navigation pane.\r\n\r\n1.  In the navigation pane, collapse the list of automated checks by selecting **Automated checks**.\r\n\r\n2.  Select the next test (**Keyboard**).\r\n\r\n    The navigation pane will expand to show all of the test requirements.\r\n\r\n3.  Optional: To learn more about the test:\r\n\r\n    1. In the navigation pane, under the test name, select **Getting started**.\r\n\r\n        The main pane will update to show introductory information about the test.\r\n\r\n    1. In the main pane, next to the page title, select **Guidance \u003cInfoIcon /\u003e**.\r\n\r\n        A new browser tab will open with additional information about the test:\r\n\r\n        - Why it matters\r\n        - Do-and-don't design guidelines\r\n        - Links to relevant WCAG success criteria, sufficient techniques, and common failures.\r\n\r\n        ![Test guidance opened in a new browser tab.](/assets/web/getstarted/assessment/test-guidance.png)\r\n\r\n4.  In the navigation pane, under **Keyboard**, select the first requirement (**Keyboard navigation**).\r\n\r\n    The main pane will update to show test instructions for the selected requirement.\r\n\r\n    ![Test instructions in the main pane](/assets/web/getstarted/assessment/how-to-test.png)\r\n\r\n5.  Optional: To learn more about a requirement, select **Guidance \u003cInfoIcon /\u003e**.\r\n\r\n    A side panel will open with detailed information about the requirement:\r\n\r\n    -   Why it matters\r\n    -   From a user's perspective (where applicable). This is a contribution from the Design for People Guidelines.\r\n    -   How to fix\r\n    -   Examples\r\n    -   Code snippets (where applicable)\r\n    -   Links to relevant WCAG success criteria, sufficient techniques, and common failures.\r\n\r\n    ![Requirement guidance in a side panel](/assets/web/getstarted/assessment/requirement-guidance.png)\r\n\r\n6.  Read the instructions under **How to test**.\r\n\r\n7.  Evaluate the instances and record your results.\r\n\r\n    Some requirements in an assessment require you to manually identify the instances to evaluate. (All of the requirements in the **Keyboard** test require you to manually identify instances.)\r\n\r\n    Some requirements automatically generate a list of instances to evaluate. (The first requirement that generates a list of instances is in the **Landmarks** test.)\r\n\r\n    -   For manual requirements:\r\n\r\n        1. Select **Pass** or **Fail** for the requirement.\r\n\r\n            Tip: You can reset a requirement to its original indeterminate state by selecting **Undo** \u003cUndoIcon /\u003e.\r\n\r\n        1. If the requirement fails, add a failure instance. (If the requirement passes, no further input is needed.)\r\n\r\n        ![Keyboard navigation requirement shows failed when one failure instance added](/assets/web/getstarted/assessment/manual-fail.png)\r\n\r\n    -   For assisted requirements, select **Pass** or **Fail** for each instance.\r\n\r\n        Tip: You can reset an instance to is original indeterminate state by selecting **Undo** \u003cUndoIcon /\u003e.\r\n        Tip: After you mark all the failures, you can pass the remaining instances by selecting **Pass unmarked instances**.\r\n\r\n        ![Link function requirement shows failed when instance marked as failed](/assets/web/getstarted/assessment/assisted-fail.png)\r\n\r\n8.  Select the next requirement, follow the instructions, and record your results.\r\n\r\n9.  Repeat with the remaining tests.\r\n\r\n10. When every requirement in every test is marked as **Pass** or **Fail**, your assessment is complete.\r\n\r\n### View a summary of the assessment results\r\n\r\nAt any time, select **Overview** in the navigation pane.\r\n\r\n![Overview showing results of a completed assessment](/assets/web/getstarted/assessment/overview-end.png)\r\n\r\n### Share a detailed report of the assessment results\r\n\r\n1. In command bar near the top of the page, select **Export result**.\r\n\r\n    A dialog will open.\r\n\r\n2. Optional: In the dialog, provide a description for the report.\r\n3. Select **Export** and choose one of the options.\r\n\r\n### To export as HTML\r\n\r\nThe HTML report groups results by the tests in Assessment and provides a summarized view of all the requirements and their state (_pass, fail_ or _incomplete_).\r\n\r\n1. In the **Export** dialog, under the **Export** dropdown, select **Export as HTML**.\r\n\r\nAn HTML report will automatically download to your computer. Depending on your browser, the report might open automatically in a new browser tab, or you might have to open it manually.\r\n![Report showing results of a completed assessment](/assets/web/getstarted/assessment/report.png)\r\n\r\n### To export as JSON\r\n\r\nThe JSON report groups results by the Success Criteria and provides a list of all the requirements under each S.C.\r\nThe date for the JSON report is exported in ISO 8601 format and the report version is the same as the Accessibility Insights for Web extension version.\r\n\r\n1. In the **Export** dialog, under the **Export** dropdown, select **Export as JSON**.\r\n\r\nA JSON report will automatically download to your computer.\r\n\r\n## Start Over\r\n\r\n### Start a new assessment\r\n\r\nData collected in an assessment will persist until you start a new assessment.\r\n\r\n1. In the command bar near the top of the page, select **Start over** \u003e **Start over assessment**.\r\n\r\n    Note: Depending on the width of your browser window, you might have to select the **More items** disclosure button to access **Start over**.\r\n\r\n1. In the confirmation dialog, select **Start over**.\r\n\r\n    All data in the assessment will be cleared, and you will automatically navigate to the assessment **Overview**.\r\n\r\n### Start over a single test\r\n\r\nData collected in a specific test will persist until you start over the test (or start a new assessment).\r\n\r\n1. Navigate to the test you want to start over.\r\n\r\n1. In the command bar near the top of the page, select **Start over** \u003e **Start over \\\u003ctest name\\\u003e**.\r\n\r\n    Note: Depending on the width of your browser window, you might have to select the **More items** disclosure button to access **Start over**.\r\n\r\n1. In the confirmation dialog, select **Start over**.\r\n\r\n    All data in the test will be cleared, and you will automatically navigate to the first requirement in the test you started over.\r\n\r\n## Save and Load an in-progress assessment\r\n\r\nAt any time, you can save an in-progress assessment and load it later on.\r\n\r\n### Save an assessment\r\n\r\n1. In the command bar near the top of the page, select **Save assessment**.\r\n\r\n    The assessment file (_a11ywebassessment_) will automatically download to your computer.\r\n\r\n### Load an assessment\r\n\r\n1. In the command bar near the top of the page, select **Load assessment**.\r\n\r\n    A file explorer will open.\r\n\r\n1. In the file explorer, select the assessment file you want to load.\r\n\r\n    Note: Data collected in an assessment persists until you load or start a new assessment. If there is an in progress assessment already, a confirmation dialog will appear. Loading an assessment will clear all data in the local in-progress assessment.\r\n"},{"title":"/docs/web/getstarted/fastpass","description":"FastPass in Accessibility Insights for Web","content":"\r\n## What is FastPass?\r\n\r\nFastPass is a lightweight, _two-step_ process that helps developers identify common, high-impact accessibility issues in less than five minutes.\r\n\r\n1. _Automated checks_ - the tool automatically checks for compliance with dozens of accessibility requirements. Our automated checks are powered by [axe-core](https://www.npmjs.com/package/axe-core).\r\n1. _Assisted test for tab stops_ - the tool provides clear instructions, partial automation, and a visual helper that makes it easy to identify critical accessibility issues related to keyboard access, such as missing tab stops, keyboard traps, and incorrect tab order.\r\n1. _Needs review_ - the tool provides instances that need to be reviewed by a human to determine whether they pass or fail. \r\n\r\nWe recommend developers run a FastPass before every check-in of UI code.\r\n\r\nNotes:\r\n\r\n-   Completing a FastPass requires you to use standard keyboard commands and to visually identify interactive interface elements.\r\n-   Automated checks can detect some common accessibility problems such as missing or invalid properties. But most accessibility problems can only be discovered through manual testing. The best way to evaluate web accessibility compliance is to complete an assessment.\r\n\r\n## How to complete a FastPass\r\n\r\n### Get ready to test\r\n\r\n1.  In Chrome or the new Microsoft Edge, navigate to the page you want to test (aka the target page).\r\n1.  Open Accessibility Insights for Web:\r\n\r\n    -   Select the extension icon.\r\n\r\n    or\r\n\r\n    -   Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    -   Use these keyboard commands:\r\n\r\n        -   Windows or Linux:\r\n\r\n            1. Press Shift+Alt+T or F10 to set focus on the browser's tool bar.\r\n            1. Press the Left Arrow key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n        -   macOS:\r\n\r\n            1. Press ⌘+L to set focus on the browser's tool bar.\r\n            1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch Pad**.\r\n\r\n    ![Four options available in the Launch pad: FastPass, Quick Assess, Assessment, Ad hoc tools](/assets/web/getstarted/general/launch-pad.png)\r\n\r\n### Run automated checks\r\n\r\n1. In the **Launch pad**, select **FastPass**.\r\n\r\n    Automated checks will run on your target page. Individual failure instances will be highlighted directly in the target page, and the Accessibility Insights for Web page will open in a new browser window.\r\n\r\n1. Review the automated check results.\r\n\r\n    You can review the automated check results directly in the target page or in the Accessibility Insights for Web page.\r\n\r\n![Failures highlighted on the target page and listed in the Accessibility Insights for Web page](/assets/web/getstarted/fastpass/automated-checks-start.png)\r\n\r\n##### Review results in the Accessibility Insights for Web page\r\n\r\nBy default, the Accessibility Insights for Web page shows:\r\n\r\n-   The total number of failed instances\r\n-   A list of any accessibility rules that were violated\r\n-   The number of failed instances for each rule\r\n-   A visual helper toggle that allows you to quickly show or hide failure highlighting in the target page\r\n\r\n![Failed rules in the Accessibility Insights for Web page](/assets/web/getstarted/fastpass/automated-checks-failed-rules.png)\r\n\r\nA rule can be expanded to show information about its failed instances.\r\nRules can be expanded or collapsed:\r\n\r\n-   All at once by using **Expand all / Collapse all**\r\n-   Individually by clicking a rule, or by tabbing to it and pressing **Enter**\r\n\r\nExpanding a rule:\r\n\r\n-   Shows links to additional information about the rule, including why it matters, examples, and detailed instructions for fixing\r\n-   Highlights its failed instances in the target page\r\n-   Shows the failed instances in a list\r\n\r\nEach failed instance includes:\r\n\r\n-   The class name of the element that failed\r\n-   How to fix the detected issue\r\n-   Additional information to help identify the element (some rules only)\r\n-   A disclosure button that reveals more actions to take on the failed instance. You can:\r\n    -   **File an issue** in your GitHub or Azure Boards repository.\r\n    -   **Copy failure details** to your clipboard and paste them into the tool or document of your choice.\r\n\r\n![Failed instances in the Accessibility Insights for Web page](/assets/web/getstarted/fastpass/automated-checks-rule-expanded.png)\r\n\r\nSelecting a failed instance highlights it in the target page. You can select multiple instances.\r\nAn instance can be selected or deselected by clicking it, or by tabbing to it and pressing **Enter**.\r\n\r\n![One failed instance selected in the Accessibility Insights for Web page and highlighted in the target page](/assets/web/getstarted/fastpass/automated-checks-instance-selected.png)\r\n\r\n##### Review results in the target page\r\n\r\nSelecting a failure icon \u003cImportantIcon /\u003e opens a dialog with the following information:\r\n\r\n-   A description of the rule that failed\r\n-   The rule name, which links to detailed information about the rule\r\n-   The number of the relevant WCAG success criteria, which links to detailed information about the criterion\r\n-   The path to the element that generated the failure\r\n-   Three buttons:\r\n    -   **Inspect HTML** takes you directly to the element's code. (You must open the Dev Tools panel to enable this button.)\r\n    -   **Copy failure details** copies all of the details to your computer's clipboard.\r\n    -   **File issue** allows you to easily [file an issue](/docs/web/getstarted/issuefiling/) on GitHub or Azure Boards.\r\n-   Instructions for fixing the problem\r\n\r\n![Failure details in a dialog on the target page](/assets/web/getstarted/fastpass/automated-checks-failure-in-target-page.png)\r\n\r\n### Complete the assisted test for Tab stops\r\n\r\n1. In the navigation pane, select **Tab stops**.\r\n1. Refresh the target page to put it into its default state.\r\n1. In **Tab stops**, turn on the **Show tab stops** toggle.\r\n\r\n    An empty circle will highlight the element that has input focus. It might be necessary to tab once to move focus into the page.\r\n\r\n    ![An empty circle highlighting the first tab stop in the target page](/assets/web/getstarted/fastpass/tab-stops-start.png)\r\n\r\n1. Use standard keyboard commands to move input focus through all the interactive elements in the page:\r\n\r\n    - Use the Tab key and Shift+Tab key to navigate between controls.\r\n    - Use the arrow keys to navigate between the focusable elements within a composite control, such as the items in a menu.\r\n\r\n    As you navigate away from each element, its place in the tab order will be displayed as a number.\r\n\r\n1. As you navigate through the elements, look for these accessibility problems:\r\n\r\n    - An interactive element can't be reached using the Tab or arrow keys.\r\n    - An interactive element \"traps\" input focus and prevents navigating away.\r\n    - An interactive element doesn't give a visible indication when it has input focus.\r\n    - The focus order is inconsistent with the logical order that's communicated visually.\r\n    - Input focus moves unexpectedly without the user initiating it.\r\n\r\n#### Review the partial automation results in the Accessibility Insights for Web page\r\n\r\nIn some cases, the Tab stops test is able to automatically detect possible Tab stops issues.\r\n\r\nA dialog will appear in the Tab stops page indicating that _Possible failures were auto-detected_ after you have completed the navigation through the elements and returned to the Accessibility Insights for Web page.\r\n\r\n![Accessibility Insights for Web Tab stops page.There is a dialog that says: \"Possible failures auto-detected. Review each finding to be sure it's valid. Add any more failures you discovered manually\" ](/assets/web/getstarted/fastpass/Tabstops-dialog.png)\r\n\r\nThese possible issues are highlighted directly in the target page and described in the Accessibility Insights for Web page.\r\n\r\nA possible Tab stops failure auto-detected will:\r\n\r\n-   Mark the requirement as _Fail_\r\n-   Add a failure instance for that rule\r\n\r\nEach automatic failure instance includes:\r\n\r\n-   A note that the issue was automatically detected and needs a human to review\r\n-   A short description on why this element was added (e.g. _Unreachable element_)\r\n-   The path to the element that generated the failure\r\n-   An **Edit** button that allows you to edit the information on the failure instance\r\n-   A **Delete** button that allows you to delete that instance\r\n\r\n![The target page shows a circle with an x and a dotted line. In the Accessibility Insights Tab Stops page, the Keyboard Navigation requirement is marked as Fail and there is a failure instance that says the element was not reached using keyboard\" ](/assets/web/getstarted/fastpass/tabstops-auto-detected.png)\r\n\r\n_Note: Turning the visual helper on / off will show / hide the visualizations and previously found automatic instances. You can use the **Start Over** button to restart the Tab stops test_\r\n\r\n#### Record your results\r\n\r\nAfter reviewing any partial automation results, record your results by marking each requirement as **Pass** or **Fail**. Optionally, if you find any failures, you can add a failure instance by selecting the **+** **Add a failure instance** button.\r\n\r\n![A number in a circle on top of each element in the tab order with arrows between the circles](/assets/web/getstarted/fastpass/tab-stops-end.png)\r\n\r\nWhen you have completed the assisted test for Tab stops, your FastPass is complete.\r\n\r\n### Optional: Evaluate instances that need review\r\n\r\nSometimes an automated check encounters an element coded in a way that it can't be evaluated automatically. For example, the color-contrast rule can't determine the contrast ratio of text that's superimposed on an image or gradient. Such instances need to be reviewed by a human to determine whether they pass or fail.\r\n\r\n#### Show instances that need review\r\n\r\n1. In the navigation pane, select **Needs review**.\r\n1. In the command bar, select **Start over**. After a moment, any instances that need review will be displayed in the main panel.\r\n1. Expand a rule to see its instances.\r\n1. To determine whether an instance passes or fails, follow the **How to check** instructions.\r\n\r\n![Needs review selected in the navigation pane, and instances that need review listed in the main panel](/assets/web/getstarted/fastpass/needs-review.png)\r\n\r\n### Share a detailed report\r\n\r\n1. In the command bar, select **Export result**.\r\n\r\n    - Optional: Provide a description to include in the report.\r\n\r\n1. Use the browser's download bar to open the report or view the file location.\r\n"},{"title":"/docs/web/getstarted/issuefiling","description":"Issue filing in Accessibility Insights for Web","content":"\r\nAccessibility Insights for Web makes it easy to file issues directly from automated check failures.\r\n\r\n## How to file issues\r\n\r\n### Configure your issue filing service\r\n\r\n1.  Open Accessibility Insights for Web:\r\n\r\n    -   Select the extension icon.\r\n\r\n    or\r\n\r\n    -   Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    -   Use these keyboard commands:\r\n\r\n        -   Windows or Linux:\r\n\r\n            1. Press Shift+Alt+T or F10 to set focus on the browser's tool bar.\r\n            1. Press the Left Arrow key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n        -   macOS:\r\n\r\n            1. Press ⌘+L to set focus on the browser's tool bar.\r\n            1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch Pad**.\r\n\r\n    ![The Launch pad open with the mouse hovering over the Settings button](/assets/web/getstarted/issuefiling/launch-pad-settings-button.png)\r\n\r\n1.  Open **Settings**:\r\n\r\n    -   Use the mouse:\r\n\r\n        1. Click **Manage settings** \u003cSettingsIcon /\u003e.\r\n        1. In the menu, Click **Settings**.\r\n\r\n    or\r\n\r\n    -   Use these keyboard commands:\r\n\r\n        1. Use the Tab key to navigate to **Manage settings** \u003cSettingsIcon /\u003e.\r\n        1. Press the Enter key to open the menu.\r\n        1. Press the Enter key again to select **Settings.**\r\n\r\n    A **Settings** panel will open in a new browser window.\r\n\r\n#### To configure GitHub issue filing\r\n\r\n1. In the **Settings** panel, under **Issue filing**, select **GitHub**.\r\n1. Enter the URL of your GitHub repository's **Issues** tab. Example: https://github.com/owner/repo/issues\r\n1. Close the **Settings** panel (X icon).\r\n\r\nor\r\n\r\n1. Use the Tab key to set focus on the currently selected **Issue filing** option. If needed, use the Up arrow or Down arrow key to select **GitHub**.\r\n1. Tab to the **Enter your GitHub issues URL** box, then enter the URL. Example: https://github.com/owner/repo/issues\r\n1. Tab to the **Close Settings Panel** button, then press the Enter key.\r\n\r\n![Accessibility Insights for Web with the Settings panel open. Under Issue filing, GitHub is selected.](/assets/web/getstarted/issuefiling/settings-github.png)\r\n\r\n#### To configure Azure Boards issue filing\r\n\r\n1. In the **Settings** panel, under **Issue filing**, select **Azure Boards**.\r\n1. Enter the URL of your Azure Boards project. Example: https://dev.azure.com/org/project\r\n1. Select the field where you want issue details to appear:\r\n\r\n    1. If your project tracks _bugs_, select **Repro steps**.\r\n    1. If your project tracks _issues_, select **Description**.\r\n\r\n1. Close the **Settings** panel.\r\n\r\nor\r\n\r\n1. Use the Tab key to set focus on the currently selected **Issue filing** option. If needed, use the Up arrow or Down arrow key to select **Azure Boards**.\r\n1. Tab to the **Enter your Azure Boards project link** box, then enter the URL. Example: https://dev.azure.com/org/project\r\n1. Tab to the **Select a field for issue details** dropdown, use the Up arrow or Down arrow key to select an option, and then press the Enter key:\r\n\r\n    1. If your project tracks _bugs_, select **Repro steps**.\r\n    1. If your project tracks _issues_, select **Description**.\r\n\r\n1. Tab to the **Close Settings Panel** button, then press the Enter key.\r\n\r\n![Accessibility Insights for Web with the Settings panel open. Under Issue filing, Azure Boards is selected.](/assets/web/getstarted/issuefiling/settings-azureboards.png)\r\n\r\n### Run automated checks\r\n\r\nDetailed instructions for running automated checks are available in [FastPass](/docs/web/getstarted/fastpass/).\r\n\r\n### File an issue\r\n\r\n1. Find the failure instance you want to file as an issue.\r\n\r\n2. Open a new issue form:\r\n\r\n    1. In the bottom right corner of the failure instance card, select **More actions** (vertical ellipsis icon).\r\n    1. In the menu that opens, select **File issue**.\r\n\r\n    or\r\n\r\n    1. Use the Tab key to set focus on a failure instance's **More actions** button, then press the Enter key to open the menu.\r\n    1. Press the Enter key again to select **File issue**.\r\n\r\n    ![A failure instance with the More actions menu open and the mouse hovering over File issue.](/assets/web/getstarted/issuefiling/file-issue-option.png)\r\n\r\n    If you're using GitHub, a **New Issue** form will open:\r\n\r\n    ![A GitHub New Issue form with failure details.](/assets/web/getstarted/issuefiling/github-new-issue.png)\r\n\r\n    If you're using Azure Boards, and your project tracks _bugs_, a **New Bug** form will open:\r\n\r\n    ![An Azure Boards New Bug form with failure details.](/assets/web/getstarted/issuefiling/azureboards-new-issue.png)\r\n\r\n    If you're using Azure Boards, and your project tracks _issues_, a **New Issue** form will open:\r\n\r\n    ![An Azure Boards New Issue form with failure details.](/assets/web/getstarted/issuefiling/azureboards-new-bug.png)\r\n\r\n    If you're using Azure Boards, a **Sever Error** page will open if there's a problem with your issue filing configuration:\r\n\r\n    ![An Azure Boards Server Error page.](/assets/web/getstarted/issuefiling/azureboards-server-error.png)\r\n\r\n    To resolve this problem:\r\n\r\n    1. In Accessibility Insights, go to **Settings** \u003e **Issue filing** \u003e **Select a field for issue details**, and choose a different option.\r\n    1. If the problem persists, make sure the bug or issue [work item type is enabled](https://docs.microsoft.com/en-us/azure/devops/organizations/settings/work/customize-process-work-item-type?view=azure-devops#enable-disable) in Azure DevOps.\r\n\r\n3. The **New Bug** or **New Issue** form will open with failure details automatically populated. If desired, edit the information in the form.\r\n\r\n4. Save the new issue:\r\n\r\n    - If you're using GitHub:\r\n\r\n        - Select the **Submit new issue** button.\r\n\r\n        or\r\n\r\n        - Use the Tab key to set focus on the **Submit new issue** button, then press the Enter key.\r\n\r\n    - If you're using Azure Boards:\r\n\r\n        - Select the **Save** button.\r\n\r\n        or\r\n\r\n        - Press Ctrl+S on your keyboard.\r\n\r\n        or\r\n\r\n        - Use the Tab key to set focus on the **Save** button, then press the Enter key.\r\n\r\n## Copy failure details\r\n\r\nIf you want to record an issue without filing it on GitHub or Azure Boards, you can copy the failure details to your clipboard and then paste them into the tool or document of your choice.\r\n\r\n1. In the bottom right corner of a failure instance card, select **More actions** (vertical ellipsis icon).\r\n1. In the menu that opens, select **Copy failure details**.\r\n\r\nor\r\n\r\n1. Use the Tab key to set focus on a failure instance's **More actions** button, then press the Enter key to open the menu.\r\n1. Use the Up arrow or Down arrow key to select **Copy failure details**.\r\n1. Press the Enter key to copy the failure details to your clipboard.\r\n\r\n![A failure instance with the More actions menu open and the mouse hovering over Copy failure details.](/assets/web/getstarted/issuefiling/copy-failure-details-option.png)\r\n"},{"title":"/docs/web/getstarted/quickassess","description":"Quick Assess in Accessibility Insights for Web","content":"\r\n## What is Quick Assess?\r\n\r\nQuick Assess is a process that measures limited compliance with [Web Content Accessibility Guidelines (WCAG) 2.1 Level AA](https://www.w3.org/WAI/WCAG21/quickref/?versions=2.1\u0026levels=aaa) success criteria with 10 requirements and each test covers one accessibility requirement.\r\n\r\nThere are three types of requirement:\r\n\r\n-   **Automated** – the tool identifies instances and evaluates them automatically.\r\n-   **Assisted** – the tool actively helps you identify or evaluate instances.\r\n-   **Manual** – the tool provides instructions for identifying and evaluating instances.\r\n\r\nNote: Completing a quick assess pass requires you to use standard keyboard commands and to visually identify interactive interface elements.\r\n\r\n## How to complete a Quick Assess\r\n\r\n### Get ready to test\r\n\r\n\r\n1. In Chrome or the new Microsoft Edge, navigate to the page you want to test (aka the target page).\r\n1. Open Accessibility Insights for Web:\r\n\r\n    - Select the extension icon.\r\n\r\n    or\r\n\r\n    - Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n\r\n        Windows or Linux:\r\n\r\n        1. Press Shift+Alt+T or F10 to set focus on the browser's address bar.\r\n        1. Press the Left arrow to set focus on the Accessibility Insights for Web extension.\r\n        1. Press the Space key to open the extension.\r\n\r\n        MacOS:\r\n\r\n        1. Press ⌘+L to set focus on the browser's address bar.\r\n        1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n        1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch pad**.\r\n\r\n    ![Four options are available in the Launch pad: FastPass, Quick Assess, Assessment, Ad hoc tools](/assets/web/getstarted/general/launch-pad.png)\r\n\r\n2. In the **Launch pad**, select **Quick Assess**.\r\n\r\n    A secondary browser window will open to an overview of the quick assess process and results. At this point, the quick assess pass is 100% incomplete, so no results are available.\r\n\r\n    ![Target page and the overview displayed side-by-side](/assets/web/getstarted/quickassess/overview.png)\r\n\r\n### Run the automated checks\r\n\r\n1. In the navigation pane, select **Automated checks**.\r\n\r\n    The navigation pane will expand to show all of the automated checks, listed in alphabetical order.\r\n\r\n2. Optional: To learn more about automated checks:\r\n\r\n    1. In the navigation pane, under **Automated checks**, select **Getting started.**\r\n\r\n        The main pane will update to show a brief description of automated checks.\r\n\r\n    2. In the main pane, next to the page title, select **Guidance \u003cInfoIcon /\u003e**.\r\n\r\n        A new browser tab will open with additional information about automated checks.\r\n\r\n3. In the navigation pane, under **Getting started**, select the first rule, **area-alt**.\r\n\r\n    Within a few seconds, Accessibility Insights for Web will run all of the automated checks. The navigation pane will update to show the outcome for each rule checked.\r\n\r\n    ![Automated checks results displayed in the navigation pane](/assets/web/getstarted/quickassess/automated-checks.png)\r\n\r\n4. Explore the results:\r\n\r\n    - To see failure instances: In the navigation pane, select a rule that failed.\r\n    - To learn more about a rule: In the main pane, under **How to test** select **See more info here**.\r\n    - To see failure instances highlighted directly in your target page:\r\n\r\n        - In the main pane, turn on the **Visual helper** toggle (highlights all failure instances simultaneously).\r\n\r\n        or\r\n\r\n        - In the main pane, select one or more check boxes (highlights only selected failure instances).\r\n\r\n    ![Failure instances highlighted on the target page](/assets/web/getstarted/quickassess/visual-toggle.png)\r\n\r\n### Complete the assisted and manual tests\r\n\r\nEach of the remaining ten requirements covers accessibility requirements. We recommend completing the tests and requirements in the order they appear in the navigation pane.\r\n\r\n1.  In the navigation pane, collapse the list of automated checks by selecting **Automated checks**.\r\n\r\n2.  Select the next test (**Keyboard**).\r\n\r\n    The navigation pane will expand to show all of the test requirements.\r\n\r\n3.  Optional: To learn more about (**Why it Matters**), view this information in the grey box on the right side under  (**Why it Matters.**)\r\n\r\n4.  Optional: To learn more about this requirement, review the information and links on the _Why it Matters_ section. \r\n\r\nA side panel will open with detailed information about the requirement: \r\n        - Why it matters\r\n        - From a user's perspective (where applicable). This is a contribution from the Design for People Guidelines.  \r\n        - How to fix \r\n        - Examples \r\n        - Code snippets (where applicable) \r\n        - Links to relevant WCAG success criteria, sufficient techniques, and common failures.\r\n\r\n    ![Requirement guidance in a side panel](/assets/web/getstarted/quickassess/examples.png)\r\n\r\n5.  Read the instructions under **How to test**.\r\n\r\n6.  Evaluate the instances and record your results.\r\n\r\n    Some requirements in a quick assess require you to manually identify the instances to evaluate. (All of the requirements in the **Keyboard** test require you to manually identify instances.)\r\n\r\n    Some requirements automatically generate a list of instances to evaluate. (The first requirement that generates a list of instances is in the **Link Purpose** requirement)\r\n\r\n    -   For manual requirements:\r\n\r\n        1. Select **Pass** or **Fail** for the requirement.\r\n\r\n            Tip: You can reset a requirement to its original indeterminate state by selecting **Undo** \u003cUndoIcon /\u003e.\r\n\r\n        1. If the requirement fails, add a failure instance. (If the requirement passes, no further input is needed.)\r\n\r\n        ![Keyboard navigation requirement shows failed when one failure instance added](/assets/web/getstarted/quickassess/failure-instance.png)\r\n\r\n    -   For assisted requirements, select **Pass** or **Fail** for each instance.\r\n\r\n        Tip: You can reset an instance to is original indeterminate state by selecting **Undo** \u003cUndoIcon /\u003e.\r\n        Tip: After you mark all the failures, you can pass the remaining instances by selecting **Pass unmarked instances**.\r\n\r\n        ![Link purpose requirement shows passed when all instances are marked as pass](/assets/web/getstarted/quickassess/pass-requirement.png)\r\n\r\n7.  Select the next requirement, follow the instructions, and record your results.\r\n\r\n8.  Repeat with the remaining requirements.\r\n\r\n9.  When every requirement in every test is marked as **Pass** or **Fail**, your quick assess is complete.\r\n\r\n### View a summary of the quick assess results\r\n\r\nAt any time, select **Overview** in the navigation pane.\r\n\r\n![Overview showing current results for an in progress quick assess](/assets/web/getstarted/quickassess/overview-updated.png)\r\n\r\n### Share a detailed report of the assessment results\r\n\r\n1. In the command bar near the top of the page, select **Export result**.\r\n\r\n    A dialog will open.\r\n\r\n2. Optional: In the dialog, provide a description for the report.\r\n3. Select **Export** and choose one of the options.\r\n\r\n### To export as HTML\r\n\r\nThe HTML report groups results by the tests in Quick Assess and provides a summarized view of all the tests and their state (_pass, fail_ or _incomplete_).\r\n\r\n1. In the **Export** dialog, under the **Export** dropdown, select **Export as HTML**.\r\n\r\nAn HTML report will automatically download to your computer. Depending on your browser, the report might open automatically in a new browser tab, or you might have to open it manually.\r\n![Report showing results of a completed assessment](/assets/web/getstarted/quickassess/report.png)\r\n\r\n### To export as JSON\r\n\r\nThe JSON report groups results by the Success Criteria and provides a list of all the requirements under each S.C.\r\nThe date for the JSON report is exported in ISO 8601 format and the report version is the same as the Accessibility Insights for Web extension version.\r\n\r\n1. In the **Export** dialog, under the **Export** dropdown, select **Export as JSON**.\r\n\r\nA JSON report will automatically download to your computer.\r\n\r\n## Start Over\r\n\r\n### Start a new Quick Assess\r\n\r\nData collected in a Quick Assess will persist until you start a new Quick Assess.\r\n\r\n1. In the command bar near the top of the page, select **Start over** \u003e **Start over Quick Assess**.\r\n\r\n    Note: Depending on the width of your browser window, you might have to select the **More items** disclosure button to access **Start over**.\r\n\r\n1. In the confirmation dialog, select **Start over**.\r\n\r\n    All data in the quick assess will be cleared, and you will automatically navigate to the Quick Assess **Overview**.\r\n\r\n## Move to Assessment\r\n\r\nAt any time, you can move your data and test results from Quick Assess into Assessment.  If you have an existing assessment in progress, you will be notified through a dialog. \r\n\r\n1. In the command bar near the top of the page, select **Move to assessment**. \r\n\r\n2. Once you are in the assessment view, you will have the existing data, that contains quick assess results, and the functionality to complete additional tests and requirements. \r\n\r\n3. Alternatively, you can also move to Assessment using the **Complete** button on the last requirement page of Quick Assess.  \r\n\r\n    *Note: Data collected in an assessment persists until you load or start a new assessment. If there is an in progress assessment already, a confirmation dialog will appear. Loading an assessment or quick assess pass will clear all data in the local in-progress assessment.*\r\n"},{"title":"/docs/web/overview","description":"Accessibility Insights for Web","content":"\r\n[Download for Web](/downloads/)\r\n\r\n## What's Accessibility Insights for Web?\r\n\r\nAccessibility Insights for Web is an extension for Chrome and [the new Microsoft Edge](https://www.microsoft.com/en-us/edge) that helps developers find and fix accessibility issues in web apps and sites.\r\n\r\nThe tool supports two primary scenarios:\r\n\r\n-   _FastPass_ is a lightweight, two-step process that helps developers identify common, high-impact accessibility issues in less than five minutes.\r\n    -   _Automated checks_ - the tool automatically checks for compliance with approximately 50 accessibility requirements.\r\n    -   _Tab stops_ - the tool provides clear instructions, partial automation, and a visual helper that makes it easy to identify critical accessibility issues related to keyboard access, such as missing tab stops, keyboard traps, and incorrect tab order.\r\n-   _Assessment_ allows anyone with HTML skills to verify that a web app or web site is compliant with [Web Content Accessibility Guidelines (WCAG) 2.1 Level AA](https://www.w3.org/WAI/WCAG21/quickref/?versions=2.1\u0026levels=aaa).\r\n    -   _Automated checks_ - the tool automatically checks for compliance with approximately 50 accessibility requirements.\r\n    -   _Manual tests_ - the tool provides step-by-step instructions, examples, and how-to-fix guidance for approximately 20 tests; many tests are \"assisted\", which means that the tool identifies the test instances or provides a visual helper.\r\n\r\n## Get Started\r\n\r\nGet started by watching a video:\r\n\r\n-   [Overview](https://www.youtube.com/watch?v=XVvBJoEe4Is)\r\n-   [Assessment](https://www.youtube.com/watch?v=m1l7ghxOKF0)\r\n\r\nOr read a tutorial:\r\n\r\n-   [FastPass](/docs/web/getstarted/fastpass/)\r\n-   [Issue filing](/docs/web/getstarted/issuefiling/)\r\n-   [Assessment](/docs/web/getstarted/assessment/)\r\n\r\n## Keyboard Shortcuts\r\n\r\nIncrease your productivity with Accessibility Insights for Web's keyboard shortcuts.\r\n\r\n-   [Keyboard shortcuts](/docs/web/reference/keyboard/)\r\n\r\n## Privacy\r\n\r\nWith your consent, Accessibility Insights for Web collects anonymized usage data and crash report information. You may opt out at any time by disabling it:\r\n\r\n-   [How do I disable telemetry?](/docs/web/reference/telemetry/)\r\n\r\n## Contributing\r\n\r\nAccessibility Insights for Web is open source on GitHub:\r\n\r\n-   [Go to the GitHub repository for Web](https://github.com/microsoft/accessibility-insights-web)\r\n\r\n## Additional Help\r\n\r\nFor additional help such as reporting issues and asking questions:\r\n\r\n-   [Help for Accessibility Insights for Web](/docs/web/reference/help/)\r\n"},{"title":"/docs/web/reference/faq","description":"FAQ for Accessibility Insights for Web","content":"\r\n\u003e Prerequisite: [Install Accessibility Insights for Web](/downloads/) if you haven't already.\r\n\r\nIf you don't see an answer to your question here, check out [Help](/docs/web/reference/help/) and [Release notes](/docs/web/reference/releases/).\r\n\r\n## How do I run Accessibility Insights for Web on local files?\r\n\r\n1. Open your browser's Extensions page:\r\n    - In Chrome, go to chrome://extensions/\r\n    - In the new Microsoft Edge, go to edge://extensions/\r\n1. Find Accessibility Insights for Web and select **Details**.\r\n1. Turn on the **Allow access to file URLS** toggle.\r\n\r\n## How do I run Accessibility Insights for Web in Incognito mode?\r\n\r\n1. Open your browser's Extensions page:\r\n    - In Chrome, go to chrome://extensions/\r\n    - In the new Microsoft Edge, go to edge://extensions/\r\n1. Find Accessibility Insights for Web and select **Details**.\r\n1. Turn on the **Allow in Incognito** toggle.\r\n\r\n## Which browsers are compatible with Accessibility Insights for Web?\r\n\r\nAccessibility Insights for Web is currently compatible with:\r\n\r\n- Chrome\r\n- [Edge](https://www.microsoft.com/en-us/edge)\r\n\r\n## What type of issues can be found with FastPass in Accessibility Insights for Web?\r\n\r\nFastPass has two steps:\r\n\r\n1. Automated checks: this checks are powered by [axe-core](https://www.npmjs.com/package/axe-core) and can detect **some** common accessibility problems, such as missing or invalid properties. However, most accessibility problems can be identified only through manual testing and Automated checks only provide **partial** coverage to WCAG success criteria.\r\n1. Tab stops: an assisted manual test that helps you find **some** accessibility issues in keyboard navigation. In some cases, this test will also automatically detect potential keyboard access issues.\r\n\r\n## Can automated checks in Accessibility Insights for Web detect issues in content that's currently hidden?\r\n\r\nSome automated checks run only on visible content; they ignore content marked with `display: none` or `visibility: hidden`. To fully test content that's hidden by default – such as combo box options, dialog boxes, and menu options – you'll need to reveal the content before running automated checks:\r\n\r\n1. Use your mouse or keyboard to reveal the hidden content.\r\n1. Run the automated checks using the keyboard shortcut. The default shortcut is\r\n    - Alt+Shift+1 in Windows\r\n    - Option+Shift+1 in macOS\r\n\r\n## How do I run automated checks on revealed content that disappears when focus moves away?\r\n\r\nIf revealed content – such as combo box options, dialog boxes, and menu options – disappears when focus moves away, you can run automated checks using the keyboard shortcut provided in **Ad hoc tools**:\r\n\r\n1. Use your mouse or keyboard to reveal the hidden content.\r\n1. Use the keyboard shortcut to run automated checks.\r\n    - The default shortcut in Windows is Alt+Shift+1.\r\n    - The default shortcut in macOS is Option+Shift+1.\r\n1. View the results:\r\n    1. To view results in the target page, click an error icon (red rectangle with white exclamation point).\r\n    1. To view results in a list:\r\n    - Open the Accessibility Insights for Web extension.\r\n    - In the Launch pad, select **Ad hoc tools**.\r\n    - Under **Automated checks**, select **List view and filtering**. Results will open in a new browser window.\r\n\r\n## Are automated checks compatible with shadow DOM?\r\n\r\nAutomated checks are based on axe-core, which supports shadow DOM in _open_ mode but **not** in _closed_ mode.\r\n\r\nBecause closed mode prevents JavaScript from accessing an element's internal DOM, automated checks can't detect issues on components within a closed shadow DOM. Closed mode can also lead to false failure reports. For example, if an interactive component outside a shadow DOM is labelled by an element inside a closed shadow DOM, automated checks will report a missing label.\r\n\r\nShadow DOM in closed mode is sometimes implemented as an encapsulation measure. If you find that closed shadow DOM is interfering with automated checks, you might consider another approach to encapsulation.\r\n\r\n## Can I aggregate test results from multiple pages?\r\n\r\nTest results – automated or manual – can't be aggregated across multiple pages or page states.\r\n\r\n## Is there a way to include automated tests in engineering pipeline?\r\n\r\nIf your project uses an end-to-end browser automation test framework, you can refer to samples available at [axe-pipelines-samples](https://github.com/microsoft/axe-pipelines-samples) to integrate automated accessibility tests in Azure pipelines. The samples use the same scanning engine, [axe-core](https://github.com/dequelabs/axe-core), that is used in Accessibility Insights for Web and demonstrate how automated accessibility tests are implemented in our own project pipeline.\r\n\r\n## Why does Accessibility Insights for Web ask for additional permissions when it detects iframes?\r\n\r\nThe permissions the Accessibility Insights for Web extension requests have been modified. Previously, the extension had more powerful permissions that allowed it to scan all websites; to provide additional security and privacy options to its users, as well as streamline the review process for publishing updates to the extension, permissions are now only requested for the active page Accessibility Insights is invoked from.\r\n\r\nSince the permissions are only for that active page, if you have cross-origin iframes (for example, you are scanning foo.com and inside foo.com you have an iframe that points to bar.com) Accessibility Insights for Web will not have permissions for the iframe's host and will not be able to scan it.\r\n\r\nBy providing these additional permissions, you are ensuring your whole page, including the iframe, is being scanned.\r\n\r\nYou can manage these permissions by visiting the extensions page for your browser and selecting \"Details' for the Accessibility Insights for Web extension.\r\n\r\n## What is the JSON schema used in assessment?\r\n\r\nThe JSON schema, as well as a full example output, is available in the [Accessibility Insights for Web release Assets](https://aka.ms/accessibility-insights-for-web/JsonSchema).\r\n\r\nEach requirement in assessment can have 3 states: _pass, fail_ and _incomplete_:\r\n\r\n- If at least one requirement failed, the S.C is marked as _fail_.\r\n- If at least one requirement is incomplete and there are no failed requirements, the S.C is marked as _incomplete_.\r\n- If all the requirements pass, the S.C is marked as _pass_.\r\n\r\n## Where does Accessibility Insights for Web store scan data?\r\n\r\nIn general, Accessibility Insights for Web only stores complete scan data locally in the browser and does not upload results to any sort of external host.\r\n\r\nIf you chose to allow usage telemetry when you started the extension for the first time, it will upload some anonymous usage data. This includes information about how many violations of each type were found, but it does not include any information which would identify the user running the scan or the site the scan was run on - in particular, it does not include the URL or title of the site being scanned, nor the Path, Snippet or properties listed in the results in FastPass or Assessment. Telemetry is only sent if you opted in, and you can [disable telemetry](https://accessibilityinsights.io/docs/web/reference/telemetry/#disable-telemetry) at any time from the **Settings** panel.\r\n\r\n## Why is the target page in the command bar of the Accessibility Insights for Web page a link?\r\n\r\nThis link is associated to the page you are testing (aka the target page); you can use this link to quickly return to it.\r\n\r\n## Can I use Accessibility Insights for Web to test a browser extension?\r\n\r\nAccessibility Insights for Web cannot test other browser extensions directly because web browsers do not allow extensions to run scripts on other extensions' pages.\r\n\r\nHowever, it _is_ possible to run the \"Automated checks\" part of a FastPass or Assessment against a browser extension using an automated test. We recommend using [Playwright](https://playwright.dev/) for this. Some resources to learn more about this include:\r\n\r\n- [Playwright's documentation on testing browser extensions](https://playwright.dev/docs/chrome-extensions)\r\n- [Playwright's documentation on accessibility testing](https://playwright.dev/docs/accessibility-testing)\r\n- [Example project in the axe-pipelines-sample GitHub repository demonstrating accessibility testing with Playwright](https://github.com/microsoft/axe-pipelines-samples/tree/main/typescript-playwright-sample)\r\n\r\n## Do you have more information or examples about the rules used by Accessibility Insights for Web?\r\n\r\nMore information about the specific rules can be found at [Info and Examples for Accessibility Insights for Web](https://www.accessibilityinsights.io/info-examples/web/)\r\n\r\n## Can I run Accessibility Insights for Web automatically in a Continuous Integration environment?\r\n\r\nMost of the tests in Accessibility Insights for Web require some human analysis, so it isn't possible to completely automate a FastPass or an Assessment.\r\n\r\nHowever, it _is_ possible to run the \"Automated checks\" part of a FastPass or Assessment in an automated test. You can find working examples of this in the [axe-pipelines-samples GitHub repository](https://github.com/microsoft/axe-pipelines-samples).\r\n"},{"title":"/docs/web/reference/help","description":"Help for Accessibility Insights for Web","content":"\r\nThank you for using Accessibility Insights for Web.\r\n\r\n## Get Started\r\n\r\nGet started by reading our tutorials:\r\n\r\n-   [FastPass](/docs/web/getstarted/fastpass/)\r\n-   [Issue filing](/docs/web/getstarted/issuefiling/)\r\n-   [Assessment](/docs/web/getstarted/assessment/)\r\n\r\n## Keyboard Shortcuts\r\n\r\nIncrease your productivity with Accessibility Insights for Web's keyboard shortcuts.\r\n\r\n-   [Keyboard shortcuts](/docs/web/reference/keyboard/)\r\n\r\n## Privacy\r\n\r\nWith your consent, Accessibility Insights for Web collects anonymized usage data and crash report information. You may opt out at any time by disabling it:\r\n\r\n-   [How do I disable telemetry?](/docs/web/reference/telemetry/)\r\n\r\n## Contributing\r\n\r\nAccessibility Insights for Web is open source on GitHub:\r\n\r\n-   [Go to the GitHub repository for Web](https://github.com/microsoft/accessibility-insights-web)\r\n\r\n## For additional help\r\n\r\n| Help topic               | Instructions                                                                          |\r\n| ------------------------ | ------------------------------------------------------------------------------------- |\r\n| Ask a question           | [Ask a question in Stack Overflow](https://go.microsoft.com/fwlink/?linkid=2077941)   |\r\n| Search known issues      | [Search GitHub issues](https://go.microsoft.com/fwlink/?linkid=2080529)               |\r\n| Report an issue          | [Create a bug report in GitHub](https://go.microsoft.com/fwlink/?linkid=2080273)      |\r\n| Search feature requests  | [Search GitHub feature requests](https://go.microsoft.com/fwlink/?linkid=2080524)     |\r\n| Submit a feature request | [Create a feature request in GitHub](https://go.microsoft.com/fwlink/?linkid=2080273) |\r\n"},{"title":"/docs/web/reference/keyboard","description":"Keyboard Shortcuts for Accessibility Insights for Web","content":"\r\nThis page provides tips for people who use a keyboard to operate Accessibility Insights for Web.\r\n\r\n## Keyboard shortcuts\r\n\r\nKeyboard shortcuts allow you to run automated checks and turn on visual helpers without moving input focus away from the target page.\r\n\r\n### Default keyboard shortcuts\r\n\r\nNote: Chrome allows only six keyboard shortcuts per extension.\r\n\r\n| Windows Key  | macOS Key    | Command                                      |\r\n| ------------ | ------------ | -------------------------------------------- |\r\n| Alt+Shift+K  | Option+Shift+K    | Activate the extension                       |\r\n| Alt+Shift+1  | Option+Shift+1    | Show or hide Automated checks                |\r\n| Alt+Shift+2  | Option+Shift+2    | Show or hide the visual helper for landmarks |\r\n| Alt+Shift+3  | Option+Shift+3    | Show or hide the visual helper for headings  |\r\n| (unassigned) | (unassigned) | Show or hide the visual helper for tab stops |\r\n| (unassigned) | (unassigned) | Show or hide the visual helper for color     |\r\n\r\n## Custom keyboard shortcuts\r\n\r\nTo customize keyboard shortcuts\r\n\r\n1.  Open Accessibility Insights for Web:\r\n\r\n    -   Select the extension icon.\r\n\r\n    or\r\n\r\n    -   Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    -   Use these keyboard commands:\r\n\r\n        -   Windows or Linux:\r\n\r\n            1. Press Shift+Alt+T or F10 to set focus on the browser's tool bar.\r\n            1. Press the Left Arrow key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n        -   macOS:\r\n\r\n            1. Press ⌘+L to set focus on the browser's tool bar.\r\n            1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch Pad**.\r\n\r\n1.  In the menu \u003cGlobalNavButtonIcon /\u003e, select **Keyboard shortcuts**.\r\n1.  In the Shortcuts page, select the keyboard shortcut you want to customize and enter the new shortcut.\r\n\r\n## Landmarks\r\n\r\nLandmarks programmatically identify the major sections of a page. People who use screen readers and other assistive technologies use landmarks to find relevant content.\r\n\r\nAccessibility Insights for Web provides the following landmarks.\r\n\r\n### Launch pad\r\n\r\n| Landmark      | Contents                                                                              |\r\n| ------------- | ------------------------------------------------------------------------------------- |\r\n| Banner        | **Manage settings** button, **Help menu** button, link to 3-minute video introduction |\r\n| Main          | Links to **FastPass**, **Assessment**, **Ad hoc tools**                               |\r\n| Complementary | Software version numbers, link to information about axe-core                          |\r\n\r\n### FastPass and Assessment pages\r\n\r\n| Landmark    | Contents                                                                   |\r\n| ----------- | -------------------------------------------------------------------------- |\r\n| Banner      | **Manage settings** button                                                 |\r\n| Activity    | **Activity** listbox for choosing **FastPass** or **Assessment**           |\r\n| Navigation  | Links to tests included in the selected activity                           |\r\n| Command bar | **Target page** link, **Export result** button, **Start over** menu button |\r\n| Main        | Content related to the selected test                                       |\r\n\r\n### Ad hoc tools\r\n\r\n| Landmark   | Contents                                                                                                                   |\r\n| ---------- | -------------------------------------------------------------------------------------------------------------------------- |\r\n| Banner     | **Manage settings** button, **Help menu** button                                                                           |\r\n| Main       | Toggles for automated checks and visual helpers, link to detailed automated check results, links to visual helper guidance |\r\n| Navigation | Link to the **Launch pad**                                                                                                 |\r\n"},{"title":"/docs/web/reference/releases","description":"Release Notes for Accessibility Insights for Web","content":"\r\nCheck out our release notes in our [GitHub repository](https://aka.ms/accessibility-insights-web/release-notes)\r\n\r\n_Release notes for Accessibility Insights for Web are titled \"Accessibility Insights for Web: v#.#.#\" and use the git tag \"web@#.#.#\"_\r\n"},{"title":"/docs/web/reference/telemetry","description":"Telemetry in Accessibility Insights for Web","content":"\r\nWith your consent, Accessibility Insights for Web collects anonymized usage data and crash report data in order to improve our tools. For more details, [read about Accessibility Insights and telemetry](/docs/general/telemetry/);\r\n\r\n## Disable telemetry\r\n\r\n1.  Open Accessibility Insights for Web:\r\n\r\n    -   Select the extension icon.\r\n\r\n    or\r\n\r\n    -   Press Alt+Shift+K (Option+Shift+K for macOS) ([Customize this keyboard shortcut](/docs/web/reference/keyboard/)).\r\n\r\n    or\r\n\r\n    -   Use these keyboard commands:\r\n\r\n        -   Windows or Linux:\r\n\r\n            1. Press Shift+Alt+T or F10 to set focus on the browser's tool bar.\r\n            1. Press the Left Arrow key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n        -   macOS:\r\n\r\n            1. Press ⌘+L to set focus on the browser's tool bar.\r\n            1. Press the Tab key to set focus on the Accessibility Insights for Web extension.\r\n            1. Press the Space key to open the extension.\r\n\r\n    The Accessibility Insights for Web extension will open to the **Launch Pad**.\r\n\r\n1.  On the **Launch pad**, open **Manage Settings** \u003cSettingsIcon /\u003e and select **Settings** \u003cSettingsIcon /\u003e.\r\n1.  To disable telemetry, turn off the toggle under **Help improve Accessibility Insights for Web**. You can always enable it later by turning on the same toggle.\r\n"},{"title":"/docs/windows/getstarted/automatedchecks","description":"Automated checks in Accessibility Insights for Windows","content":"\r\n## What are automated checks?\r\n\r\nAutomated checks are a feature in Accessibility Insights for Windows that quickly checks an app for compliance with dozens of accessibility rules. It's easy to save the results to a file so you can share them with your team.\r\n\r\nYou can run automated checks on their own or as part of [FastPass](/docs/windows/getstarted/fastpass/), and you can [file issues](/docs/windows/getstarted/bugfiling/) directly from automated check failures.\r\n\r\n## Running automated checks\r\n\r\nYou can run automated checks on an entire app or on a selected element, and you can use a timer to run automated checks after a delay.\r\n\r\nHowever the checks are triggered, it is important to ensure that the application is in a \"steady state\" while being checked. Scan results may be inconclusive when checks are performed while the UI is in transition.\r\n\r\n### Running automated checks on an entire app\r\n\r\nRunning automated checks on an entire app is the quickest way to identify issues.\r\n\r\n1. In Accessibility Insights for Windows, go to the **Live Inspect** view.\r\n1. Under **What to select**, choose **Entire app**.\r\n1. Select an app, and then run automated checks on it: - Using a mouse: 1. Hover over the app. 1. Click the test icon that appears in the upper right corner of the app.\r\n   or - Using a keyboard: 1. Press **Alt+Tab** on your keyboard to move focus to the app. 1. Press **Shift+F8**. (You can customize this [keyboard shortcut](/docs/windows/reference/keyboard/).)\r\n\r\n![The app to be tested and Accessibility Insights for Windows are both open on the user's desktop. In the upper right corner of the app, the mouse pointer is hovering over the test icon.](/assets/windows/getstarted/automatedchecks/AutomatedChecks-01.jpg)\r\n\r\n1. Review the automated check results:\r\n    - A screenshot of the app appears, and all elements with failures are highlighted.\r\n    - Detailed results are shown in Accessibility Insights for Windows:\r\n        1. Failed rules are shown in a tree grid.\r\n            - Where applicable, failed framework rules are shown in a separate tree grid.\r\n        1. Each rule can be expanded to show its failure instances.\r\n        1. Each failure instance has a link and a **File issue** button.\r\n\r\n![A screenshot of the app shows all elements with failures highlighted. Accessibility Insights for Windows shows the accessibility check results. The first failed rule is expanded to show its two failure instances. The mouse pointer is hovering over the first failure instance's link.](/assets/windows/getstarted/automatedchecks/AutomatedChecks-02.jpg)\r\n\r\n1. Select a failure instance link to see details:\r\n    1. The selected element is highlighted in the screenshot.\r\n    1. In Accessibility Insights for Windows,\r\n        1. The selected element is displayed in the context of the UI Automation tree.\r\n        1. Rules failed by the element are listed. \r\n        1. How-to-fix instructions are provided for each rule.\r\n\r\n![The app screenshot shows a single highlighted element. Accessibility Insights for Windows shows the element in the UIA tree, lists the two rules failed by that element, and displays how-to-fix instructions for the first rule.](/assets/windows/getstarted/automatedchecks/AutomatedChecks-03.jpg)\r\n\r\n### Running automated checks on a selected UI element\r\n\r\nRunning automated checks on a selected UI element scopes the results to that element and its children. Scoped results make it easier to identify a specific problem, for example when filing a bug.\r\nYou can run automated checks on an element by selecting the element either (1) directly in the app or (2) in the UI Automation tree in Accessibility Insights for Windows.\r\n\r\n#### Selecting an element in the app\r\n\r\nSelecting an element directly in the app the quickest way to run automated checks on it.\r\n\r\n1. In Accessibility Insights for Windows, go to the **Live Inspect** view.\r\n1. Under **What to select**, choose **Element**.\r\n1. Select an element, and then run automated checks on it: - Using a mouse: 1. Hover over the element. 1. Click the test icon that appears in the upper right corner of the element.\r\n   or - Using a keyboard (element must be focusable): 1. Move focus to the element. 1. Press **Shift+F8.**\r\n\r\n#### Selecting an element in the UI Automation tree\r\n\r\nSelecting an element in the UI Automation tree allows you to run automated checks on an element that isn't visible in the app. Also, this method allows you to use a keyboard to run automated checks on an element that isn't focusable.\r\n\r\n1. In Accessibility Insights for Windows, go to the **Live Inspect** view.\r\n1. Under **What to select**, choose **Entire app**.\r\n1. Select an element, and then run automated checks on it. - Using a mouse: 1. Hover over the app until the test icon appears in its upper right corner. 1. In the UI Automation tree, click the element. 1. Click the **Test Element** button.\r\n   or - Using a keyboard: 1. Press **Alt+Tab** to move focus to the app. 1. Press **Shift+F9** to bring Accessibility Insights for Windows to the foreground. (You can customize this [keyboard shortcut](/docs/windows/reference/keyboard/).) 1. In the UI Automation tree, use the arrow keys or the Live Inspect keyboard shortcuts to move focus to the element. 1. Press **Shift+F8**, or **Tab** to the **Test Element** button and then press **Enter**.\r\n\r\n### Running automated checks with a timer\r\n\r\nAccessibility Insights for Windows has a built-in timer that allows you to run automated checks after a delay. This feature can be handy when testing a UI component in a transient state, such as a combo box with its options expanded.\r\n\r\n1. In the command bar, select **Timer**.\r\n1. In the popup that opens, enter the number of seconds you'll need to get the UI into the desired state. (The default is 5.)\r\n1. Start the timer by pressing the **Enter** key or clicking the popup.\r\n1. In your target app, get the UI into the state you want to test, then wait. Automated checks will run when the timer reaches 0.\r\n\r\n![The timer popup is open, and its delay is set to five seconds](/assets/windows/getstarted/automatedchecks/automated-checks-timer.png)\r\n\r\n## Saving automated check results\r\n\r\nSaving automated checks to a file allows you to share the results with your team. For example, you can attach the file to a bug, send it as an email attachment, or upload it into a file storage system.\r\n\r\n1. Run automated checks using one of the methods described above.\r\n1. Save the file:\r\n    - Using a mouse, click **Save**, or\r\n    - Using a keyboard, press **Ctrl+S**.\r\n1. In the **Save As** dialog, choose a name for your file, and then select **Save**. The automated checks will be saved to a file with the .a11ytest file name extension.\r\n\r\n![In the app screenshot, a single element is highlighted. In Accessibility Insights for Windows, the mouse pointer is hovering over the Save button.](/assets/windows/getstarted/automatedchecks/AutomatedChecks-04.jpg)\r\n\r\n## Viewing automated check results\r\n\r\nAnyone who has installed Accessibility Insights for Windows can view saved automated check results simply by opening the .a11ytest file. Accessibility Insights for Windows will open to the automated check results, and the app screenshot will open with failures highlighted.\r\n"},{"title":"/docs/windows/getstarted/bugfiling","description":"Issue filing in Accessibility Insights for Windows","content":"\r\nAccessibility Insights for Windows makes it easy to file issues directly from automated check failures.\r\n\r\n## How to file issues\r\n\r\n### Sign into your issue filing account\r\n\r\nOpen Accessibility Insights for Windows.\r\n\r\nAccessibility Insights will open to the **Live Inspect** view:\r\n\r\n![Screenshot showing the \"Live Inspect\" view in Accessibility Insights for Windows](/assets/windows/getstarted/bugfiling/SignIn-01.png)\r\n\r\n#### To sign in to Azure Boards\r\n\r\n1. Go to **Sign In**.\r\n\r\n    The **Settings** \u003e **Connection** tab will open, with two options for filing issue: **Azure Boards** or **GitHub**.\r\n\r\n    ![Screenshot showing the \"Settings\" view with the \"Connection\" tab open](/assets/windows/getstarted/bugfiling/SignIn-02.png)\r\n\r\n2. Select **Azure Boards**.\r\n\r\n    A text field and button will appear.\r\n\r\n    ![Screenshot showing the \"Enter desired Azure boards link\" text field and \"Connect Azure Boards account\" button](/assets/windows/getstarted/bugfiling/SignIn-03.png)\r\n\r\n3. Enter the URL for your Azure Boards account in the text field.\r\n\r\n    The **Connect Azure Boards account** button will become enabled.\r\n\r\n    ![Screenshot showing the \"Connect Azure Boards account\" button enabled](/assets/windows/getstarted/bugfiling/SignIn-04.png)\r\n\r\n4. Select the **Connect Azure Boards account** button.\r\n\r\n    A **Pick an account** dialog \\_might \\_open:\r\n\r\n    ![Screenshot showing the \"Pick an account\" dialog](/assets/windows/getstarted/bugfiling/SignIn-05.png)\r\n\r\n5. Select the account you want to use for filing issues.\r\n\r\n    Under **Select your Azure Boards team**, a list of teams associated with the selected account will appear:\r\n\r\n    ![Screenshot showing the list of teams associated with the selected account](/assets/windows/getstarted/bugfiling/SignIn-06.png)\r\n\r\n6. Select your team.\r\n\r\n    The **Save and close** button will become enabled:\r\n\r\n    ![Screenshot showing the team selected](/assets/windows/getstarted/bugfiling/SignIn-07.png)\r\n\r\n7. Select **Save and close**.\r\n\r\n    You'll return to the **Live Inspect** view:\r\n\r\n    ![Screenshot showing the \"Live Inspect\" view](/assets/windows/getstarted/bugfiling/SignIn-08.png)\r\n\r\n#### To sign in to GitHub\r\n\r\n1. Go to **Sign In**.\r\n\r\n    The **Settings** \u003e **Connection** tab will open, with two options for filing issues: **Azure Boards** or **GitHub**.\r\n\r\n    ![Screenshot showing the \"Settings\" view with the \"Connection\" tab open](/assets/windows/getstarted/bugfiling/SignIn-09.png)\r\n\r\n2. Select **GitHub**.\r\n\r\n    A text field will appear.\r\n\r\n    ![Screenshot showing the \"Enter desired GitHub repo link\" text field](/assets/windows/getstarted/bugfiling/SignIn-10.png)\r\n\r\n3. Enter the URL for your GitHub account.\r\n\r\n    The **Save and close** button will become enabled:\r\n\r\n    ![Screenshot showing the \"Save and close\" button enabled](/assets/windows/getstarted/bugfiling/SignIn-11.png)\r\n\r\n4. Select **Save and close**.\r\n\r\n    You'll return to the **Live Inspect** view:\r\n\r\n    ![Screenshot showing the \"Live Inspect\" view](/assets/windows/getstarted/bugfiling/SignIn-12.png)\r\n\r\n### Run automated checks\r\n\r\n1. Open the application you want to test (aka the target application).\r\n\r\n    ![Screenshot showing the target application and Accessibility Insights for Windows](/assets/windows/getstarted/bugfiling/AutomatedChecks-1.png)\r\n\r\n2. In the command bar, for **What to select**, choose **Entire app**.\r\n\r\n    ![Screenshot showing \"Entire app\" selected](/assets/windows/getstarted/bugfiling/AutomatedChecks-2.png)\r\n\r\n3. Start the automated checks:\r\n\r\n    - Use a mouse:\r\n        1. Hover your mouse over the target application window.\r\n        2. Click the test beaker icon that appears in the upper right corner.\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n        1. Press Alt+Tab to switch to the target application window.\r\n        2. Press Shift+F8.\r\n\r\n    A screenshot of the target app will open in a new window directly over the app, and individual failure instances will be highlighted in the screenshot. Failed rules and failure instances will also appear in Accessibility Insights for Windows in the **Automated Checks** tree grid.\r\n\r\n### File an issue\r\n\r\n1. In the **Automated Checks** tree grid, expand a rule:\r\n\r\n    - Use a mouse to click the rule.\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n        1. Press the Tab key to navigate to the **Automated checks** tree grid.\r\n        2. Press the Up and Down arrow keys to navigate to a rule.\r\n        3. Press the Right arrow key to expand the rule.\r\n\r\n    When a rule is expanded, its failure instances are revealed:\r\n\r\n    ![Screenshot showing the \"Automated Checks\" tree grid with one rule expanded](/assets/windows/getstarted/bugfiling/FileIssue-1.png)\r\n\r\n2. Select the **File issue** link associated with the failure instance you wish to file.\r\n\r\n    - Use a mouse to click the link.\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n        1. Press the Up and Down arrow keys to navigate to the failure instance.\r\n        2. Press the Right arrow key to navigate to the **File issue** link.\r\n        3. Press Enter to activate the link.\r\n\r\n    If you signed into Azure Boards, a **New Issues** dialog will open, with information about the failure automatically populated:\r\n\r\n    ![Screenshot showing a new issue in Azure Boards](/assets/windows/getstarted/bugfiling/FileIssue-2.png)\r\n\r\n    If you signed into GitHub, the issue will open in a new browser window:\r\n\r\n    ![Screenshot showing a new issue in GitHub](/assets/windows/getstarted/bugfiling/FileIssue-3.png)\r\n\r\n3. Modify the information as desired (optional) and then save or submit the issue.\r\n\r\n    When you save the issue, a screenshot and test file will be attached automatically.\r\n\r\n## Troubleshooting\r\n\r\n### How to install the WebView2 runtime\r\n\r\nFiling issues to Azure Boards requires the WebView2 runtime. This is preinstalled on some Windows computers; Accessibility Insights for Windows will display a dialog if the WebView2 runtime is not installed.\r\n\r\n1. To download and install the WebView2 runtime, navigate to the [Edge WebView2 download page](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section).\r\n\r\n2. Download the \"Evergreen Bootstrapper.\" Review the license terms.\r\n\r\n![Screenshot highlighting the 'Download' button for the Evergreen Bootstrapper](/assets/windows/getstarted/bugfiling/InstallWebView2Runtime.png)\r\n\r\n3. Run the Evergreen Bootstrapper.\r\n\r\n4. Restart Accessibility Insights for Windows.\r\n\r\nWhen the WebView2 runtime is installed, Accessibility Insights for Windows will be able to file issues to Azure Boards.\r\n"},{"title":"/docs/windows/getstarted/colorcontrast","description":"Color Contrast Analyzer in Accessibility Insights for Windows","content":"\r\n## What is the Color Contrast Analyzer?\r\n\r\nThe Color Contrast Analyzer is a feature in Accessibility Insights for Windows that helps developers investigate contrast ratios.\r\n\r\n**Contrast ratio** describes the relative brightness of foreground and background colors on a computer display. In general, higher contrast ratios make text and graphics easier to perceive and read. Black and white have the highest possible contrast ratio, 21:1. Identical colors have the lowest possible contrast ratio, 1:1. All other color combinations fall somewhere in between.\r\n\r\nYou can also watch a short video to [learn more about the Color Contrast Analyzer](https://www.youtube.com/watch?v=eEAYRBG4TOE).\r\n\r\n## Why contrast ratio matters\r\n\r\nEnsuring adequate contrast makes it easier for everyone to read text content, interpret graphical elements, identify UI components, and notice when those components change state. People with low vision often have difficulty reading text, identifying buttons that do not contrast with their background, or determining the state of UI components. The problems can be exacerbated if the person has a color vision deficiency that lowers the perceived contrast even further.\r\n\r\n## Minimum contrast requirements\r\n\r\nAccording to [WCAG 2.0 AA Success Criterion 1.4.3](https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast):\r\n\r\n-   Any text with a contrast of 4.5 or greater passes.\r\n-   Large text (18pt or 14pt bold) with a contrast of 3.0 or greater passes.\r\n-   Any text with a contrast below 3.0 fails.\r\n\r\nAccording to [WCAG 2.1 AA Success Criterion 1.4.11](https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html):\r\n\r\n-   Any UI component or meaningful graphical element with a contrast ratio of 3.0 or greater passes.\r\n-   Any active (non-disabled) UI component or meaningful graphical element with a contrast ratio below 3.0 fails.\r\n\r\nNOTE: Do not round up contrast ratios. 4.499 does not meet the threshold of 4.5 for regular text.\r\n\r\n## How to test contrast ratio\r\n\r\n### Identify elements to test\r\n\r\n#### Text\r\n\r\nExamine the app you want to test and ​identify any instances of meaningful text that might have a low background-to-foreground color contrast.\r\n\r\nYou do not need to test any text that is:\r\n\r\n-   Part of an inactive (disabled) component\r\n-   Purely decorative\r\n-   Intended to be hidden from users\r\n-   Part of a flag, logo or brand name\r\n\r\n#### UI elements\r\n\r\nExamine the app to identify any UI components (controls) that might have:\r\n\r\n-   Low contrast against the background\r\n-   Low contrast between different states (normal, focused, mouseover, selected)\r\n\r\nYou do not need to test:\r\n\r\n-   Inactive UI components\r\n-   UI components whose appearance is determined by the browser and not modified by the author\r\n\r\n#### Graphical elements\r\n\r\nExamine the app to identify any graphical objects (such as icons, charts, diagrams, and illustrations) that contain meaningful elements that might have low contrast against the background.\r\n\r\nYou do not need to test any graphical object where:\r\n\r\n-   A particular presentation is [essential](https://www.w3.org/TR/WCAG21/#dfn-essential), and presenting it with sufficient contrast would undermine its meaning. For example, logos, photos real life scenes, illustrations using realistic colors, and screenshots are exempt from the contrast requirement.\r\n-   The information conveyed graphically is also conveyed through visible text.\r\n-   The graphical object is purely decorative.\r\n\r\n### Launch the Color Contrast Analyzer\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. In the Navigation bar, select **Contrast** \u003cColorIcon /\u003e. (You can also press Ctrl+R).\r\n\r\n### Auto detect contrast ratio\r\n\r\nAuto detect makes it easy to test the foreground/background contrast ratio of text elements. Auto detect is not recommended for use on icons or other graphical elements.\r\n\r\n1. Turn on the toggle for **Auto detect contrast ratio**.\r\n1. To auto detect a text element's contrast ratio, use your mouse to hover over the text (or set keyboard focus on the element).\r\n    - A tooltip will display the detected contrast ratio and confidence level.\r\n    - Accessibility Insights for Windows will display the same information and also indicate whether the contrast ratio passes the relevant WCAG 2.1 AA success criteria. (You can bring Accessibility Insights for Windows to the foreground by pressing Shift+F9).\r\n1. If Accessibility Insights for Windows is unable to detect the colors, or if the confidence level is **low** or **mid**, you must test the contrast ratio manually.\r\n\r\n![Screenshot showing the target app and Accessibility Insights for Windows. The mouse is hovering over text that says, \"Wildlife Manager.\" A tooltip says \"Ratio: 21:1, Confidence: High.\" Accessibility Insights for Windows indicates that the ratio passes all of the WCAG success criteria for contrast.](/assets/windows/getstarted/colorcontrast/autodetect_text.png)\r\n\r\n### Manually check contrast ratio\r\n\r\nBecause auto detect uses a heuristic intended specifically for text, the contrast ratio of UI components and graphical elements must be tested manually. Also, when auto detect doesn't work on text, the contrast ratio must be tested manually.\r\n\r\n1. Turn off the toggle for **Auto detect contrast ratio**.\r\n\r\n#### Text\r\n\r\n1. Under Color 1, select the foreground color of the text (typically a horizontal or vertical portion of a character). To select a color, you can:\r\n\r\n    - Select the first Eyedropper, and select the pixel that accurately represents the text's color. You can also use the arrow keys to focus on the pixel and press the Enter key.\r\n\r\n    OR\r\n\r\n    - Select the color using the Color Picker box.\r\n\r\n    OR\r\n\r\n    - If you know the text's hex color code, enter it in the **Hex Code** box.\r\n\r\n1. Under Color 2, select the background color. If the background is not a single color, such as a gradient or image, select the pixel that is most similar to the foreground color.\r\n1. Examine Accessibility Insights for Windows to determine whether the contrast ratio passes the relevant WCAG 2.1 AA success criteria.\r\n\r\n![Screenshot showing the target app and Accessibility Insights for Windows. The mouse is hovering over the background of button that says \"Close.\" Accessibility Insights for Windows indicates the color of the text foreground and background, and indicates that the contrast ratio fails the WCAG success criteria for regular or large text.](/assets/windows/getstarted/colorcontrast/select_color.png)\r\n\r\n#### UI Components\r\n\r\n1. Interact with each UI component in the target app to determine which of the following states it can adopt:\r\n    1. Normal\r\n    1. Focused\r\n    1. Mouseover\r\n    1. Selected\r\n1. Identify any visual (non-text) indicators that communicate:\r\n    1. The boundary of the component's clickable area\r\n    1. The component's current state\r\n1. Test the component's foreground/background contrast in each supported state: 1. Under Color 1, select the color of the visual indicator. 1. Under Color 2, select the adjacent (background) color.\r\n   To select colors using the Eyedropper, it might be necessary to take a screenshot of the UI component in its desired state (for example, using the Snip \u0026 Sketch tool) and then select colors from the screenshot. Alternatively, you might be able to get the hex color from the code.\r\n1. Examine Accessibility Insights for Windows to determine whether the contrast ratio passes the WCAG 2.1 AA Success Criterion for graphical objects and UI components (at least 3:1).\r\n   ![Screenshot showing the target app, a screenshot in the Snip \u0026 Sketch tool, and Accessibility Insights for Windows. The mouse is hovering over the blue border of a selected list item in the screenshot. Accessibility Insights for Windows indicates that the contrast ratio between Color 1 (the border color of the unselected list item) and Color 2 (the border color of the selected list item) fails the WCAG Success Criterion for graphical objects and UI components.](/assets/windows/getstarted/colorcontrast/select_color.png)\r\n\r\n#### Graphical Objects\r\n\r\n1. For each graphic, identify the parts that are necessary for the graphic to be understood.\r\n1. Test the foreground/background contrast of each necessary state. 1. Under Color 1, select the foreground color. 1. Under Color 2, select the adjacent (background) color.  \r\n   If the foreground or background includes multiple colors or a gradient, select colors with the least apparent contrast.\r\n1. Examine Accessibility Insights for Windows to determine whether the contrast ratio passes the WCAG 2.1 AA Success Criterion for graphical objects and UI components (at least 3:1).\r\n   ![Screenshot showing the target app and Accessibility Insights for Windows. The mouse is hovering over a segment of a pie chart. Accessibility Insights for Windows indicates that the contrast ratio between the color of the segment (medium blue) and its background (white) passes the WCAG success criterion for graphical objects and UI components.](/assets/windows/getstarted/colorcontrast/graphic.png)\r\n"},{"title":"/docs/windows/getstarted/eventmonitoring","description":"Event monitoring in Accessibility Insights for Windows","content":"\r\n## What is event monitoring?\r\n\r\nEvent monitoring is a feature in Accessibility Insights for Windows that enables you to easily verify that a UI element in a Windows app:\r\n\r\n-   Responds as expected to user input.\r\n-   Generates the expected events.\r\n\r\n## How to use Inspect\r\n\r\n### Get ready to inspect\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. If you are not already in **Live Inspect** mode, select **Inspect** in the main navigation bar.\r\n1. In the command bar, for **What to select**, choose **Element**.\r\n1. Open the application you want to test (aka the target application).\r\n\r\n### Select an element\r\n\r\n1. Select the UI element you wish to inspect:\r\n\r\n    - Use your mouse to hover over the element.\r\n\r\n    or\r\n\r\n    - Use your keyboard to set focus on the element, then press **Shift+F9** to switch back to Accessibility Insights.\r\n\r\n    In the target application, the selected element will be visually highlighted. In Accessibility Insights for Windows, in the **Details** tab, the element's control type and accessible name will be prominently displayed, followed by its **Properties** and supported **Patterns** (if any).\r\n\r\n    ![Target application with focused element visually highlighted element next to Accessibility Insights for Windows displaying the element's UI Automation properties](/assets/windows/getstarted/eventmonitoring/1_Select_an_element.png)\r\n\r\n1. Pause selection (optional):\r\n    1. When you have selected the element you wish to inspect, select **Pause UIA Tree** \u003cPauseIcon /\u003e in the command bar.\r\n    1. When you are ready to inspect a different element, select **Resume UIA Tree** \u003cPlayIcon /\u003e in the command bar.\r\n\r\n### Verify that the element responds correctly to user input\r\n\r\n1. In the **Details** tab, in the **Patterns** section, select **Actions** for the first pattern.\r\n\r\n    A dialog will open, with a tab for each action supported by the pattern. In this example, the pattern (SelectionPattern) has only one action (GetSelection), so the dialog has only one tab.\r\n\r\n    ![SelectionPattern Actions dialog opened.](/assets/windows/getstarted/eventmonitoring/2_Pattern_actions_start.png)\r\n\r\n1. In each tab:\r\n\r\n    1. Make sure that the selected element is in an appropriate state to perform the action.\r\n    1. Where needed, provide an appropriate value for the action.\r\n    1. Run the action.\r\n    1. Verify that the action succeeded.\r\n\r\n    The dialog will update if the action succeeds. In this example, the GetSelection action returned the selected UI Element and a list of its properties.\r\n\r\n    ![SelectionPattern Actions dialog after running the GetSelection action.](/assets/windows/getstarted/eventmonitoring/3_Pattern_actions_end.png)\r\n\r\n1. Repeat steps 1 and 2 for each pattern listed in the **Patterns** section.\r\n\r\n### Verify that the element generates expected events\r\n\r\n1. Learn about the required events for the element's [control type](https://docs.microsoft.com/en-us/windows/desktop/winauto/uiauto-supportinguiautocontroltypes).\r\n\r\n1. Find the selected element in the **UIA Tree**, and select **More options** \u003cMoreIcon /\u003e \u003e **Listen to Events**.\r\n\r\n    A new **Events** view will open in Accessibility Insights for Windows. The view includes an **Events** table and two tabs, **Details** and **Configuration.** By default, the **Events** table is empty, and the **Configuration** tab is open.\r\n\r\n    ![Events view with the Events table empty and the Configuration tab open.](/assets/windows/getstarted/eventmonitoring/4_Event_listener_start.png)\r\n\r\n1. Select the events you wish to record.\r\n\r\n    By default, expected events based on the control type are recorded.\r\n\r\n    If the type of event you wish to monitor is not listed, you can record any supported UI Automation event type by expanding \"My Events\" in the tree view and opening the \"Edit My Events...\" node contained within.\r\n\r\n1. Start recording.\r\n\r\n    The **Details** tab will open automatically, and new events will appear in the **Events** table.\r\n\r\n    ![Events view with the Details tab open.](/assets/windows/getstarted/eventmonitoring/5_Event_listener_recording.png)\r\n\r\n1. Interact with the element using your mouse or keyboard.\r\n\r\n1. Verify that the element generates the required events.\r\n\r\n    Events generated by the selected element will be added to the **Events** table. In this example, selecting an item in the **Species** list (in the target application) generated a series of focus change events.\r\n\r\n    ![New events recorded in the Events table.](/assets/windows/getstarted/eventmonitoring/6_Event_listener_events.png)\r\n"},{"title":"/docs/windows/getstarted/fastpass","description":"FastPass in Accessibility Insights for Windows","content":"\r\n## What is FastPass?\r\n\r\nFastPass is a lightweight, _two-step_ process that helps developers identify common, high-impact accessibility issues in less than five minutes.\r\n\r\n1. **Automated checks** - the tool automatically checks for compliance with dozens of accessibility rules.\r\n1. **Manual test for tab stops** - the tool provides clear instructions and a visual helper that makes it easy to identify critical accessibility issues related to keyboard access, such as missing tab stops, keyboard traps, and incorrect tab order.\r\n\r\nWe recommend developers run a FastPass before every check-in of UI code.\r\n\r\nNote: Completing a FastPass requires you to use standard keyboard commands and to visually identify interactive interface elements.\r\n\r\n## How to complete a FastPass\r\n\r\n### Get ready to test\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. In the command bar, for **What to select**, choose **Entire app**.\r\n1. Open the application you want to test (aka the target application).\r\n\r\n![Screenshot showing the target application and Accessibility Insights for Windows](/assets/windows/getstarted/fastpass/1_Launch.png)\r\n\r\n### Complete the automated checks\r\n\r\n1. Run the automated checks:\r\n\r\n    - Hover your mouse over the target application window, then click the test beaker icon that appears in the upper right corner.\r\n\r\n    or\r\n\r\n    - Press Alt+Tab to switch to the target application window, then press Shift+F8.\r\n\r\n    A screenshot of the app will open in a new window directly over the app, and individual failure instances will be highlighted in the screenshot. Failed rules and failure instances will also appear in Accessibility Insights for Windows in a tree grid. Where applicable, Framework specific failed rules and failure instances will appear in a separate tree grid.\r\n\r\n    ![Screenshot showing failures highlighted in the target application and listed in Accessibility Insights for Windows](/assets/windows/getstarted/fastpass/2_Automated_checks_start.png)\r\n\r\n1. Review failure details:\r\n\r\n    - Click a failure icon (white exclamation on red background) in the application screenshot.\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n\r\n        1. Press the Tab key to navigate to the **Automated checks** tree grid.\r\n        1. Press the Up and Down arrow keys to navigate to a rule.\r\n        1. Press the Right arrow key to expand the rule.\r\n        1. Press the Right arrow key to navigate to the **Element path** link.\r\n        1. Press the Space or Enter key to activate the link.\r\n\r\n    A new view will open in Accessibility Insights for Windows. The view includes the **UIA Tree** and a set of tabs: **Details** and **How to fix**.\r\n\r\n    The **How to fix** tab is selected by default. It's divided into two regions:\r\n\r\n    - **Test results** contains a selectable list of rules failed by the element selected in the **UIA Tree**. Framework specific list of rules will be displayed in a separate table below the test results.\r\n    - **Fix the following** contains instructions for fixing the failure selected under **Test results**.\r\n\r\n    ![Screenshot showing failure details in Accessibility Insights for Windows](/assets/windows/getstarted/fastpass/3_Automated_checks_end.png)\r\n\r\n1. Review failure details for a different instance:\r\n\r\n    - To select an element in the **UIA Tree**:\r\n\r\n        - Click a failing element in the **UIA Tree**. (You might need to expand a node by clicking its arrow icon.)\r\n\r\n        or\r\n\r\n        - Use these keyboard commands:\r\n\r\n            1. Press the Tab key to navigate to the **UIA Tree**.\r\n            1. Press the Up and Down arrow keys to select a failing element. (If needed, press the Right arrow key to expand a node.)\r\n\r\n    or\r\n\r\n    - To return to the Automated Checks tree grid:\r\n\r\n        - Click **Tests** in the breadcrumb or in the main navigation bar.\r\n\r\n        or\r\n\r\n        - Press Ctrl+T.\r\n\r\n1. If you're a developer, we recommend fixing the automated check failures before proceeding to the next part of the FastPass.\r\n\r\n### Complete the manual test for tab stops\r\n\r\n1. Be sure you are in the **Tests** view.\r\n1. Go to the **Tab stops** test:\r\n\r\n    - Click **Tab Stops** in the navigation pane.\r\n\r\n    or\r\n\r\n    - Use these keyboard commands:\r\n\r\n        1. Press Tab until you reach the **Automated checks** tab.\r\n        1. Use the Down arrow key to select the **Tab stops** tab.\r\n\r\n    ![Screenshot showing the Tab Stops test in Accessibility Insights for Windows](/assets/windows/getstarted/fastpass/4_Tab_stops_test.png)\r\n\r\n1. Make sure your target app is in the state you want to test.\r\n1. Start recording tab stops:\r\n\r\n    - Click the **Record tab stops** toggle.\r\n\r\n    or\r\n\r\n    - Press Shift+F7.\r\n\r\n    Input focus will move automatically to the target application.\r\n\r\n    ![Screenshot showing the Tab Stops test with tab stop recording enabled](/assets/windows/getstarted/fastpass/5_Tab_stops_start.png)\r\n\r\n1. Use standard keyboard commands to move input focus through all the interactive elements in the page.\r\n\r\n    - Use Tab and Shift+Tab to navigate between controls.\r\n    - Use the arrow keys to navigate between the focusable elements within a composite control, such as the items in a menu.\r\n\r\n    In the target app, numbered circles will appear on elements that receive input focus. A list of those elements will also appear in a grid in Accessibility Insights for Windows.\r\n\r\n    ![Screenshot showing tab stops highlighted and numbered in the target application](/assets/windows/getstarted/fastpass/6_Tab_stops_end.png)\r\n\r\n1. As you navigate to each element, look for these accessibility problems:\r\n\r\n    - An interactive element can't be reached using the Tab or arrow keys.\r\n    - An interactive element \"traps\" input focus and prevents navigating away.\r\n    - An interactive element doesn't give a visible indication when it has input focus.\r\n    - The focus order is inconsistent with the logical order that's communicated visually.\r\n    - Input focus moves unexpectedly without the user initiating it.\r\n\r\n1. Stop recording when you have navigated to every element within your test scope.\r\n\r\nWhen you've completed the tab stops test, your FastPass is complete.\r\n"},{"title":"/docs/windows/getstarted/inspect","description":"Inspect in Accessibility Insights for Windows","content":"\r\n## What is Inspect?\r\n\r\nInspect is a feature in Accessibility Insights for Windows that enables you to easily verify that a UI element in a Windows app:\r\n\r\n-   Has the expected UI Automation properties.\r\n-   Supports the expected control patterns.\r\n\r\n## How to use Inspect\r\n\r\n### Get ready to inspect\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. If you are not already in **Live Inspect** mode, select **Inspect** in the main navigation bar.\r\n1. In the command bar, for **What to select**, choose **Element**.\r\n1. Open the application you want to test (aka the target application).\r\n\r\n### Select an element\r\n\r\n1. Select the UI element you wish to inspect:\r\n\r\n    - Use your mouse to hover over the element.\r\n      or\r\n    - Use your keyboard to move the input focus to the element.\r\n\r\n    In the target application, the selected element will be visually highlighted. In Accessibility Insights for Windows, in the **Details** tab, the element's control type and accessible name will be prominently displayed, followed by its **Properties** and supported **Patterns** (if any).\r\n\r\n    ![target application and Accessibility Insights for Windows](/assets/windows/getstarted/inspect/1_Select_an_element.png)\r\n\r\n1. Pause selection (optional):\r\n\r\n    1. When you have selected the element you wish to inspect, select **Pause UIA Tree** \u003cPauseIcon /\u003e in the command bar.\r\n    1. When you are ready to inspect a different element, select **Resume UIA Tree** \u003cPlayIcon /\u003e in the command bar.\r\n\r\n### Verify that the element has the expected UI Automation properties\r\n\r\n1. Learn about the expected properties for the element's [control type](https://docs.microsoft.com/en-us/windows/desktop/winauto/uiauto-supportinguiautocontroltypes).\r\n\r\n1. In the **Details** tab, in the **Properties** section, examine the element's UI Automation properties.\r\n\r\n    - Use the default view to see basic UIA properties.\r\n\r\n    or\r\n\r\n    - Choose **UIA Tree Properties Settings** \u003e **Include all properties that have values**.\r\n\r\n    or\r\n\r\n    - Choose **UIA Tree Properties Settings** \u003e **Configure properties to always show**.\r\n\r\n1. Verify that the element has the expected properties.\r\n\r\n### Verify that the element supports the expected control patterns\r\n\r\n1. Learn about the allowed and required control patterns for the element's [control type](https://docs.microsoft.com/en-us/windows/desktop/winauto/uiauto-supportinguiautocontroltypes).\r\n\r\n1. In the **Details** tab, in the **Patterns** section, examine the patterns supported by the element.\r\n\r\n1. Verify that the element supports all of the required patterns.\r\n\r\n### Customize your Inspect experience (optional)\r\n\r\n1. Choose **Change settings** in the main navigation bar.\r\n\r\n    A **Settings** view will open to the **Application** tab.\r\n\r\n    ![Settings view with the Application tab open.](/assets/windows/getstarted/inspect/7_Settings.png)\r\n\r\n1. Under **Selection type**, choose which selection mode(s) to enable.\r\n\r\n1. Under **Other options**, choose a highlighter mode.\r\n"},{"title":"/docs/windows/getstarted/setup","description":"Setting up Accessibility Insights for Windows","content":"\r\nThe following steps will prepare you to use Accessibility Insights for Windows on a Windows computer.\r\n\r\n## Installing Accessibility Insights for Windows\r\n\r\n### Using the setup wizard\r\n\r\n1. Go to [Accessibility Insights Downloads](/downloads).\r\n1. Under **For Windows**, select **Download for Windows.**\r\n1. When the installer file finishes downloading, open it.\r\n1. Follow the instructions in the setup wizard.\r\n\r\n### Using a command prompt\r\n\r\nThis method is an alternative to using the setup wizard.\r\n\r\n1. Go to [Accessibility Insights Downloads](/downloads).\r\n1. Under **For Windows**, select **Download for Windows.**\r\n1. When the installer file finishes downloading, open a command prompt as an administrator.\r\n1. Change to the directory containing the file. For example, enter the following command:\r\n\r\n    ```\r\n    cd %HOMEPATH%\\Downloads\r\n    ```\r\n\r\n1. Run the installer in quiet mode. For example, enter the following command:\r\n\r\n    ```\r\n    msiexec.exe /i AccessibilityInsights.msi /quiet\r\n    ```\r\n\r\n    An application icon will appear on the desktop when installation is complete.\r\n\r\n## Testing your target application\r\n\r\nBy default, Accessibility Insights for Windows can't access applications running with administrative privileges. In this situation, you have three options:\r\n\r\n- If possible, run your target application without administrative privileges.\r\n- Run Accessibility Insights for Windows as administrator. (Must be done each session.)\r\n- Enable UIAccess for Accessibility Insights for Windows. (Will impact all future sessions of Accessibility Insights for Windows.) To do this:\r\n    1. Open a command prompt as an administrator.\r\n    1. Navigate to the directory where the AccessibilityInsights.exe file is stored. For example, enter the following command:\r\n\r\n        ```\r\n        cd C:\\Program Files (x86)\\AccessibilityInsights\\1.1\r\n        ```\r\n\r\n    1. Run UIAccess.cmd Enable from the directory where Accessibility Insights for Windows is installed. For example, enter the following command:\r\n\r\n        ```\r\n        UIAccess.cmd Enable\r\n        ```\r\n\r\n## Uninstalling Accessibility Insights for Windows\r\n\r\n1. Go to **Apps \u0026 features**, select Accessibility Insights for Windows, and then select **Uninstall**.\r\n\r\n## Troubleshooting\r\n\r\n### GitHub authentication error while using the setup wizard\r\n\r\n**Problem**\r\n\r\nAccessibility Insights for Windows was unable to install the application on your device due to a GitHub Authentication issue when downloading.\r\n\r\n**Solution**\r\n\r\n#### Using the setup wizard\r\n\r\n1. Open a new private browser window.\r\n1. Go to [Accessibility Insights Downloads](https://accessibilityinsights.io/downloads).\r\n1. Under **For Windows**, select **Download for Windows.**\r\n1. When the installer file finishes downloading, open it.\r\n1. Follow the instructions in the setup wizard.\r\n\r\n#### Using a command prompt\r\n\r\nThis method is an alternative to using the setup wizard.\r\n\r\n1. Open a new private browser window.\r\n1. Go to [Accessibility Insights Downloads](https://accessibilityinsights.io/downloads).\r\n1. Under **For Windows**, select **Download for Windows.**\r\n1. When the installer file finishes downloading, open a command prompt as an administrator.\r\n1. Change to the directory containing the file. For example, enter the following command:\r\n\r\n    ```\r\n    cd %HOMEPATH%\\Downloads\r\n    ```\r\n\r\n1. Run the installer in quiet mode. For example, enter the following command:\r\n\r\n    ```\r\n    msiexec.exe /i AccessibilityInsights.msi /quiet\r\n    ```\r\n\r\n    An application icon will appear on the desktop when installation is complete.\r\n"},{"title":"/docs/windows/overview","description":"Accessibility Insights for Windows","content":"\r\n[Download for Windows](/downloads/)\r\n\r\n## What's Accessibility Insights for Windows?\r\n\r\nAccessibility Insights for Windows helps developers find and fix accessibility issues in Windows apps. The tool supports three primary scenarios:\r\n\r\n-   _Live Inspect_ allows developers to verify that an element in an app has the right UI Automation properties simply by hovering over the element or setting keyboard focus on it.\r\n    -   Elements are displayed in the UIA Tree.\r\n    -   Choose your view of the properties: properties relevant to the control type, all properties that have values, or custom.\r\n-   _FastPass_ is a lightweight, two-step process that helps developers identify common, high-impact accessibility issues in less than five minutes.\r\n    -   Automated checks - the tool automatically checks for compliance with more than 60 accessibility requirements.\r\n    -   Tab stops test - the tool provides clear instructions and a visual helper that makes it easy to identify critical accessibility issues related to keyboard access, such as missing tab stops, keyboard traps, and incorrect tab order.\r\n-   Troubleshooting allows you to diagnose and fix specific accessibility issues:\r\n    -   View the patterns supported by a control and invoke the associated UI methods to see whether an element responds correctly to user input.\r\n    -   Record application events to verify that your app is generating the expected events.\r\n    -   Use the built-in contrast checker to identify contrast issues and select colors that provide sufficient contrast.\r\n\r\n## Get Started\r\n\r\nGet started by watching a video:\r\n\r\n-   [Overview](https://www.youtube.com/watch?v=BIu9ONdMGGg)\r\n\r\nOr read a tutorial:\r\n\r\n-   [FastPass](/docs/windows/getstarted/fastpass/)\r\n-   [Inspect](/docs/windows/getstarted/inspect/)\r\n\r\n## Keyboard Shortcuts\r\n\r\nIncrease your productivity with Accessibility Insights for Windows's keyboard shortcuts.\r\n\r\n-   [Keyboard shortcuts](/docs/windows/reference/keyboard/)\r\n\r\n## Privacy\r\n\r\nWith your consent, Accessibility Insights for Windows collects anonymized usage data and crash report information. You may opt out at any time by disabling it:\r\n\r\n-   [How do I disable telemetry?](/docs/windows/reference/telemetry/)\r\n\r\n## Contributing\r\n\r\nAccessibility Insights for Windows is open source on GitHub:\r\n\r\n-   [Go to the GitHub repository for Windows](https://github.com/microsoft/accessibility-insights-windows)\r\n\r\n## Additional Help\r\n\r\nFor additional help such as reporting issues and asking questions:\r\n\r\n-   [Help for Accessibility Insights for Windows](/docs/windows/reference/help/)\r\n"},{"title":"/docs/windows/reference/faq","description":"FAQ for Accessibility Insights for Windows","content":"\r\n\u003e Prerequisite: [Install Accessibility Insights for Windows](/downloads/) if you haven't already.\r\n\r\n## What platforms does Accessibility Insights for Windows support?\r\n\r\nAccessibility Insights for Windows is actively tested on and hence supported on Windows versions in Microsoft mainstream support. You can search [search product lifecycle](https://support.microsoft.com/en-us/lifecycle/search) to determine whether a specific Windows version is in mainstream support or not. Accessibility Insights for Windows may work in older versions of Windows, but we cannot vouch for its performance on those platforms.\r\n\r\n## Does Accessibility Insights for Windows work with Chromium or Electron apps?\r\n\r\nAccessibility Insights for Windows can be used to analyze Electron and Chromium applications in Windows 1903 update and later because Windows converts IAccessible2 data provided by Chromium into UI Automation data.\r\n\r\nHowever, users must consider that both Chromium and Electron are Web based frameworks. Thus, using Web standards and rules will provide more actionable results.\r\n\r\n## What type of issues can be found with FastPass in Accessibility Insights for Windows?\r\n\r\nFastPass has two steps:\r\n\r\n1. Automated checks: these checks can detect **some** common accessibility problems, such as missing or invalid properties. However, most accessibility problems can be identified only through manual testing and Automated checks only provide **partial** coverage to WCAG success criteria.\r\n1. TabStops: an assisted manual test that helps you find **some** accessibility issues in keyboard navigation.\r\n\r\n## Does Accessibility Insights for Windows find framework specific issues?\r\n\r\nAccessibility Insights for Windows can detect _some_ framework specific issues. These checks are displayed in a tree grid below the Automated checks. The **How to Fix** information provides links to [additional documentation and actionable guidance](https://docs.microsoft.com/en-us/accessibility-tools-docs/).\r\n\r\n## Can I use Accessibility Insights for Windows on a Windows app written with Java?\r\n\r\nIf the Java framework produces controls which support Windows UI Automation (UIA) provider interfaces, you can use Accessibility Insights for Windows to scan the Java application. Frameworks known to support UIA are JavaFX and QT (although there may be others).\r\nHowever, if the application is built using a framework that requires the Java Access Bridge for accessibility (such as Swing), Accessibility Insights for Windows will not be able to scan the application.\r\n\r\n## Sometimes Accessibility Insights for Windows can’t find my application. Is there a fix?\r\n\r\nBy default, Accessibility Insights for Windows can only scan applications that are not running as administrator. When this happens, there are 3 options:\r\n\r\n1. If possible, run your application without administrative privileges.\r\n2. Run Accessibility Insights for Windows as administrator (needs to be done for each session).\r\n3. Enable UIAccess for Accessibility Insights for Windows (will impact all future sessions of Accessibility Insights for Windows). To do this, open an administrative command prompt and run UIAccess.cmd Enable from the directory where Accessibility Insights for Windows is installed.\r\n\r\n## Does Accessibility Insights for Windows support custom UI Automation properties?\r\n\r\n[Custom UI Automation properties](https://docs.microsoft.com/en-gb/windows/win32/winauto/uiauto-custompropertieseventscontrolpatterns) allow third parties, such as application developers and assistive technology manufacturers, to exchange additional information beyond that permitted by the core UI Automation specification. Accessibility Insights for Windows supports the inspection of user-defined custom UI Automation properties.\r\n\r\nTo enable custom properties, place a configuration file named `CustomUIA.json`, following the [Axe.Windows custom UIA configuration format](https://github.com/microsoft/axe-windows/blob/main/docs/CustomUIA.md), in the `%localappdata%\\AccessibilityInsights\\V1\\Configurations` directory.\r\n"},{"title":"/docs/windows/reference/help","description":"Help for Accessibility Insights for Windows","content":"\r\nThank you for using Accessibility Insights for Windows.\r\n\r\n## Get Started\r\n\r\nGet started by reading our tutorials:\r\n\r\n-   [FastPass](/docs/windows/getstarted/fastpass/)\r\n-   [Bug filing](/docs/windows/getstarted/bugfiling/)\r\n-   [Inspect](/docs/windows/getstarted/inspect/)\r\n-   [Event monitoring](/docs/windows/getstarted/eventmonitoring/)\r\n-   [Color contrast](/docs/windows/getstarted/colorcontrast/)\r\n\r\n## Keyboard Shortcuts\r\n\r\nIncrease your productivity with Accessibility Insights for Windows's keyboard shortcuts.\r\n\r\n-   [Keyboard shortcuts](/docs/windows/reference/keyboard/)\r\n\r\n## Privacy\r\n\r\nWith your consent, Accessibility Insights for Windows collects anonymized usage data and crash report information. You may opt out at any time by disabling it:\r\n\r\n-   [How do I disable telemetry?](/docs/windows/reference/telemetry/)\r\n\r\n## Contributing\r\n\r\nAccessibility Insights for Windows is open source on GitHub:\r\n\r\n-   [Go to the GitHub repository for Windows](https://github.com/microsoft/accessibility-insights-windows)\r\n\r\n## For additional help\r\n\r\n| Help topic               | Instructions                                                                          |\r\n| ------------------------ | ------------------------------------------------------------------------------------- |\r\n| Ask a question           | [Ask a question in Stack Overflow](https://go.microsoft.com/fwlink/?linkid=2080279)   |\r\n| Search known issues      | [Search GitHub issues](https://go.microsoft.com/fwlink/?linkid=2077847)               |\r\n| Report an issue          | [Create a bug report in GitHub](https://go.microsoft.com/fwlink/?linkid=2080535)      |\r\n| Search feature requests  | [Search GitHub issues](https://go.microsoft.com/fwlink/?linkid=2080623)               |\r\n| Submit a feature request | [Create a feature request in GitHub](https://go.microsoft.com/fwlink/?linkid=2080535) |\r\n"},{"title":"/docs/windows/reference/keyboard","description":"Keyboard shortcuts for Accessibility Insights for Windows","content":"\r\nThis page lists out the default keyboard shortcuts and describes how you can customize them.\r\n\r\n## Default keyboard shortcuts\r\n\r\n### Navigation\r\n\r\n| Key        | Command                                                                   |\r\n| ---------- | ------------------------------------------------------------------------- |\r\n| `F6`       | Go to the next pane                                                       |\r\n| `Shift+F6` | Go to the previous pane                                                   |\r\n| `Shift+F9` | Bring Accessibility Insights for Windows to the foreground or minimize it |\r\n| `Ctrl+I`   | Go to Live Inspect                                                        |\r\n| `Ctrl+T`   | Go to Test                                                                |\r\n| `Ctrl+R`   | Go to Color Contrast Analyzer                                             |\r\n\r\n### Help\r\n\r\n| Key  | Command             |\r\n| ---- | ------------------- |\r\n| `F1` | Go to Help (online) |\r\n\r\n### Live Inspect\r\n\r\n| Key             | Command                                                                                                |\r\n| --------------- | ------------------------------------------------------------------------------------------------------ |\r\n| `Ctrl+O`        | Open snapshot (.a11ytest file)                                                                         |\r\n| `Ctrl+S`        | Save snapshot (.a11ytest file)                                                                         |\r\n| `Shift+F5`      | Pause or resume updates to the UI Automation Tree when focus changes via mouse or keyboard navigation. |\r\n| `Ctrl+Shift+F5` | Inspect the previous sibling element in the UI Automation Tree.                                        |\r\n| `Ctrl+Shift+F6` | Inspect the Parent element in UI Automation Tree.                                                      |\r\n| `Ctrl+Shift+F7` | Inspect the first child element in the UI Automation Tree.                                             |\r\n| `Ctrl+Shift+F8` | Inspect the Next sibling element in the UI Automation tree.                                            |\r\n| `Ctrl+Shift+F9` | Inspect the last child element in the UI Automation Tree.                                              |\r\n| `Shift+F7`      | Start or stop event recording for the selected element.                                                |\r\n| `Shift+F8`      | Run automated checks on the selected element.                                                          |\r\n\r\n#### Details tab\r\n\r\n| Key      | Command                                                                                                               |\r\n| -------- | --------------------------------------------------------------------------------------------------------------------- |\r\n| `Alt+S`  | Open and close Properties settings                                                                                    |\r\n| `Alt+P`  | Focus into the Properties grid                                                                                        |\r\n| `Alt+E`  | Focus into the Properties filter (enabled only when 'Include all properties that have values' settings is turned on ) |\r\n| `Alt+A`  | Focus into the Patterns                                                                                               |\r\n| `Ctrl+C` | Copy selected property's name and value                                                                               |\r\n\r\n#### Configuration (Properties and Events)\r\n\r\n| Key     | Command                             |\r\n| ------- | ----------------------------------- |\r\n| `Alt+A` | Add item                            |\r\n| `Alt+R` | Remove item                         |\r\n| `Alt+V` | Focus into available items          |\r\n| `Alt+S` | Focus into currently selected items |\r\n| `Alt+F` | Focus into item filter              |\r\n\r\n#### Listen to events\r\n\r\n##### Events\r\n\r\n| Key     | Command                                                             |\r\n| ------- | ------------------------------------------------------------------- |\r\n| `Alt+R` | (Within Events pane) Start or stop event recording for the element. |\r\n| `Alt+V` | (Within Events pane) Focus into the recorded events table.          |\r\n\r\n### Test\r\n\r\n#### How to fix\r\n\r\n| Key              | Command                            |\r\n| ---------------- | ---------------------------------- |\r\n| `Ctrl+NumpadAdd` | Auto-resize columns in How To Fix. |\r\n\r\n## Customize keyboard shortcuts\r\n\r\nA subset of the keyboard shortcuts can be customized.\r\n\r\n**To customize keyboard shortcuts**\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. In the Navigation bar, select Settings \u003cSettingsIcon /\u003e. You can also set focus on the Navigation bar and select the Tab key to select Settings.\r\n1. In the Application tab, select the keyboard shortcut you want to customize and enter the new shortcut.\r\n"},{"title":"/docs/windows/reference/releases","description":"Release Notes for Accessibility Insights for Windows","content":"\r\nCheck out our release notes in our [GitHub repository](https://github.com/microsoft/accessibility-insights-windows/releases/latest)\r\n"},{"title":"/docs/windows/reference/tabstops","description":"Tab stops","content":"\r\n## Why it matters\r\n\r\nUsers must be able to interact with a software application using only a keyboard.\r\n\r\n-   Using a mouse is impossible for people who can't see the pointer.\r\n-   Some people don't have the physical capability to control a pointing device.\r\n-   Many people without disabilities prefer to use a keyboard.\r\n\r\nGood tab stop design allows keyboard users to:\r\n\r\n-   Access all of the application's interactive elements in a predictable order.\r\n-   Identify which element currently has the input focus.\r\n\r\nPoorly-designed tab stops create high-impact accessibility problems.\r\n\r\n## Do\r\n\r\n### Provide a visible focus indicator on the interactive element that has the input focus.\r\n\r\n-   Input focus is commonly indicated by a solid or dotted border surrounding the element, but other visible changes are acceptable.\r\n\r\n### Make all interactive elements focusable.\r\n\r\n-   Users should be able tab to every interactive element on the screen unless it is currently disabled.\r\n-   Interactive elements include links, buttons, form fields and other input controls.\r\n-   Watch out for \"keyboard traps,\" elements that receive input focus then prevent it from moving away.\r\n\r\n### Make the tab order consistent with the logical order that's communicated visually.\r\n\r\n-   In most cases, tab order should match the expected reading order (left-to-right and top-to-bottom).\r\n\r\n### Make sure elements that appear in multiple views have a consistent tab order.\r\n\r\n-   For example, if multiple views in an application have a navigation bar, a search field, and a settings menu, these elements should have the same relative tab order in every view.\r\n\r\n## Don't\r\n\r\n### Don't make non-interactive elements focusable.\r\n\r\n-   Don't allow users to tab to text elements (such as labels) or other static content.\r\n-   Don't allow users to tab to potentially interactive elements that are currently disabled.\r\n\r\n### Don't allow users to tab their way out of a modal dialog.\r\n\r\n-   Users must actively dismiss the dialog (for example, using an OK or Cancel button).\r\n\r\n### Don't use tabindex values to define an explicit tab order.\r\n\r\n-   If the default tab order isn't ideal, first try to fix the problem by rearranging the content.\r\n\r\n### Don't show input focus on any element that does not currently have the input focus.\r\n\r\n-   Be sure styling doesn't make any element appear to have the input focus.\r\n\r\n### Don't move input focus unexpectedly.\r\n\r\n-   All focus changes that occur should be a predictable result of user action.\r\n"},{"title":"/docs/windows/reference/telemetry","description":"Telemetry in Accessibility Insights for Windows","content":"\r\nWith your consent, Accessibility Insights for Windows collects anonymized usage data and crash report data in order to improve our tools. For more details, [read about Accessibility Insights and telemetry](/docs/general/telemetry/);\r\n\r\n## Disable telemetry\r\n\r\n1. Open Accessibility Insights for Windows.\r\n1. In the Navigation bar, select Settings \u003cSettingsIcon /\u003e. You can also set focus on the Navigation bar and select the Tab key to select Settings.\r\n1. In the **Application** tab, turn off the **Enable Telemetry** toggle. You can always enable it again later by turning on the same toggle.\r\n"}]},"__N_SSG":true},"page":"/","query":{},"buildId":"zPz4PkKae7VfVFSMyetxM","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>