Capital One — Score 989 | Sonde

Sonde

Accessibility Health Check

https://capitalone.com

Excellent

April 28, 2026

Provided free by Sonde

14pages79findings2critical15high54medium8low5.6avg/page1,994elements73with findings96.3%ECR3m 21stotal14.3sper page

Excellent

Executive Summary

14pages79findings5.6avg/page1,994elements73with findings96.3%ECR3m 21stotal14.3sper page

Top Findings

Copy a direct link to share a finding Open a discussion to give feedback on a finding

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
Element:
<a class="site-L2__tabbable ng-star-inserted" href="/credit-cards/" target="_self">Credit card overview</a>
Sonde Fix Plan

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
Element:
<nav role="nav">Cars for saleNew cars for saleUsed cars </nav>
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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.
Page: /
Source: https://onetms.capitalone.com/ot/ot.js:7medium
Sonde Fix Plan

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 Add Referrer-Policy: strict-origin-when-cross-origin or no-referrer

highConsole warning: Newrelic action queued -> setCustomAttribute: app-version 0.1.678 (2 occurrences)
Source: https://www.capitalone.com/cars/ocb-ui/search-assets/logger.BmHwsxRQ.js:0medium
Sonde Fix Plan

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 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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- 2 navigation landmarks, 0 labeled -->
Sonde Fix Plan

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
Element:
<!-- 2 contentinfo landmarks, 0 labeled -->
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row">
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="ods-input-1" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Password</label>
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c2667954597="" class="card-overlay">
Sonde Fix Plan

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
Page: /
Element:
<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 ...
Sonde Fix Plan

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
Page: /
Element:
<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-...
Sonde Fix Plan

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
Page: /
Element:
<img _ngcontent-web-shell...="" alt="FDIC-Insured - Backe..." lang="en-US" src="data:image/png;base6..." class="gds-fdic-sign gds-fd...">
Sonde Fix Plan

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
Page: /
Element:
<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 ...
Sonde Fix Plan

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
Page: /
Element:
<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_...
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<input _ngcontent-web-shell-c2931505271="" type="checkbox" id="rememberMe" name="rememberMe" class="rem-checkbox ng-untouched ng-pristine ng-valid" data-initial-value="">
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell...="" role="tabpanel" class="feature-image active..." id="activeImage0" aria-labelledby="tab0" style="background-image: ur...">
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c347514875="" role="tablist" class="interactive-features-tablist">
Sonde Fix Plan

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
Page: /
Element:
<a _ngcontent-web-shell-c1855419180="" href="#default-id" class="site-header__skip-nav"> Skip to main content
</a>
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="rememberMe" class="grv-shr-lib-text__body--tiny">Remember me</label>
Sonde Fix Plan

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
Page: /
Element:
<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...
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c2931505271="" class="grv-shr-lib-col--sm-2 login-field ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<html lang="en">
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="ods-input-0" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Username</label>
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c553998024="" class="grv-shr-lib-row ng-tns-c553998024-0">
Sonde Fix Plan

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.
Element:
<footer class="bg-FsClrBrandPaletteMidnight font-sans text-white">
Sonde Fix Plan

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
Element:
<footer>
Sonde Fix Plan

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
Element:
<nav class="hidden xl:flex order-2">
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/fair-and-building/" target="_self"><span class="heading">Credit Building</span></a>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/cash-back/" target="_self"><span class="heading">Cash Back Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/travel-and-miles/" target="_self"><span class="heading">Travel Rewards</span></a>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/students/" target="_self"><span class="heading">Student Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/small-business/credit-cards/" target="_self"><span class="heading">Business Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="sub-heading-link" href="/credit-cards/students/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair</span></a>
Sonde Fix Plan

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
Element:
<!-- missing: nav#card-menu-container -->
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Page: /
Element:
<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
Sonde Fix Plan

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
Element:
<html>
Sonde Fix Plan

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
Element:
<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
Element:
<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
Element:
<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
Page: /
Element:
<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
Page: /
Element:
<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
Page: /
Element:
<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
Page: /
Element:
<a href="https://www.x.com/askcapitalone">Reach @AskCapitalOne</a>
lowLink timeout: unsafe:javascript:void(0); did not respond within 5000ms after 8 attempts
Page: /
Element:
<a href="unsafe:javascript:void(0);">Benefits &amp; Tools</a>
lowBroken link: https://x.com/capitalone/ returned status 403 Forbidden after 1 attempts
Page: /
Element:
<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
Element:
<a href="https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&amp;response_type=code&amp;grant_type=authorization_code&amp;scope=ncUniversalId%20openid&amp;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
Element:
<a class="site-L2__tabbable ng-star-inserted" href="/credit-cards/" target="_self">Credit card overview</a>
Sonde Fix Plan

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.
Page: /
Source: https://onetms.capitalone.com/ot/ot.js:7medium
Sonde Fix Plan

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 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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="generic" -->
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c347514875="" class="grv-shr-lib-row">
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="ods-input-1" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Password</label>
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c2667954597="" class="card-overlay">
Sonde Fix Plan

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
Page: /
Element:
<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 ...
Sonde Fix Plan

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
Page: /
Element:
<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-...
Sonde Fix Plan

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
Page: /
Element:
<img _ngcontent-web-shell...="" alt="FDIC-Insured - Backe..." lang="en-US" src="data:image/png;base6..." class="gds-fdic-sign gds-fd...">
Sonde Fix Plan

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
Page: /
Element:
<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 ...
Sonde Fix Plan

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
Page: /
Element:
<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_...
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<shared-cms-base-shared-component id="meet-capital-one" tabindex="-1" style="scroll-margin-top: 68px; display: block;" class="legacy-component ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<input _ngcontent-web-shell-c2931505271="" type="checkbox" id="rememberMe" name="rememberMe" class="rem-checkbox ng-untouched ng-pristine ng-valid" data-initial-value="">
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell...="" role="tabpanel" class="feature-image active..." id="activeImage0" aria-labelledby="tab0" style="background-image: ur...">
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c347514875="" role="tablist" class="interactive-features-tablist">
Sonde Fix Plan

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
Page: /
Element:
<a _ngcontent-web-shell-c1855419180="" href="#default-id" class="site-header__skip-nav"> Skip to main content
</a>
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="rememberMe" class="grv-shr-lib-text__body--tiny">Remember me</label>
Sonde Fix Plan

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
Page: /
Element:
<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...
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c2931505271="" class="grv-shr-lib-col--sm-2 login-field ng-star-inserted">
Sonde Fix Plan

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
Page: /
Element:
<html lang="en">
Sonde Fix Plan

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
Page: /
Element:
<label _ngcontent-web-shell-c2931505271="" for="ods-input-0" class="grv-shr-lib-textfield__label grv-shr-lib-text__body--tiny">Username</label>
Sonde Fix Plan

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
Page: /
Element:
<div _ngcontent-web-shell-c553998024="" class="grv-shr-lib-row ng-tns-c553998024-0">
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/fair-and-building/" target="_self"><span class="heading">Credit Building</span></a>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/cash-back/" target="_self"><span class="heading">Cash Back Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/travel-and-miles/" target="_self"><span class="heading">Travel Rewards</span></a>
Sonde Fix Plan

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
Element:
<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>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/credit-cards/students/" target="_self"><span class="heading">Student Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="site-L2__tabbable" href="/small-business/credit-cards/" target="_self"><span class="heading">Business Rewards</span></a>
Sonde Fix Plan

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
Element:
<a class="sub-heading-link" href="/credit-cards/students/" target="_self" tabindex="-1"><span class="sub-heading">Credit Level: Fair</span></a>
Sonde Fix Plan

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
Page: /
Element:
<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
Sonde Fix Plan

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
Page: /
Element:
<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
Page: /
Element:
<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
Page: /
Element:
<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
Page: /
Element:
<a href="https://www.x.com/askcapitalone">Reach @AskCapitalOne</a>
lowLink timeout: unsafe:javascript:void(0); did not respond within 5000ms after 8 attempts
Page: /
Element:
<a href="unsafe:javascript:void(0);">Benefits &amp; Tools</a>
lowBroken link: https://x.com/capitalone/ returned status 403 Forbidden after 1 attempts
Page: /
Element:
<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
Element:
<nav role="nav">Cars for saleNew cars for saleUsed cars </nav>
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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
Element:
<!-- a11y: role="image" -->
Sonde Fix Plan

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)
Source: https://www.capitalone.com/cars/ocb-ui/search-assets/logger.BmHwsxRQ.js:0medium
Sonde Fix Plan

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 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
Element:
<!-- 2 navigation landmarks, 0 labeled -->
Sonde Fix Plan

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
Element:
<!-- 2 contentinfo landmarks, 0 labeled -->
Sonde Fix Plan

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.
Element:
<footer class="bg-FsClrBrandPaletteMidnight font-sans text-white">
Sonde Fix Plan

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
Element:
<footer>
Sonde Fix Plan

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
Element:
<nav class="hidden xl:flex order-2">
Sonde Fix Plan

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
Element:
<!-- missing: nav#card-menu-container -->
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Element:
<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
Sonde Fix Plan

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
Element:
<html>
Sonde Fix Plan

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
Element:
<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
Element:
<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
Element:
<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
Element:
<a href="https://api.capitalone.com/oauth2/authorize?client_id=ae59503b7657fa6154be7bb44f48bc01&amp;response_type=code&amp;grant_type=authorization_code&amp;scope=ncUniversalId%20openid&amp;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.

Score = round(1000 × S / (S + P/N))

where S = sensitivity (750), P = Σ(weight × count), N = pages scanned

TierWeightExamples
Critical10Keyboard traps, missing page language
High3Missing alt text, insufficient contrast
Medium1Heading hierarchy, unclear link purpose
Low0.25Best-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.

Nominate a Site →

This report is a health check, not a verdict. Every website has room to improve.

Disclaimer: This report presents the results of automated accessibility analysis and is provided free of charge, as-is, without warranty of any kind. Findings are generated by software, not by human accessibility experts, and may contain errors or omissions. Automated testing can detect approximately 30–40% of accessibility issues; manual expert evaluation is recommended for complete conformance assessment. Scores reflect algorithmic analysis under a published methodology open to public review — they are not legal determinations of compliance. Results reflect the state of the website at the time of scanning and may change as the site is updated. Nothing in this report constitutes legal advice. Sonde assumes no liability for decisions made based on these results.

Compliance methodology: NIST 800-53 Rev 5 (usnistgov/oscal-content v1.4.0, catalog 5.2.0) · NIST PRIVACY overlay (usnistgov/oscal-content v1.4.0, catalog 5.2.0) · FedRAMP Rev 5 (OSCAL-Foundation/fedramp-resources a6b85ed451, catalog fedramp-3.0.0rc1-oscal-1.1.2).