Accessibility Health Check
https://ally.com
Excellent
https://daylight.sonde.life/usfin/ally-com/
Excellent
Executive Summary
Top Findings
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Ally Bank"WCAG 1.4.3
<p data-testid="RichTextTestId_block_p" class="Text_body-md__aYHxV -mt-0 -mb-xxs -color-gray-white">Ally Bank </p>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Spending"WCAG 1.4.3
<a class="Link_link__JHJ4m Link_-dark__6RmSy Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="explore-Checking" href="https://www.ally.com/bank/interest-checking-account/" target="_s
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
criticalInsufficient color contrast: 1.00:1 (required: 3:1 for large text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "You’ve got an ally in every corner."WCAG 1.4.3
<strong data-testid="RichTextTestId_mark_bold">You’ve got an ally in every corner.</strong>
Current ratio: 1.00:1 (need 3:1). Change foreground from #ffffff to #959494 (ratio: 3.0:1).
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Bank product Icon"WCAG 1.4.3
<title>Bank product Icon</title>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
high"role=text" should have no focusable descendants: Fix any of the following: Element has focusable descendants
<p class="userConsent__disclaimerText" role="text">
Ensure role="text" is used on elements with no focusable descendants. See: https://www.w3.org/WAI/WCAG22/quickref/
highConsole warning: 🚀 _satellite.notify is deprecated. Please use the `_satellite.logger` API.
https://www.ally.com/_next/static/chunks/5230-99413ba528bff774.js:0mediumAdd X-Content-Type-Options: nosniff Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer Add Strict-Transport-Security header with max-age of at least 31536000 Add X-Frame-Options: DENY or SAMEORIGIN Add a Content-Security-Policy header with appropriate directives
highFocus jumps backward from "Decline Cookies" to "Skip to login" (visual distance: 845px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<button>Skip to login</button>
Reorder elements in the DOM to match the visual layout.
highFocus jumps backward from "Skip to main content" to "Ally Logo, go to ally.com" (visual distance: 451px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<a>Ally Logo, go to ally.com</a>
Reorder elements in the DOM to match the visual layout.
highFocus jumps backward from "Skip to main content" to "Ally ventures logo" (visual distance: 445px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<a>Ally ventures logo</a>
Reorder elements in the DOM to match the visual layout.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumPage has 3 "navigation" landmarks but only 2 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 3 navigation landmarks, 2 labeled -->
Add unique aria-label or aria-labelledby to each "navigation" landmark so screen readers can differentiate them. Example: <nav aria-label="Primary">, <nav aria-label="Footer">.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="helpTopNav" href="https://www.ally.com/help/" target="_self" allytm-click-tagged="true">Help</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" href="http://www.ally.com/search" target="_self" allytm-click-tagged="true">Search</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-investorRelations" href="https://www.ally.com/about/investor/" target="_self" allytm-click-tagged="true">Investor Relations<
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-ourCompany" href="https://www.ally.com/about/company-structure/" target="_self" allytm-click-tagged="true">Our Company</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-careers" href="https://www.ally.com/about/careers/" target="_self" allytm-click-tagged="true">Careers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="aboutUsTopNav" href="https://www.ally.com/about/" target="_self" allytm-click-tagged="true">About Us</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-socialImpact" href="https://www.ally.com/about/social-impact/" target="_self" allytm-click-tagged="true">Social Impact</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-suppliers" href="https://www.ally.com/about/suppliers/" target="_self" allytm-click-tagged="true">Suppliers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-mediaCenter" href="https://media.ally.com/" target="_self" allytm-click-tagged="true">Media Center</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="contactUsTopNav" href="https://www.ally.com/contact-us/" target="_self" allytm-click-tagged="true">Contact Us</
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-investorRelations" href="https://www.ally.com/about/investor/" target="_self" allytm-click-tagged="true">Investor Relations<
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-socialImpact" href="https://www.ally.com/about/social-impact/" target="_self" allytm-click-tagged="true">Social Impact</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-dealerServices" href="https://www.ally.com/dealer/" target="_self" allytm-click-tagged="true">Dealer Services</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-allyVentures" href="https://www.ally.com/ventures/" target="_self" allytm-click-tagged="true">Ally Ventures</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-corporateFinance" href="https://www.ally.com/corporate-finance/" target="_self" allytm-click-tagged="true">Corporate Finance
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-careers" href="https://www.ally.com/about/careers/" target="_self" allytm-click-tagged="true">Careers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-ourCompany" href="https://www.ally.com/about/company-structure/" target="_self" allytm-click-tagged="true">Our Company</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-mediaCenter" href="https://media.ally.com/" target="_self" allytm-click-tagged="true">Media Center</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-suppliers" href="https://www.ally.com/about/suppliers/" target="_self" allytm-click-tagged="true">Suppliers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-conversationally" href="https://www.ally.com/stories/" target="_self" allytm-click-tagged="true">Conversationally</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumNavigation region "Top Menu" (present on www.ally.com) is missing on this page. Navigation should appear consistently across pages.WCAG 3.2.3
<!-- missing: nav[aria-label="Top Menu"] -->
Ensure the "Top Menu" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Investing & Retirement" inserts 6 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Investing & Retirement Menu" data-allytmln="investMenu" allytm-click-tagged="true">Investing &
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Auto" inserts 4 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Auto Menu" data-allytmln="autoMenu" allytm-click-tagged="true">Auto</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Accept" inserts 15 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="userConsent__btn" allytmln="Banner - Accept" allytm-click-tagged="true" aria-label="Accept Cookies">Accept</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Auto" inserts 4 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Auto Menu" data-allytmln="autoMenu" allytm-click-tagged="true">Auto</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Investing & Retirement" inserts 6 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Investing & Retirement Menu" data-allytmln="investMenu" allytm-click-tagged="true">Investing &
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Visit Modelshop" inserts 8 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Learn More" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Modal_dialogTrigger__6C7WP Link_ctaTertiary__Ai4Hu Link_-dark__6RmSy Link_buttonAsLink__4_bbF" data-allytmln="learnMoreRobKerr" aria-label="learn more rob kerr" role="button" href="##" allyt
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Visit Car IQ" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Visit Greenlight" inserts 8 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumx-content-type-options header has invalid or weak value: nosniff nosniff
Add X-Content-Type-Options: nosniff Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
lowBroken link: https://www.tiktok.com/@allydoitright returned status 403 Forbidden after 1 attempts
<a href="https://www.tiktok.com/@allydoitright">TikTok Logo</a>
lowBroken link: https://www.tiktok.com/@allydoitright returned status 403 Forbidden after 1 attempts
<a href="https://www.tiktok.com/@allydoitright">TikTok Logo</a>
Best Page Fix Opportunities
www.ally.com33findings
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Ally Bank"WCAG 1.4.3
<p data-testid="RichTextTestId_block_p" class="Text_body-md__aYHxV -mt-0 -mb-xxs -color-gray-white">Ally Bank </p>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Spending"WCAG 1.4.3
<a class="Link_link__JHJ4m Link_-dark__6RmSy Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="explore-Checking" href="https://www.ally.com/bank/interest-checking-account/" target="_s
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
criticalInsufficient color contrast: 1.00:1 (required: 3:1 for large text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "You’ve got an ally in every corner."WCAG 1.4.3
<strong data-testid="RichTextTestId_mark_bold">You’ve got an ally in every corner.</strong>
Current ratio: 1.00:1 (need 3:1). Change foreground from #ffffff to #959494 (ratio: 3.0:1).
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Bank product Icon"WCAG 1.4.3
<title>Bank product Icon</title>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
high"role=text" should have no focusable descendants: Fix any of the following: Element has focusable descendants
<p class="userConsent__disclaimerText" role="text">
Ensure role="text" is used on elements with no focusable descendants. See: https://www.w3.org/WAI/WCAG22/quickref/
highConsole warning: 🚀 _satellite.notify is deprecated. Please use the `_satellite.logger` API.
https://www.ally.com/_next/static/chunks/5230-99413ba528bff774.js:0mediumAdd X-Content-Type-Options: nosniff Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer Add Strict-Transport-Security header with max-age of at least 31536000 Add X-Frame-Options: DENY or SAMEORIGIN Add a Content-Security-Policy header with appropriate directives
highFocus jumps backward from "Decline Cookies" to "Skip to login" (visual distance: 845px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<button>Skip to login</button>
Reorder elements in the DOM to match the visual layout.
highFocus jumps backward from "Skip to main content" to "Ally Logo, go to ally.com" (visual distance: 451px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<a>Ally Logo, go to ally.com</a>
Reorder elements in the DOM to match the visual layout.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="helpTopNav" href="https://www.ally.com/help/" target="_self" allytm-click-tagged="true">Help</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" href="http://www.ally.com/search" target="_self" allytm-click-tagged="true">Search</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-investorRelations" href="https://www.ally.com/about/investor/" target="_self" allytm-click-tagged="true">Investor Relations<
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-ourCompany" href="https://www.ally.com/about/company-structure/" target="_self" allytm-click-tagged="true">Our Company</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-careers" href="https://www.ally.com/about/careers/" target="_self" allytm-click-tagged="true">Careers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="aboutUsTopNav" href="https://www.ally.com/about/" target="_self" allytm-click-tagged="true">About Us</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-socialImpact" href="https://www.ally.com/about/social-impact/" target="_self" allytm-click-tagged="true">Social Impact</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-suppliers" href="https://www.ally.com/about/suppliers/" target="_self" allytm-click-tagged="true">Suppliers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-mediaCenter" href="https://media.ally.com/" target="_self" allytm-click-tagged="true">Media Center</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_link__JHJ4m Link_navLinkTop__7USdO Link_-no-inline__7AGiC" data-allytmln="contactUsTopNav" href="https://www.ally.com/contact-us/" target="_self" allytm-click-tagged="true">Contact Us</
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Investing & Retirement" inserts 6 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Investing & Retirement Menu" data-allytmln="investMenu" allytm-click-tagged="true">Investing &
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Auto" inserts 4 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Auto Menu" data-allytmln="autoMenu" allytm-click-tagged="true">Auto</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Accept" inserts 15 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="userConsent__btn" allytmln="Banner - Accept" allytm-click-tagged="true" aria-label="Accept Cookies">Accept</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Auto" inserts 4 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Auto Menu" data-allytmln="autoMenu" allytm-click-tagged="true">Auto</button>
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Investing & Retirement" inserts 6 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="styles_mainNavListItemBtn__EFhR4" type="button" aria-expanded="false" aria-label="Open Investing & Retirement Menu" data-allytmln="investMenu" allytm-click-tagged="true">Investing &
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
lowBroken link: https://www.tiktok.com/@allydoitright returned status 403 Forbidden after 1 attempts
<a href="https://www.tiktok.com/@allydoitright">TikTok Logo</a>
/ventures27findings
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highImage has no accessible name in the accessibility tree. Screen readers will skip or announce it generically.WCAG 1.1.1
<!-- a11y: role="image" -->
Add alt text to the image. If decorative, mark with role="presentation" or alt="". WCAG 1.1.1 requires text alternatives for non-text content.
highFocus jumps backward from "Skip to main content" to "Ally ventures logo" (visual distance: 445px). No explicit tabIndex — likely a DOM order issue.WCAG 2.4.3
<a>Ally ventures logo</a>
Reorder elements in the DOM to match the visual layout.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumFocusable element has generic role. Keyboard users can reach it but screen readers provide no context about its purpose.WCAG 4.1.2
<!-- a11y: role="generic" -->
Add an explicit ARIA role (e.g., role="button") and an accessible name. WCAG 4.1.2 requires interactive elements to expose their role.
mediumPage has 3 "navigation" landmarks but only 2 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 3 navigation landmarks, 2 labeled -->
Add unique aria-label or aria-labelledby to each "navigation" landmark so screen readers can differentiate them. Example: <nav aria-label="Primary">, <nav aria-label="Footer">.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-investorRelations" href="https://www.ally.com/about/investor/" target="_self" allytm-click-tagged="true">Investor Relations<
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-socialImpact" href="https://www.ally.com/about/social-impact/" target="_self" allytm-click-tagged="true">Social Impact</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-dealerServices" href="https://www.ally.com/dealer/" target="_self" allytm-click-tagged="true">Dealer Services</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-allyVentures" href="https://www.ally.com/ventures/" target="_self" allytm-click-tagged="true">Ally Ventures</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-corporateFinance" href="https://www.ally.com/corporate-finance/" target="_self" allytm-click-tagged="true">Corporate Finance
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-careers" href="https://www.ally.com/about/careers/" target="_self" allytm-click-tagged="true">Careers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-ourCompany" href="https://www.ally.com/about/company-structure/" target="_self" allytm-click-tagged="true">Our Company</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-mediaCenter" href="https://media.ally.com/" target="_self" allytm-click-tagged="true">Media Center</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-suppliers" href="https://www.ally.com/about/suppliers/" target="_self" allytm-click-tagged="true">Suppliers</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumLink is distinguished from surrounding text only by color (link: rgb(26, 26, 26), text: rgb(255, 255, 255)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="Link_navLink__ZbrPx Link_-no-inline__7AGiC" data-allytmln="footer-conversationally" href="https://www.ally.com/stories/" target="_self" allytm-click-tagged="true">Conversationally</a>
Add a non-color visual indicator to links: underline (text-decoration: underline), border-bottom, increased font-weight, or a visible icon. The indicator must be present in the default state, not just on hover.
mediumNavigation region "Top Menu" (present on www.ally.com) is missing on this page. Navigation should appear consistently across pages.WCAG 3.2.3
<!-- missing: nav[aria-label="Top Menu"] -->
Ensure the "Top Menu" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content.
mediumClicking "Visit Modelshop" inserts 8 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "SIPC" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm styles_-underline__agAoU styles_-inline__545GH Link_-underline__lnWRl Link_-inline__GtMVe" data-allytmln="defaul
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Learn More" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Modal_dialogTrigger__6C7WP Link_ctaTertiary__Ai4Hu Link_-dark__6RmSy Link_buttonAsLink__4_bbF" data-allytmln="learnMoreRobKerr" aria-label="learn more rob kerr" role="button" href="##" allyt
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Visit Car IQ" inserts 7 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Visit Greenlight" inserts 8 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<a class="Link_link__JHJ4m Modal_dialogTrigger__6C7WP styles_interstitialTrigger__s2UXm Link_-no-inline__7AGiC Link_-embedded-block___x1B8" data-allytmln="venturesExternalLinkInterstitial" href="##" t
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumx-content-type-options header has invalid or weak value: nosniff nosniff
Add X-Content-Type-Options: nosniff Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
lowBroken link: https://www.tiktok.com/@allydoitright returned status 403 Forbidden after 1 attempts
<a href="https://www.tiktok.com/@allydoitright">TikTok Logo</a>
Methodology
The Sonde Score is a universal 0–1000 compliance index — think of it like a credit score for accessibility. Each finding is weighted by its impact on human access: a keyboard trap (critical) counts far more than a best-practice suggestion (low). The raw penalty is normalized per page so scores are comparable across sites of any size. A harmonic curve ensures every site gets a meaningful score — no zeros, no false perfection.
where S = sensitivity (750), P = Σ(weight × count), N = pages scanned
| Tier | Weight | Examples |
|---|---|---|
| Critical | 10 | Keyboard traps, missing page language |
| High | 3 | Missing alt text, insufficient contrast |
| Medium | 1 | Heading hierarchy, unclear link purpose |
| Low | 0.25 | Best-practice suggestions |
The Sonde Score is a living standard (v0.1). We’re building it in the open because accessibility is too important for closed-door decisions. Your expertise makes it better.
Enter Mission Control
Review raw findings data, track changes between scans, and contribute to Sonde’s open methodology.
Nominate a Site for the Daylight Index
Know a public website that should be on the accessibility leaderboard? Nominate it — we’ll scan it and publish the results.