Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.F404 Error PageActionHTTP 403, bare pageFIX
DWeb ManifestActionNot foundFIX
No web manifest found.
DDark Mode SupportActionNo dark mode signalsFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BLandmark Structure48 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
BHeading Hierarchy39 headings, 1 skip(s)REVIEW
- H1 Think Progress Header Logo
- H3 Topics Menu skipped
- H3 More Menu
- H2 CNN’s planning a 2020 LGBTQ forum. Here are some issues advocates say the candidates should address.
- H2 It wasn’t a debate, but CNN’s 7-hour climate forum laid bare key differences among Democrats
- H2 GOP candidate has a pretty hypocritical excuse for why he’s down in the polls
- H2 To build Trump’s border wall, Pentagon will divert funds from military schools and day cares
- H2 Trump describes Boris Johnson as someone who ‘knows how to win’ after historic Parliament defeats
- H2 Trump’s Fox & Friends pals finally concede Mexico ain’t paying for that wall
- H2 The Trump administration plans to gut food stamps, hitting red states hardest
- H2 Kristen Stewart’s experience is emblematic of LGBTQ people’s struggles in Hollywood
- H2 Boris Johnson’s Brexit plans have been derailed, thanks to members of his own party
- H2 Dan Crenshaw is worried that universal background checks might keep him from arming his friends
- H2 Texas congressman’s retirement points to a tough 2020 for House Republicans
- H2 Alabama governor’s blackface scandal shows GOP’s hypocrisy
- H2 House Democrats turn their attention to Donald Trump’s involvement in hush-money payments
- H1 Climate duplicate H1
- H2 Hurricane Dorian’s nightmarishly slow pace is linked to climate change
- H2 Hurricane Dorian’s impacts could be resounding — here’s what to watch for
- H2 Even Big Oil doesn’t like the EPA’s methane rollback
- H2 Trump takes money from FEMA for border wall with Puerto Rico set for major storm
- H2 Trump moves to allow logging in the world’s largest intact temperate rainforest
- H2 Trump repeats relief funding lie as Tropical Storm Dorian approaches Puerto Rico
- H2 Brazil rejects G7’s already minuscule aid package to help combat raging fires in the Amazon
- H2 Trump skips G7 climate meeting as the Amazon burns
- H2 The impact of Jay Inslee’s climate-focused 2020 candidacy
- H2 Agriculture’s role in climate change draws scrutiny from 2020 Democrats
- H2 Wealthy nations won’t be spared economic climate impacts, new study finds
- H2 Tribe raises stakes in Dakota Access pipeline fight amid surge in Democratic 2020 support
- H2 ‘Only you know if we did it’: Scientists write dire letter to the future about climate change
- H2 House Democrats will consider bill to block HUD rule allowing anti-trans shelter discrimination
- H2 How ‘Straight Pride’ parades like the one in Boston mask a far-right agenda
- H2 Taylor Swift reminded us that the Equality Act would bolster LGBTQ rights
- H2 NRA melts down over Walmart decision to reduce its ammo sales
- H2 Mitch McConnell suggests Trump cannot be trusted to mean what he says on guns
- H2 Native votes went missing in North Carolina. Tribal leaders vow that won’t happen again next week.
- H2 Black kids in Missouri are being shot down in unspeakable numbers
- H2 Exposed for 1967 blackface skit, Alabama governor issues written statement rather than face cameras
- H2 Did Gillibrand’s push for Al Franken’s resignation doom her 2020 White House run?
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
BForm Accessibility2 of 2 controls have issuesREVIEW
| Control | Type | Label | Method |
|---|---|---|---|
| s | search | (Search) | placeholder only |
| s | search | (Search) | placeholder only |
Placeholder text disappears on focus and is not a reliable label.
<input type="search" name="s">; <input type="search" name="s">
Placeholder-only labels disappear when the user starts typing — they must remember what the field was for.
Learn more ▾ ▴
Placeholders are NOT labels. They vanish on input, fail color contrast checks (most are gray), and don't satisfy WCAG SC 3.3.2. Always use a real <label> alongside (or aria-labelledby).
Source: WCAG 2.1 SC 3.3.2 / Nielsen Norman
CFavicon & BrandingAction3 icon(s) detectedREVIEW
CColor Contrast (Screenshot)Action20 text elements analyzed, 5 fail WCAG AAREVIEW
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 |
|---|---|---|---|---|---|
| h3 Topics Menu | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 More Menu | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| title ThinkProgress | 1.00:1 | 4.5:1 | #000000 | #000000 | Fail |
| a Contact Us | 1.00:1 | 4.5:1 | #000000 | #000000 | Fail |
| span Facebook | 1.00:1 | 4.5:1 | #000000 | #000000 | Fail |
| span Twitter | 1.00:1 | 4.5:1 | #000000 | #000000 | Fail |
| span Youtube | 1.00:1 | 4.5:1 | #000000 | #000000 | Fail |
| span Instagram | 7.37:1 | 4.5:1 | #000000 | #999999 | Pass |
| a Latest Stories | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Facebook | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Twitter | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Youtube | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Instagram | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Video | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a ClimateProgress | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Politics | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Immigration | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a World | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Health Care | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Open More Menu | 21.00:1 | 4.5: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.
AAlt Text QualityAll 24 images OKPASS
| Issue | Count |
|---|---|
| too long | 15 image(s) |
ALink & Button Quality143 links, 5 buttons — all OKPASS
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://www.facebook.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://twitter.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://www.youtube.com/thinkprogress | Youtube | new tab | Add '(opens in new tab)' to text |
| https://www.instagram.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://www.facebook.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://twitter.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://www.youtube.com/thinkprogress | Youtube | new tab | Add '(opens in new tab)' to text |
| https://www.instagram.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://www.facebook.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://twitter.com/thinkprogress | new tab | Add '(opens in new tab)' to text | |
| https://www.youtube.com/thinkprogress | Youtube | new tab | Add '(opens in new tab)' to text |
| https://www.instagram.com/thinkprogress | new tab | Add '(opens in new tab)' to text |
Add '(opens in new tab)' to link text or aria-label.
https://www.facebook.com/thinkprogress; https://twitter.com/thinkprogress; https://www.youtube.com/thinkprogress; https://www.instagram.com/thinkprogress; https://www.facebook.com/thinkprogress; https://twitter.com/thinkprogress; https://www.youtube.com/thinkprogress; https://www.instagram.com/thinkprogress; https://www.facebook.com/thinkprogress; https://twitter.com/thinkprogress (+2 more)
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
ALighthouse Accessibility AuditsScore 90/100 — 3 failing, 21 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.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Advertisement div#primary > main#main > div.ad-wrapper > div.ad-label |
SEP 4, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 4, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 4, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 4, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 4, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 3, 2019 header.post__header > div.post__meta > a > time.post__date |
Advertisement div#primary > main#main > div.ad-wrapper > div.ad-label |
AUG 26, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 22, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 21, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 20, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 19, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 18, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 3, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 31, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 27, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 3, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 3, 2019 header.post__header > div.post__meta > a > time.post__date |
SEP 3, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 31, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 29, 2019 header.post__header > div.post__meta > a > time.post__date |
AUG 29, 2019 header.post__header > div.post__meta > a > time.post__date |
Information from your device can be used to personalize your ad experience.
Do… body.home > div.adthrive-comscore > div#adthrive-ccpa-link |
These are opportunities to improve the legibility of your content.
Navigation
Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Topics Menu div.header-site__secondary-menus > div.header-site__secondary-menus-inner > div.header-site__topics-menu > h3.screen-reader-text |
These are opportunities to improve keyboard navigation in your application.
Best practices
Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. Learn more about touch targets.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
CASEY QUINLAN div.post__meta > span.post__byline > span.author > a.url |
LUKE BARNES div.post__meta > span.post__byline > span.author > a.url |
JOSH ISRAEL div.post__meta > span.post__byline > span.author > a.url |
JOSH ISRAEL div.post__meta > span.post__byline > span.author > a.url |
JOSH ISRAEL div.post__meta > span.post__byline > span.author > a.url |
ADAM PECK div.post__meta > span.post__byline > span.author > a.url |
E.A. CRUNDEN div.post__meta > span.post__byline > span.author > a.url |
E.A. CRUNDEN div.post__meta > span.post__byline > span.author > a.url |
E.A. CRUNDEN div.post__meta > span.post__byline > span.author > a.url |
E.A. CRUNDEN div.post__meta > span.post__byline > span.author > a.url |
E.A. CRUNDEN div.post__meta > span.post__byline > span.author > a.url |
JOE ROMM div.post__meta > span.post__byline > span.author > a.url |
JOSH ISRAEL div.post__meta > span.post__byline > span.author > a.url |
JOSH ISRAEL div.post__meta > span.post__byline > span.author > a.url |
DANIELLE MCLEAN div.post__meta > span.post__byline > span.author > a.url |
KAY WICKER div.post__meta > span.post__byline > span.author > a.url |
ALAN PYKE div.post__meta > span.post__byline > span.author > a.url |
CASEY QUINLAN div.post__meta > span.post__byline > span.author > a.url |
These items highlight common accessibility best practices.