The 10 Confirmed Findings
Each was re-measured on the live page. The evidence column is what we observed, not what a scanner reported.
SC 2.1.1 Keyboard (Level A)
The back-to-top control cannot be reached or operated by keyboard.
What we measured: The control is a <div class="o-angle-up-1"> carrying an onclick handler. Measured on the live page: no tabindex, no role, no accessible name, and no focusable descendant anywhere inside its #pagetop container. It is reachable by mouse only.
Fix: Use a <button> element, or add tabindex="0", a role, an accessible name, and a keyboard activation handler.
Impact: Real but contained. The control scrolls to the top, which a keyboard user can already do with Home or Ctrl+Home, so no task is blocked. We rate it moderate rather than serious for that reason.
SC 2.4.3 Focus Order (Level A)
Ten elements carry positive tabindex values; four of them reach the tab order and take it over.
What we measured: Ten elements in the served markup carry tabindex greater than zero; six sit inside a hidden container and never render. A real 16-press tab walk from the start of the document gives stops 1-4 as a#uscb-nav-skip-header (1), img#thumbsup (1), img#thumbsdown (2), div#CloseThumbs (3) - so the lower-right feedback widget is reached at tab stop 2, ahead of the main navigation, and only reaches the page proper at stop 5.
Fix: Remove the positive values and let DOM order govern. Where an element must come first, move it earlier in the source.
Impact: A keyboard user who does not take the skip link lands next on a corner feedback widget rather than the page content.
SC 4.1.2 Name, Role, Value (Level A)
Two content iframes have no title attribute.
What we measured: The page carries four iframes and three have no title. The two that render content - populationwidget.php and econwidget?noheader - both return title=null. Of the two that do not render, one (Adobe ID syncing) carries a title and one has neither src nor title.
Fix: Add a title to each iframe describing the embedded content, e.g. title="U.S. and world population clock".
Impact: Screen reader users get "frame" with no indication of what the embedded widget contains.
SC 1.3.1 Info and Relationships (Level A)
Seven list items sit inside a <span> rather than a list container.
What we measured: Seven li.uscb-multi-col-list-item elements have span.uscb-link-list as their direct parent: Data Profiles, America Counts, 2026 Census Test, 2030 Census, Verify a Survey, Annual Integrated Economic Survey, 2020 Census Results. (A page-wide count of list items outside a list parent returns eight; the eighth is a different element with a different class and parent, and is not part of this finding.)
Fix: Wrap them in <ul>, or put role="list" on the span.
Impact: Assistive technology does not announce these as a list or give item counts, so users lose the "3 of 7" orientation a list provides.
SC 1.3.1 Info and Relationships (Level A)
All six navigation landmarks are unlabelled. (Advisory: best practice, not a normative failure.)
What we measured: Six nav / role="navigation" regions on the page; none carries aria-label or aria-labelledby.
Fix: Give each an aria-label describing its purpose, e.g. "Main", "Utility", "Footer".
Impact: A screen reader user listing landmarks hears "navigation" six times with no way to tell them apart. We flag this as advisory rather than a hard 1.3.1 failure: there is no W3C Failure technique for unlabelled duplicate landmarks, and a developer would be within their rights to push back on it as best practice. It is listed because it is real and cheap to fix, not because it would sink a review.
SC 1.3.5 Identify Input Purpose (Level AA)
The email signup field has no autocomplete attribute.
What we measured: input[type="email"][name="email"] inside form#GD-snippet-form returns autocomplete=null.
Fix: Add autocomplete="email".
Impact: Users relying on autofill, including people with motor and cognitive disabilities, do not get the field populated.
SC 2.5.8 Target Size (Minimum) (Level AA)
One social share icon is undersized and does not qualify for the spacing exception.
What we measured: The Facebook icon measures 20x35 CSS pixels; the four beside it are 35x35. SC 2.5.8 exempts an undersized target when a 24px-diameter circle centred on it does not intersect another target. Centred at x=515, that circle reaches x=527, and the neighbouring icon’s box begins at x=525. It intersects by 2px, so the exception does not apply.
Fix: Give the icon min-width: 24px, or add 2px of horizontal clearance from its neighbour.
Impact: Minor, and worth showing the arithmetic for: this one turns on a 2px margin, which is exactly the kind of call that gets waved through in both directions without measurement.
SC 1.3.1 Info and Relationships (Level A)
The embedded economic-indicators document starts its heading structure at h6.
What we measured: Our first pass dismissed a reported h2-to-h6 skip because a heading walk of the page found no skipped levels. That walk stopped at the iframe boundary and could not have found it. Entering the frames: the top document ends that region with h2 "U.S. Economic Indicators", and the econwidget?noheader frame directly beneath it contains four h6 headings ("Homeownership Rate", "Rental Vacancy Rate", and two more) with no h1-h5 above them in that document.
Fix: Start the embedded document at h2, or set the widget headings to the level that follows its host context.
Impact: A screen reader user navigating the embedded frame by heading level lands on h6 items with nothing above them. Worth saying plainly: the scanner was right about this one and our first verification pass was wrong, because it only looked at the top-level document.
SC 4.1.2 Name, Role, Value (Level A)
The Yes/No controls in the feedback widget are bare spans with no role and no keyboard access.
What we measured: The single <center> element on the page is the rating widget. Its four children are img#thumbsup (tabindex 1, alt "Thumbs Up Image"), span#yes, img#thumbsdown (tabindex 2, alt "Thumbs Down Image") and span#no. The two spans carry no role, no tabindex and no accessible name beyond their text, yet they are the labelled Yes and No choices; the images beside them are the operable controls and expose only an img role.
Fix: Make each choice a <button> with an accessible name, or give the spans a button role, tabindex and key handling, and pair the images with them via aria-labelledby.
Impact: Assistive technology announces two images and two pieces of text where a user needs two clearly named buttons. We had originally dismissed this as an obsolete-<center> false positive - the tag really is irrelevant, but a real defect was sitting inside the element that was flagged.
SC 1.1.1 Non-text Content (Level A)
A banner image has no alt attribute at all.
What we measured: img.uscb-banner-alert-promo-image (freedom-250-icon.png, 50x50, visible, not inside a link) has no alt attribute, no role, and no aria-hidden.
Fix: From its context the icon is decorative, so alt="" is the correct fix rather than descriptive text.
Impact: Minor. With no alt attribute some assistive technology announces the filename; alt="" makes it silent as intended.