Accessibility Conformance Report

brianbeals.com · VPAT® 2.5 WCAG Edition · October 11, 2026

Superseded. This is the second report dated October 11, 2026, as issued. The current report is the October 17, 2026 re-evaluation, made after three service pages, among them the site's first form, were added and the page headings were rebuilt. Since issue, this page has moved to its own address and gained a distinct title and this notice. The evaluation is unchanged.

Product and vendor information

Product
brianbeals.com
Report date
October 11, 2026
Vendor
Brian Beals, LLC
Contact
brian@brianbeals.com
Pages evaluated
34
Scan date
2026-10-11

Changes since the prior report

This report is a re-evaluation. The prior report is dated October 11, 2026, published at https://brianbeals.com/conformance-report-2026-10-11.html. Every page and document below was evaluated again against the site as it stood on October 11, 2026.

What changed on the site

What changed in the verdicts

What the screen reader pass added

No new hand pass. The pass by Brian Beals on October 8, 2026 across 12 page(s), cited in the prior report, is carried forward; any re-listening or scripted runs since are in the method line. The criteria it decides:

Applicable standards

WCAG 2.1 Level A and AA, all 50 criteria. Section 508 incorporates WCAG 2.0 Level AA, a strict subset, so conformance below satisfies it. ADA Title II adopts WCAG 2.1 Level AA directly. Level AAA was not evaluated.

Evaluation methods used

Screen reader testing

Screen reader results by page
PageWhat was testedResultNotes
/reading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply on October 8. Re-heard by Brian Beals on October 10 after the page was reorganized, heading outline included, with no problem found; the scripted capture the same day agrees.
/aboutreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply.
/accessibilityreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply on October 8. Re-heard by Brian Beals on October 10 after the Services and Common questions sections were added, heading outline included, with no problem found; the scripted capture the same day agrees.
/accessibility/healthcarereading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply.
/contactreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply.
/documentsreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply.
/writingreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply on October 8. On October 11 the page gained a topic filter, four toggle buttons with a status message. Brian Beals re-heard it by ear with VoiceOver; each button announced as a toggle button with its state, and each press announced the count shown. The scripted capture the same day agrees.
/writing/who-could-afford-to-find-outreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply. The mark check crossed the header lockup, where no mark is announced. The essay byline's mark further down was exposed as an image named "Brian Beals" at the time of the pass and was hidden after it; that change is verified in the accessibility tree, not by ear.
/writing/eight-of-twenty-sixreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassAdded October 11, the first essay with the practice byline and a topic caption. Every check passed or did not apply.
/sitemap-pagereading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply.
/conformance-report.htmlreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply. Tested as published on the morning of October 8, 2026, which was the August 30 report. This re-evaluation is generated from the same template with three additions: the changes section, the screen reader table, and a site map link in the footer.
/capability-statement-accessibility.htmlreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply. A standalone document: banner, main and contentinfo landmarks, no navigation landmark.
/capability-statement-state-local.htmlreading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announcedPassEvery check passed or did not apply. A standalone document: banner, main and contentinfo landmarks, no navigation landmark.
/tools/voice-critiquereading from the top, the skip link, landmark navigation, heading navigation, the links list, how the brand mark is announced, the button and its status messagePassAdded October 10, the one template with a button and a status message. Captured by script with VoiceOver in Safari and NVDA in Edge and Chrome; every check passed or did not apply in all three. On Copy prompt each reader announced "Prompt copied to the clipboard" from a status region on every press, a second press included, while focus stayed on the button. On October 11 Brian Beals listened by ear in NVDA with Edge and heard Copy prompt announced and the message on every press.

Scope. The sample is the public site; /login, the sign-in page, and /tools/account-intel, which requires sign-in, are outside the evaluation. Screen reader testing covered 14 pages, one per template, so every page on the site shares a template with a tested page. Two readers on two operating systems, by hand and by scripted capture: VoiceOver on macOS 27.0 in Safari 27.0.1, NVDA 2026.2 on Windows 11 in Edge 155 and Chrome 155. The two readers agreed on every check both heard. JAWS and mobile screen readers were not used. The site has no mobile app; VoiceOver on iOS and macOS read the same WebKit accessibility tree, and TalkBack and NVDA read the same one Chrome builds.

WCAG 2.1 Level A

Success criteria, Level A
CriterionLvlConformanceRemarks and explanations
1.1.1 Non-text ContentASupportsEvery content image carries descriptive alt text: the principal's photograph on the about page, and five wildlife and travel photographs on /elsewhere. On the home page the same photograph is decorative and hidden, because the bio beside it opens with his name and VoiceOver read the name twice in the October 10 capture. The BB brand mark is hidden from assistive technology wherever it appears, because it sits beside text that already names the company. The essay byline was the exception: its mark was exposed as an image named "Brian Beals" directly before a byline beginning with the same name, so the name was announced twice. Hidden on October 8, 2026 and re-checked in the accessibility tree. The SBA service-disabled veteran-owned certification mark, added October 11 to every page footer and to the firm block on /accessibility, carries meaning on its own and is exposed as an image with the alt text "SBA certified service-disabled veteran-owned small business"; VoiceOver announced it that way on the home page and /accessibility in the October 11 capture. https://brianbeals.com: image?url=%2Fbrian-beals.jpg&w=256&q=75 marked decorative https://brianbeals.com/accessibility: svg%3E marked decorative https://brianbeals.com/accessibility/healthcare: svg%3E marked decorative
1.2.1 Audio-only and Video-only (Prerecorded)ANot ApplicableNo audio or video elements across 34 pages.
1.2.2 Captions (Prerecorded)ANot ApplicableNo audio or video elements across 34 pages.
1.2.3 Audio Description or Media AlternativeANot ApplicableNo audio or video elements across 34 pages.
1.3.1 Info and RelationshipsASupportsLandmarks on every page, one h1 per page, and no heading level skips across all 29 pages. Lists, definition lists, tables, the quotation on /accessibility/healthcare and the preformatted blocks on /writing/sixty-cents-a-year and /tools/voice-critique all use the matching element. No bold or oversized text stands in for a heading and no typed bullet stands in for a list, including in the three essays published since the prior report. One capability statement had a span inside a definition list; fixed October 8, 2026 and rescanned. All six published documents are tagged, declare a language, carry a usable title, and label their figures. Screen reader: Landmarks and headings walked with the rotor on all 12 pages: each landmark announced once, exactly one level 1 heading per page, no skipped levels. On October 10 the scripted capture heard the same on all 12 pages, including the reorganized home page and /accessibility, and on /tools/voice-critique. Landmarks present, one h1 per page, no heading level skips. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion.
1.3.2 Meaningful SequenceASupportsSettled by listening. On October 8, 2026 Brian Beals read the newest essay, /writing/who-could-afford-to-find-out, and /capability-statement-accessibility-healthcare.html straight through with VoiceOver on macOS 27 in Safari; the spoken order carries the same meaning as the visual layout, including the statement's main column then sidebar. The August 29, 2026 pass read the prior page set the same way. The remaining pages were re-checked on October 8 by comparing source order with visual order: no CSS reordering anywhere, and the keyboard pass moved strictly down every page. The listen also found that a sentence period inside bold text made VoiceOver spell the following word; that is not a sequence failure, and the pattern was removed from the site the same day. Not determinable by scanning.
1.3.3 Sensory CharacteristicsASupportsNo instruction depends on shape, size, position, or sound. Every positional word on the 29 pages either describes prose rather than instructing, or points to content that follows in reading order, as in "copy the prompt below" on /tools/voice-critique, where the prompt is the next item and the button is named Copy prompt. Not determinable by scanning.
1.4.1 Use of ColorASupportsColor is never the sole carrier of meaning. Links inside running text are underlined. The links on /writing are whole cards (title, date, summary) in a list rather than links inside a sentence, so there is no surrounding text that color would have to distinguish them from. No status or category is shown by color without a text label. Not determinable by scanning.
1.4.2 Audio ControlANot ApplicableNo audio or video elements across 34 pages.
2.1.1 KeyboardASupportsEvery interactive element is a native link or button, and each was reached by Tab on all 29 pages. The one button, Copy prompt on /tools/voice-critique, is native, and the scrollable prompt beside it takes focus so it can be scrolled from the keyboard. No click handlers sit on non-interactive elements. All interactive elements are native and focusable.
2.1.2 No Keyboard TrapASupportsOn each of the 29 pages, Tab was pressed from the top through every focusable element until focus left the page, then Shift+Tab walked back the same way. Focus never stuck. No page carries a modal, an iframe, or a third-party embed. Not determinable by scanning.
2.1.4 Character Key ShortcutsANot ApplicableNo single-character key shortcuts. The site's source registers no keyboard handler of its own on any page. Not determinable by scanning.
2.2.1 Timing AdjustableANot ApplicableNo time limits. No session timeout, auto-advancing content, meta refresh, or media anywhere. The Copy prompt button's label reverts two seconds after a copy, which confirms an action and does not limit the user. Not determinable by scanning.
2.2.2 Pause, Stop, HideANot ApplicableNo animated, moving, or auto-updating content.
2.3.1 Three Flashes or Below ThresholdASupportsNo animation anywhere, so nothing can flash.
2.4.1 Bypass BlocksASupportsScreen reader: On all 12 pages the skip link was the first Tab stop, Return moved to the main landmark, and the next Tab landed inside main rather than back in the header. The October 10 scripted capture repeated it by keystroke on all 12 pages with the same result, and on /tools/voice-critique. Skip link present, first in tab order, target exists and is focusable.
2.4.2 Page TitledASupportsAll 34 pages carry a unique, non-empty title. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion.
2.4.3 Focus OrderASupportsNo positive tabindex anywhere. On all 29 pages the keyboard pass moved forward through source order and down the page, never jumping back up. No positive tabindex anywhere; DOM order governs.
2.4.4 Link Purpose (In Context)ASupportsEvery repeated link name resolves to one destination, so each has a single unambiguous purpose. Consistent naming across routes is required by 3.2.4. https://brianbeals.com: 'Capability statements' repeats, all to https://brianbeals.com/documents https://brianbeals.com/sitemap-page: 'About' repeats, all to https://brianbeals.com/about
2.5.1 Pointer GesturesANot ApplicableNo path-based or multipoint gesture detected: no touch or motion handlers, draggable elements, slider roles, or map containers.
2.5.2 Pointer CancellationASupportsAll pointer interaction is standard activation on native links and one native button. The site's source registers no mouse-down, pointer-down, or touch handler. Not determinable by scanning.
2.5.3 Label in NameASupportsEvery aria-label contains its element's visible text, so speech input users can target controls by what they see.
2.5.4 Motion ActuationANot ApplicableNo device motion handler detected: no touch or motion handlers, draggable elements, slider roles, or map containers.
3.1.1 Language of PageASupportslang set on all 34 pages. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion.
3.2.1 On FocusASupportsConfirmed during the keyboard pass on all 29 pages: the address never changed and no content appeared while focus moved. Nothing navigates, opens, or submits on focus. Not determinable by scanning.
3.2.2 On InputANot ApplicableNo form controls exist on any of the 29 pages, so no change of context on input is possible. Not determinable by scanning.
3.3.1 Error IdentificationANot ApplicableNo form controls and therefore no error states on any of the 29 pages. Not determinable by scanning.
3.3.2 Labels or InstructionsASupportsEvery form control carries a label or an explicit accessible name.
4.1.1 ParsingASupportsNo duplicate id values. Obsolete and removed in WCAG 2.2. Reported for 2.1 completeness only.
4.1.2 Name, Role, ValueASupportsScreen reader: Every link in the rotor's link list announced a name and the link role on all 12 pages. On October 8 no page in the sample had a form control or a control with state, so name, role, and value were heard for links only. The October 10 scripted capture heard every link on all 12 pages announced with a name, and nothing announced itself as a control with state. On /tools/voice-critique, added the same day, VoiceOver and NVDA announced the one button by name and role, "Copy prompt button". On October 11 the topic filter on /writing added four toggle buttons; VoiceOver announced each by name, role, and pressed state ("All selected toggle button"), by ear and by scripted capture. Every control has a non-empty accessible name in the browser accessibility tree. Custom widget state needs AT confirmation. Scan reads the real accessibility tree. Custom widgets still need AT confirmation of state changes.

WCAG 2.1 Level AA

Success criteria, Level AA
CriterionLvlConformanceRemarks and explanations
1.2.4 Captions (Live)AANot ApplicableNo audio or video elements across 34 pages.
1.2.5 Audio Description (Prerecorded)AANot ApplicableNo audio or video elements across 34 pages.
1.3.4 OrientationAASupportsNo CSS locks or rotates content by orientation.
1.3.5 Identify Input PurposeAANot ApplicableNo form controls exist on any of the 29 pages, so there is no input purpose to identify. Not determinable by scanning.
1.4.3 Contrast (Minimum)AASupportsZero failures across 34 pages in both color schemes.
1.4.4 Resize TextAASupportsNo viewport restriction on zoom, and no fixed-height text containers (confirmed by the 1.4.12 spacing override producing no clipping).
1.4.5 Images of TextAASupportsThe images in the evaluated set are photographs (the principal on two pages, five wildlife and travel photographs on /elsewhere), the BB brand mark, and the SBA certification mark in the footer and the capability statements. The two marks are logotypes and exempt; the SBA mark is used as SBA supplies it, and its words are also given as text beside it. No other text is presented as an image anywhere in the evaluated set. Not determinable by scanning.
1.4.10 ReflowAASupportsNo horizontal scrolling at a 320px viewport on any of 34 pages.
1.4.11 Non-text ContrastAASupportsControl borders and the focus indicator clear 3:1 in both color schemes, measured by the scan. No icon or state indicator carries meaning on its own. Control borders and focus indicator all clear 3:1.
1.4.12 Text SpacingAASupportsNo clipping or scrolling with the 1.4.12 override values applied.
1.4.13 Content on Hover or FocusAANot ApplicableNo content appears on hover or focus. Every link and button on the 29 pages was hovered and focused in turn and nothing new appeared. There are no title tooltips, popovers, or dialogs. Not determinable by scanning.
2.4.5 Multiple WaysAASupportsA human-readable site map at /sitemap-page is linked from every one of the 34 pages evaluated, giving a second route to any page alongside the global navigation.
2.4.6 Headings and LabelsAASupportsHeadings were read as an outline on all 29 pages, and each names the section beneath it: essay headings are full phrases, capability statement headings name their block (Company Snapshot, NAICS, Services). The VoiceOver pass heard the heading lists out of context on 12 pages. No page has a form field, so there are no field labels to judge. Re-read with VoiceOver by Brian Beals on October 10, 2026 after the home page and /accessibility were reorganized; each new heading names its section. Screen reader: Heading lists heard out of context through the rotor on all 12 pages; each heading made sense read alone. No page in the sample has a form field. On October 10 Brian Beals re-heard the new heading outlines of the home page and /accessibility; each heading names its section. The scripted capture recorded the heading lists but does not judge their meaning. Not determinable by scanning.
2.4.7 Focus VisibleAASupportsVisible focus indicator confirmed under a real keyboard press.
3.1.2 Language of PartsAASupportsNo passage declares a language other than the page language. A passage in another language with no lang attribute cannot be detected by scanning; none was observed in review.
3.2.3 Consistent NavigationAASupportsThe 22 site pages share one header with the same six navigation links in the same order, from one layout component. The six capability statements and this report are standalone documents with no navigation menu; each ends with a footer linking the site map. Not determinable by scanning.
3.2.4 Consistent IdentificationAASupportsComponents with the same function carry the same name throughout: the skip link reads "Skip to main content" on all 29 pages, the site map link reads "Site map" on every page that carries one, and the six navigation links are named identically on all 22 site pages. Not determinable by scanning.
3.3.3 Error SuggestionAANot ApplicableNo form controls and therefore no errors to suggest corrections for. Not determinable by scanning.
3.3.4 Error Prevention (Legal, Financial, Data)AANot ApplicableThe site takes no legal, financial, or data-modifying commitment. Nothing is submitted, purchased, or deleted. Not determinable by scanning.
4.1.3 Status MessagesAASupportsScreen reader: On /tools/voice-critique, Copy prompt was pressed by the scripted capture in VoiceOver with Safari and in NVDA with Edge and Chrome. Each announced "Prompt copied to the clipboard" from a polite status region on every press, a second press inside two seconds included, with focus left on the button. On October 11 Brian Beals pressed Copy prompt by hand in NVDA with Edge and heard the message on every press. On /writing, each press of a topic filter announced the count shown from a status region with focus left on the button, heard by Brian Beals with VoiceOver on October 11 and by scripted capture the same day. 4 live region(s). All exist before their content, stay visible, and keep node identity when text changes. Announcement itself requires a screen reader. Scan verifies the DOM conditions that make an announcement possible. Hearing it requires a screen reader; the ACR states which was done.

This is a self-assessment unless stated otherwise. It was not produced by an independent third-party auditor. A contracting officer requiring independent verification should request a third-party audit.