Accessibility Health Check
https://capitalone.com
Excellent
https://daylight.sonde.life/usfin/capitalone-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: "Credit card overview"WCAG 1.4.3
<a class="site-L2__tabbable ng-star-inserted" href="/credit-cards/" target="_self">Credit card overview</a>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
criticalKeyboard trap detected in nav "Cars for saleNew cars for saleUsed cars ". Focus cycles within 4 elements without escaping. 17 focusable elements in container.WCAG 2.1.2
<nav role="nav">Cars for saleNew cars for saleUsed cars </nav>
Ensure Tab and Shift+Tab can move focus out of this region. If this is a modal dialog, provide a close mechanism (Escape key) that returns focus to the trigger element.
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.
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.
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.
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.
highConsole warning: OneTag has encountered at least one warning. Please refer to the oneTag documentation on how to enable oneTag debug messages.
https://onetms.capitalone.com/ot/ot.js:7mediumAdd 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 Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
highConsole warning: Newrelic action queued -> setCustomAttribute: app-version 0.1.678 (2 occurrences)
https://www.capitalone.com/cars/ocb-ui/search-assets/logger.BmHwsxRQ.js:0mediumAdd 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 Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
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 2 "navigation" landmarks but only 0 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 2 navigation landmarks, 0 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">.
mediumPage has 2 "contentinfo" landmarks but only 0 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 2 contentinfo landmarks, 0 labeled -->
Add unique aria-label or aria-labelledby to each "contentinfo" landmark so screen readers can differentiate them. Example: <nav aria-label="Primary">, <nav aria-label="Footer">.
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="ods-input-1" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Password</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c2667954597="" class="card-overlay">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<h1 _ngcontent-web-shell-c2562791342="" tabindex="0" class="main-title visuallyhidden ng-star-inserted" aria-label="Explore Capital One’s Banking and Financial Services">Explore Capital One’s Banking ...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell...="" type="text" id="ods-input-0" maxlength="50" name="ods-input-0" aria-label="Username" aria-describedby="us-login-auth-error-..." required="" class="login-username grv-...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<img _ngcontent-web-shell...="" alt="FDIC-Insured - Backe..." lang="en-US" src="data:image/png;base6..." class="gds-fdic-sign gds-fd...">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell...="" type="password" id="ods-input-1" maxlength="64" name="ods-input-1" aria-label="Password" aria-describedby="us-login-auth-error-..." required="" class="login-password ...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row"><div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-col headline"><h2 _ngcontent-web-shell-c347514875="" class="grv-shr-lib-text_...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell-c2931505271="" type="checkbox" id="rememberMe" name="rememberMe" class="rem-checkbox ng-untouched ng-pristine ng-valid" data-initial-value="">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell...="" role="tabpanel" class="feature-image active..." id="activeImage0" aria-labelledby="tab0" style="background-image: ur...">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" role="tablist" class="interactive-features-tablist">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumThe skip-link target should exist and be focusable: Fix any of the following: No skip link target
<a _ngcontent-web-shell-c1855419180="" href="#default-id" class="site-header__skip-nav"> Skip to main content </a>
Ensure all skip links have a focusable target. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="rememberMe" class="grv-shr-lib-text__body--tiny">Remember me</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<a _ngcontent-web-shell-c2931505271="" id="setUpAccess" class="asset-link set-up-access grv-shr-lib-text__body--tiny" data-initial-value="Set up online access" href="https://verified.capitalone.com/en...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c2931505271="" class="grv-shr-lib-col--sm-2 login-field ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumDocument should have one main landmark: Fix all of the following: Document does not have a main landmark
<html lang="en">
Ensure the document has a main landmark. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="ods-input-0" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Username</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c553998024="" class="grv-shr-lib-row ng-tns-c553998024-0">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumContentinfo landmark should not be contained in another landmark: Fix any of the following: The contentinfo landmark is contained in another landmark.
<footer class="bg-FsClrBrandPaletteMidnight font-sans text-white">
Ensure the contentinfo landmark is at top level. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumDocument should not have more than one contentinfo landmark: Fix any of the following: Document has more than one contentinfo landmark
<footer>
Ensure the document has at most one contentinfo landmark. See: https://www.w3.org/WAI/WCAG22/quickref/ Ensure landmarks are unique. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumLandmarks should have a unique role or role/label/title (i.e. accessible name) combination: Fix any of the following: The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable
<nav class="hidden xl:flex order-2">
Ensure landmarks are unique. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumLink is distinguished from surrounding text only by color (link: rgb(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/travel-and-miles/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Good</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/cash-back/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Fair</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/fair-and-building/" target="_self"><span class="heading">Credit Building</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/small-business/credit-cards/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Fair</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/cash-back/" target="_self"><span class="heading">Cash Back Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/travel-and-miles/" target="_self"><span class="heading">Travel Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/fair-and-building/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair to Rebuilding</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/students/" target="_self"><span class="heading">Student Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/small-business/credit-cards/" target="_self"><span class="heading">Business Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/students/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair</span></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 "card" (present on www.capitalone.com) is missing on this page. Navigation should appear consistently across pages.WCAG 3.2.3
<!-- missing: nav#card-menu-container -->
Ensure the "card" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "bank" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "auto" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "businessOOF" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "commercial" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "benefits" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content.
mediumClicking "How to calculate car loan interest?" inserts 1 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button data-hk="s4000021010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "[data-testid="open-account-menu"]" inserts 3 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="cursor-pointer" data-analytics-track-on="click" data-analytics-tag-key="BASE_HEADER_ACCOUNT_ICON" data-testid="open-account-menu" data-analytics-has-listener="true"><div><div data-hk="s
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Cars for sale" inserts 2 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button data-testid="make-tab-toggle-visibility-button" data-analytics-tag-key="BASE_HEADER_CARS_FOR_SALE" data-analytics-replacements="show" data-analytics-track-on="click" aria-expanded="false" clas
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumBroken link: https://www.capitalone.com/activate/ returned status 404 Not Found after 1 attempts
<a href="https://www.capitalone.com/activate/">Activate Credit Card</a>
mediumPage has only one navigation mechanism (navigation). WCAG requires at least two ways to locate a page within a set of pages.WCAG 2.4.5
Add at least two of: site navigation (<nav>), search functionality (input[type="search"] or role="search"), a sitemap link, breadcrumb navigation, or a table of contents.
mediumPage requires horizontal scrolling at 320px width (21px overflow). Content should reflow without horizontal scrolling at this width.WCAG 1.4.10
<html>
Use responsive CSS (max-width, flex-wrap, media queries) to ensure content reflows at narrow widths.
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000021010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000020010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000022010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
lowBroken link: https://verified.capitalone.com/enroll/pii returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/enroll/pii">Activate Your Account</a>
lowBroken link: https://verified.capitalone.com/sign-in-help/ returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/sign-in-help/">Forgot username or password?</a>
lowBroken link: https://verified.capitalone.com/auth/signin returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/auth/signin">Sign In</a>
lowBroken link: https://www.x.com/askcapitalone returned status 403 Forbidden after 1 attempts
<a href="https://www.x.com/askcapitalone">Reach @AskCapitalOne</a>
lowLink timeout: unsafe:javascript:void(0); did not respond within 5000ms after 8 attempts
<a href="unsafe:javascript:void(0);">Benefits & Tools</a>
lowBroken link: https://x.com/capitalone/ returned status 403 Forbidden after 1 attempts
<a href="https://x.com/capitalone/">X</a>
lowBroken link: https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&response_type=code&grant_type=authorization_code&scope=ncUniversalId%20openid&redirect_uri=https://ane.capitalone.com/protected/860354/auth returned status 404 Not Found after 1 attempts
<a href="https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&response_type=code&grant_type=authorization_code&scope=ncUniversalId%20openid&redirect_uri=https://ane.capitalone.com/protected/860354/auth">Sign in</a>
Best Page Fix Opportunities
www.capitalone.com49findings
criticalInsufficient color contrast: 1.00:1 (required: 4.5:1 for normal text). Foreground: rgb(255, 255, 255), background: rgb(255, 255, 255). Text: "Credit card overview"WCAG 1.4.3
<a class="site-L2__tabbable ng-star-inserted" href="/credit-cards/" target="_self">Credit card overview</a>
Current ratio: 1.00:1 (need 4.5:1). Change foreground from #ffffff to #777676 (ratio: 4.5:1).
highConsole warning: OneTag has encountered at least one warning. Please refer to the oneTag documentation on how to enable oneTag debug messages.
https://onetms.capitalone.com/ot/ot.js:7mediumAdd 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 Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
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.
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="ods-input-1" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Password</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c2667954597="" class="card-overlay">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<h1 _ngcontent-web-shell-c2562791342="" tabindex="0" class="main-title visuallyhidden ng-star-inserted" aria-label="Explore Capital One’s Banking and Financial Services">Explore Capital One’s Banking ...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell...="" type="text" id="ods-input-0" maxlength="50" name="ods-input-0" aria-label="Username" aria-describedby="us-login-auth-error-..." required="" class="login-username grv-...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<img _ngcontent-web-shell...="" alt="FDIC-Insured - Backe..." lang="en-US" src="data:image/png;base6..." class="gds-fdic-sign gds-fd...">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell...="" type="password" id="ods-input-1" maxlength="64" name="ods-input-1" aria-label="Password" aria-describedby="us-login-auth-error-..." required="" class="login-password ...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row"><div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-col headline"><h2 _ngcontent-web-shell-c347514875="" class="grv-shr-lib-text_...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<input _ngcontent-web-shell-c2931505271="" type="checkbox" id="rememberMe" name="rememberMe" class="rem-checkbox ng-untouched ng-pristine ng-valid" data-initial-value="">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell...="" role="tabpanel" class="feature-image active..." id="activeImage0" aria-labelledby="tab0" style="background-image: ur...">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c347514875="" role="tablist" class="interactive-features-tablist">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumThe skip-link target should exist and be focusable: Fix any of the following: No skip link target
<a _ngcontent-web-shell-c1855419180="" href="#default-id" class="site-header__skip-nav"> Skip to main content </a>
Ensure all skip links have a focusable target. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="rememberMe" class="grv-shr-lib-text__body--tiny">Remember me</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<a _ngcontent-web-shell-c2931505271="" id="setUpAccess" class="asset-link set-up-access grv-shr-lib-text__body--tiny" data-initial-value="Set up online access" href="https://verified.capitalone.com/en...
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c2931505271="" class="grv-shr-lib-col--sm-2 login-field ng-star-inserted">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumDocument should have one main landmark: Fix all of the following: Document does not have a main landmark
<html lang="en">
Ensure the document has a main landmark. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<label _ngcontent-web-shell-c2931505271="" for="ods-input-0" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Username</label>
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumAll page content should be contained by landmarks: Fix any of the following: Some page content is not contained by landmarks
<div _ngcontent-web-shell-c553998024="" class="grv-shr-lib-row ng-tns-c553998024-0">
Ensure all page content is contained by landmarks. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumLink is distinguished from surrounding text only by color (link: rgb(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/travel-and-miles/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Good</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/cash-back/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Fair</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/fair-and-building/" target="_self"><span class="heading">Credit Building</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/small-business/credit-cards/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Excellent to Fair</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/cash-back/" target="_self"><span class="heading">Cash Back Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/travel-and-miles/" target="_self"><span class="heading">Travel Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/fair-and-building/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair to Rebuilding</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/credit-cards/students/" target="_self"><span class="heading">Student Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="site-L2__tabbable" href="/small-business/credit-cards/" target="_self"><span class="heading">Business Rewards</span></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(20, 20, 20), text: rgb(0, 0, 0)). Users who cannot perceive color differences may not identify this as a link.WCAG 1.4.1
<a class="sub-heading-link" href="/credit-cards/students/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair</span></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.
mediumBroken link: https://www.capitalone.com/activate/ returned status 404 Not Found after 1 attempts
<a href="https://www.capitalone.com/activate/">Activate Credit Card</a>
mediumPage has only one navigation mechanism (navigation). WCAG requires at least two ways to locate a page within a set of pages.WCAG 2.4.5
Add at least two of: site navigation (<nav>), search functionality (input[type="search"] or role="search"), a sitemap link, breadcrumb navigation, or a table of contents.
lowBroken link: https://verified.capitalone.com/enroll/pii returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/enroll/pii">Activate Your Account</a>
lowBroken link: https://verified.capitalone.com/sign-in-help/ returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/sign-in-help/">Forgot username or password?</a>
lowBroken link: https://verified.capitalone.com/auth/signin returned status 404 Not Found after 1 attempts
<a href="https://verified.capitalone.com/auth/signin">Sign In</a>
lowBroken link: https://www.x.com/askcapitalone returned status 403 Forbidden after 1 attempts
<a href="https://www.x.com/askcapitalone">Reach @AskCapitalOne</a>
lowLink timeout: unsafe:javascript:void(0); did not respond within 5000ms after 8 attempts
<a href="unsafe:javascript:void(0);">Benefits & Tools</a>
lowBroken link: https://x.com/capitalone/ returned status 403 Forbidden after 1 attempts
<a href="https://x.com/capitalone/">X</a>
/cars/calculator29findings
criticalKeyboard trap detected in nav "Cars for saleNew cars for saleUsed cars ". Focus cycles within 4 elements without escaping. 17 focusable elements in container.WCAG 2.1.2
<nav role="nav">Cars for saleNew cars for saleUsed cars </nav>
Ensure Tab and Shift+Tab can move focus out of this region. If this is a modal dialog, provide a close mechanism (Escape key) that returns focus to the trigger element.
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.
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.
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.
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.
highConsole warning: Newrelic action queued -> setCustomAttribute: app-version 0.1.678 (2 occurrences)
https://www.capitalone.com/cars/ocb-ui/search-assets/logger.BmHwsxRQ.js:0mediumAdd 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 Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer
mediumPage has 2 "navigation" landmarks but only 0 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 2 navigation landmarks, 0 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">.
mediumPage has 2 "contentinfo" landmarks but only 0 have distinct labels. Screen reader users cannot distinguish between them.WCAG 1.3.1
<!-- 2 contentinfo landmarks, 0 labeled -->
Add unique aria-label or aria-labelledby to each "contentinfo" landmark so screen readers can differentiate them. Example: <nav aria-label="Primary">, <nav aria-label="Footer">.
mediumContentinfo landmark should not be contained in another landmark: Fix any of the following: The contentinfo landmark is contained in another landmark.
<footer class="bg-FsClrBrandPaletteMidnight font-sans text-white">
Ensure the contentinfo landmark is at top level. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumDocument should not have more than one contentinfo landmark: Fix any of the following: Document has more than one contentinfo landmark
<footer>
Ensure the document has at most one contentinfo landmark. See: https://www.w3.org/WAI/WCAG22/quickref/ Ensure landmarks are unique. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumLandmarks should have a unique role or role/label/title (i.e. accessible name) combination: Fix any of the following: The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable
<nav class="hidden xl:flex order-2">
Ensure landmarks are unique. See: https://www.w3.org/WAI/WCAG22/quickref/
mediumNavigation region "card" (present on www.capitalone.com) is missing on this page. Navigation should appear consistently across pages.WCAG 3.2.3
<!-- missing: nav#card-menu-container -->
Ensure the "card" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "bank" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "auto" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "businessOOF" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "commercial" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content. Ensure the "benefits" navigation region appears on all pages in the site. Consistent navigation helps users predict where to find content.
mediumClicking "How to calculate car loan interest?" inserts 1 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button data-hk="s4000021010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "[data-testid="open-account-menu"]" inserts 3 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button class="cursor-pointer" data-analytics-track-on="click" data-analytics-tag-key="BASE_HEADER_ACCOUNT_ICON" data-testid="open-account-menu" data-analytics-has-listener="true"><div><div data-hk="s
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumClicking "Cars for sale" inserts 2 element(s) without ARIA live region. Screen readers will not announce this dynamic content.WCAG 4.1.3
<button data-testid="make-tab-toggle-visibility-button" data-analytics-tag-key="BASE_HEADER_CARS_FOR_SALE" data-analytics-replacements="show" data-analytics-track-on="click" aria-expanded="false" clas
Wrap dynamically inserted content in an element with aria-live="polite" (or role="status"/"alert") so assistive technologies announce the change.
mediumPage requires horizontal scrolling at 320px width (21px overflow). Content should reflow without horizontal scrolling at this width.WCAG 1.4.10
<html>
Use responsive CSS (max-width, flex-wrap, media queries) to ensure content reflows at narrow widths.
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000021010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000020010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
mediumStuck loading state: aria-busy="true" on <button> persists after page readiness
<button data-hk="s4000022010010000" type="button" aria-expanded="false" data-closed="" class="group inline-flex w-full items-center justify-between border-2 border-transparent font-fsFontWeightSemibol
lowBroken link: https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&response_type=code&grant_type=authorization_code&scope=ncUniversalId%20openid&redirect_uri=https://ane.capitalone.com/protected/860354/auth returned status 404 Not Found after 1 attempts
<a href="https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&response_type=code&grant_type=authorization_code&scope=ncUniversalId%20openid&redirect_uri=https://ane.capitalone.com/protected/860354/auth">Sign in</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.