Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.FLink & Button QualityAction9 issue(s) across 237 links and 45 buttonsFIX
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://support.circleci.com/hc/en-us/ | Support portal | new tab | Add '(opens in new tab)' to text |
| https://discuss.circleci.com/ | Discuss forum | new tab | Add '(opens in new tab)' to text |
| https://support.circleci.com/hc/en-us/ | Support portal | new tab | Add '(opens in new tab)' to text |
| https://discuss.circleci.com/ | Discuss forum | new tab | Add '(opens in new tab)' to text |
| (empty) | empty | Add link text or aria-label | |
| http://circleci.com/blog/smarter-testing… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Smarter Testing | |||
| http://circleci.com/blog/smarter-testing… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Smarter Testing | |||
| https://circleci.com/blog/introducing-ch… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Introducing Chunk | |||
| https://circleci.com/product/mcp/ | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Mcp | |||
| https://circleci.com/blog/platform-toolk… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Platform Toolkit | |||
| https://circleci.com/docs/guides/deploy/… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Set Up Rollbacks | |||
| https://support.circleci.com/hc/en-us/ | Get support | new tab | Add '(opens in new tab)' to text |
| https://discuss.circleci.com/ | Discuss forum | new tab | Add '(opens in new tab)' to text |
| https://brand.circleci.com/613faff00/p/1… | CircleCI brand | new tab | Add '(opens in new tab)' to text |
| https://www.linkedin.com/company/circlec… | new tab | Add '(opens in new tab)' to text | |
| https://github.com/circleci | GitHub | new tab | Add '(opens in new tab)' to text |
| https://twitch.tv/circleci | Twitch | new tab | Add '(opens in new tab)' to text |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
Links without text are announced as raw URLs by screen readers.
Links with no accessible text (empty <a></a>, image-only no alt, icon-only no aria-label) are unidentifiable to screen readers.
Source: WCAG 2.1 SC 2.4.4
Generic link text like 'click here' doesn't describe the destination.
http://circleci.com/blog/smarter-testing/ ("Learn more"); http://circleci.com/blog/smarter-testing/ ("Learn more"); https://circleci.com/blog/introducing-chunk/ ("Learn more"); https://circleci.com/product/mcp/ ("Learn more"); https://circleci.com/blog/platform-toolkit/ ("Learn more"); https://circleci.com/docs/guides/deploy/set-up-rollbacks/ ("Learn more")
Generic anchor text ('click here', 'read more', 'learn more') tells screen readers and search engines nothing about the destination.
Learn more ▾ ▴
Out-of-context lists of links read by AT (one navigation pattern) become useless when every link says 'click here'. Use the destination's title or topic as anchor text. Doubles as SEO win — Google passes anchor-text relevance to the destination.
Source: WCAG 2.4.4 / Google Search Central
Add '(opens in new tab)' to link text or aria-label.
https://support.circleci.com/hc/en-us/; https://discuss.circleci.com/; https://support.circleci.com/hc/en-us/; https://discuss.circleci.com/; https://support.circleci.com/hc/en-us/; https://discuss.circleci.com/; https://brand.circleci.com/613faff00/p/14ba30-circleci-brand; https://www.linkedin.com/company/circleci; https://github.com/circleci; https://twitch.tv/circleci
Links with target="_blank" without rel="noopener" leak the originating page's window context — security and UX issue.
Learn more ▾ ▴
Without rel="noopener", the new tab can navigate the original tab via window.opener (tab-nabbing attack). Modern browsers default to noopener for target=_blank but only since recent versions. Always set rel="noopener noreferrer" explicitly.
Source: MDN target / OWASP
DDark Mode SupportActionTheme color onlyFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BLandmark Structure4 landmarksREVIEW
Multiple navigations need aria-label to distinguish them for screen readers.
Some <nav> elements lack aria-label — screen-reader users hear 'navigation' multiple times with no way to distinguish them.
Learn more ▾ ▴
When a page has multiple <nav> regions (primary, footer, breadcrumb), each needs aria-label or aria-labelledby. AT users navigate by landmark; identical 'navigation' announcements force them to enter each one to discover purpose.
Source: WAI-ARIA Authoring Practices
Add a skip link as the first focusable element so keyboard users can bypass repeated navigation.
Without a skip-nav link, keyboard users tab through every nav item before reaching content — every page, every visit.
Learn more ▾ ▴
WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip past repeated content. The standard implementation is a 'Skip to main content' link that's the first focusable element, visually hidden until focused. Three lines of HTML + four of CSS.
Source: WCAG 2.1 SC 2.4.1
CHeading HierarchyAction59 headings, 2 skip(s)REVIEW
- H3 (empty)
- H2 Overview
- H2 Features
- H2 Integrations
- H2 Role
- H2 Use case
- H2 Company size
- H2 Developers
- H2 Explore
- H2 Community
- H2 Benefits
- H2 Compare
- H2 Company
- H2 Overview
- H2 Features
- H2 Integrations
- H2 Role
- H2 Use case
- H2 Company size
- H2 Developers
- H2 Explore
- H2 Community
- H2 Benefits
- H2 Compare
- H2 Company
- H2 Explore
- H1 AI code make you nervous?
- H2 Trusted by
- H2 Confidence in every rollback prompt change test merge
- H2 Any app, deployed anywhere, at any scale
- H3 Confidence meets AI speed
- H3 No-think CI/CD
- H3 Scale without compromise
- H2 Ship at AI speed, confidently
- H2 Join 2mil+ devs
- H3 And get that green build feeling
- H2 Learn more
- H3 2025 State of Software Delivery
- H3 CircleCI onboarding toolkit
- H3 CircleCI delivers 664% ROI
- H1 97% faster test runs duplicate H1
- H3 Connect AI tools with the CircleCI MCP Server skipped
- H3 Platform Toolkit: Standardize at scale
- H3 Recover fast with rollback pipelines
- H2 Keep up with the latest releases
- H3 Docker Default Updated to Docker 28
- H3 Xcode 26.5.0 Beta 1 Available
- H3 Xcode 26.4.0 Available
- H3 GitHub Enterprise Server integration with CircleCI Cloud now available in Preview
- H3 Branch selector bug fixed in Chunk task page
- H3 Product Roadmap
- H3 Key milestones
- H2 >build the future
- H6 Product skipped
- H6 Hosting options
- H6 Solutions
- H6 Resources
- H6 Pricing
- H6 Company
A page should have only one H1. Multiple H1s dilute the document outline.
Multiple H1s blur the page's primary topic — screen-reader users and Google both prefer one H1.
Learn more ▾ ▴
HTML5's outline algorithm technically allows multiple H1s within sectioning content, but no browser implements it. In practice: one H1 per page. Use H2-H6 for subsections.
Source: WCAG 2.4.6 / Google Search Central
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Empty headings appear in the document outline but provide no information.
Empty <hN> tags break the document outline — screen-reader users navigating by heading hit dead silence.
Source: WCAG 2.4.6
CForm AccessibilityAction4 of 5 controls have issuesREVIEW
| Control | Type | Label | Method |
|---|---|---|---|
| input | search | Search | aria-label |
| #CybotCookiebotDialogBodyLevelButtonPreferences | checkbox | (none) | none |
| #CybotCookiebotDialogBodyLevelButtonStatistics | checkbox | (none) | none |
| #CybotCookiebotDialogBodyLevelButtonMarketing | checkbox | (none) | none |
| #CybotCookiebotDialogBodyLevelButtonNecessary | checkbox | (none) | none |
Form controls need a <label>, aria-label, or aria-labelledby for screen readers.
<input type="checkbox" id="CybotCookiebotDialogBodyLevelButtonNecessary">; <input type="checkbox" id="CybotCookiebotDialogBodyLevelButtonPreferences">; <input type="checkbox" id="CybotCookiebotDialogBodyLevelButtonStatistics">; <input type="checkbox" id="CybotCookiebotDialogBodyLevelButtonMarketing">
Form controls without labels — assistive tech announces 'edit text' with no context; users can't complete forms.
Source: WCAG 2.1 SC 3.3.2
B404 Error PageHTTP 404, custom pageREVIEW
BFavicon & Branding10 icon(s) detectedREVIEW
A+Alt Text QualityAll 45 images OKPASS
A+Web ManifestPWA-readyPASS
A+Color Contrast (Screenshot)20 text elements analyzed, 0 fail WCAG AAPASS
Analyzes text contrast against the actual rendered page, including background images, gradients, and overlays that CSS-based tools cannot detect.
Show all checked elements (20)
| Element | Ratio | Required | FG | BG | Result |
|---|---|---|---|---|---|
| h1 AI code make you ner… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h1 97% faster test runs | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Overview | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Features | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Integrations | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Role | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Use case | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Company size | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Developers | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Explore | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Community | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Benefits | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Compare | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Company | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Overview | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Features | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Integrations | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Role | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Use case | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Company size | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
Methodology: The top 20 text elements by font size were checked. Background color was sampled from the desktop screenshot using a 5-point pattern. WCAG 2.1 AA requires 4.5:1 for normal text and 3:1 for large text.
ALighthouse Accessibility AuditsScore 94/100 — 1 failing, 23 passedPASS
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
Best practices
Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. Learn more about the viewport meta tag.
Informational: a Permissions-Policy directive showing feature -> allowed origins.
Source: MDN Permissions-Policy
| Failing Elements |
|---|
head > meta head > meta |
These items highlight common accessibility best practices.