VPAT example: a sample VPAT 2.5 WCAG edition report

This is a real draft from a trial on the public pages of a small, live web app, used with its owner's permission. The product's name, addresses and brand details are replaced with "Example App".

This shows the draft stage, before review. Scanners and scripted checks produced it in about 14 minutes. The two right-hand columns are reviewer notes: of 56 rows, tools settled 5 on their own and 46 still needed a person to confirm or judge. In a delivered report those columns are removed, every row has been checked by a person, and the 5 "Not Evaluated" rows (which needed a signed-in test account) are tested and answered.

Report details

Name of product / version
Example App, public website and tool pages, as live on November 10, 2026
Report date
November 10, 2026 (draft)
Product description
A web app with a free lookup tool, sign-in and paid plans.
Contact information
[The vendor's accessibility contact]
Notes
Scope: 8 public pages and the login dialog. The signed-in application (results, downloads, account and billing pages) was not evaluated in this trial, so this draft covers only the public site.
Evaluation methods used
Automated: axe-core 4.14 (WCAG 2.0, 2.1 and 2.2 A and AA rules, desktop 1280 px and mobile 390 px), Pa11y 10 (axe and HTML_CodeSniffer), Lighthouse 13.6 accessibility audit. Scripted: keyboard-only walk with focus-visibility and obscured-focus checks at every tab stop, accessibility-tree review, reflow at 320 px, 200% zoom, text-spacing override, reduced motion, target size, navigation consistency, and keyboard operation of the dialog, tabs and FAQ. Not yet done at draft stage: testing with a real screen reader, real browser zoom, Windows high-contrast mode and form submission.
Pages tested
Home, Pricing, two tool pages, Support, About, Blog index, one blog post, and the login dialog.

Applicable standards

  • WCAG 2.0: Level A (Yes), Level AA (Yes), Level AAA (No)
  • WCAG 2.1: Level A (Yes), Level AA (Yes), Level AAA (No)
  • WCAG 2.2: Level A (Yes), Level AA (Yes), Level AAA (No)

Draft results at a glance

  • Supports: 33
  • Partially Supports: 5
  • Does Not Support: 2 (1.4.1 Use of Color and 1.4.3 Contrast)
  • Not Applicable: 11
  • Not Evaluated: 5 (must be tested before a report is issued)

Note the honest result: a real product with real issues. Buyers trust that more than a page of "Supports".

Table 1: Success criteria, Level A

Table 1: Success criteria, Level A
CriteriaConformance levelRemarks and explanationsDraft basis (reviewer note)Needs a person?
1.1.1 Non-text Content (Level A)SupportsAll images on the 8 tested pages have text alternatives (logos, badges, blog diagrams). Decorative icons are hidden. The logo image next to the visible product name repeats the name (redundant, not a failure).Script + human confirmYes, about 25 min
1.2.1 Audio-only and Video-only (Prerecorded) (Level A)Not ApplicableNo audio-only or video-only content on the tested pages.Script + human confirmYes, about 3 min
1.2.2 Captions (Prerecorded) (Level A)Not ApplicableNo prerecorded video with audio on the tested pages.Script + human confirmYes, about 3 min
1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)Not ApplicableNo prerecorded video on the tested pages.Script + human confirmYes, about 2 min
1.3.1 Info and Relationships (Level A)Partially SupportsHeadings, lists, the tab control and the blog data table (5 header cells) are marked up. Exceptions: the Blog index and blog posts have no main landmark (axe landmark-one-main, region); footer section headings jump from H1 to H4 on every page (axe heading-order); the blog table has no caption.Script + human confirmYes, about 30 min
1.3.2 Meaningful Sequence (Level A)SupportsKeyboard and accessibility-tree order matched the visual reading order on all 8 pages.Script + human confirmYes, about 15 min
1.3.3 Sensory Characteristics (Level A)SupportsOne instruction uses location ("open the account menu at the top right, choose 'Manage subscription'") but also names the control.Human judgmentYes, about 10 min
1.4.1 Use of Color (Level A)Does Not SupportLinks inside paragraphs (Pricing and a tool page) are told apart from body text only by colour: 1.81:1 against the surrounding text, no underline until hover (axe link-in-text-block, 6 instances).Tool decidedNo
1.4.2 Audio Control (Level A)Not ApplicableNo audio plays automatically.Script + human confirmNo
2.1.1 Keyboard (Level A)Supports206 tab stops across 8 pages were all reached with Tab; no mouse-only clickable elements were found. The login dialog, the two result tabs (arrow keys) and the FAQ disclosures work from the keyboard.Script + human confirmYes, about 40 min
2.1.2 No Keyboard Trap (Level A)SupportsTab order cycles through each page; the login dialog keeps focus inside by design and closes with Escape.Script + human confirmYes, about 10 min
2.1.4 Character Key Shortcuts (Level A)SupportsNo single-character keyboard shortcuts found.Human judgmentYes, about 5 min
2.2.1 Timing Adjustable (Level A)Not ApplicableNo time limits on the tested pages.Human judgmentYes, about 5 min
2.2.2 Pause, Stop, Hide (Level A)SupportsNo looping animations or auto-updating content found (0 infinite animations).Script + human confirmYes, about 5 min
2.3.1 Three Flashes or Below Threshold (Level A)SupportsNo flashing content.Human judgmentYes, about 3 min
2.4.1 Bypass Blocks (Level A)SupportsNo skip link, but the header holds only the logo and a Login button before the main content, and most pages have a main landmark. Blog pages lack a main landmark (see 1.3.1).Human judgmentYes, about 10 min
2.4.2 Page Titled (Level A)SupportsEvery tested page has a unique, descriptive title (e.g. "Pricing: Free and Pro plans | Example App").Script + human confirmYes, about 5 min
2.4.3 Focus Order (Level A)Partially SupportsOrder is logical, but when the login dialog is closed with Escape, focus goes to the top of the page instead of back to the Login button.Script + human confirmYes, about 20 min
2.4.4 Link Purpose (In Context) (Level A)SupportsRepeated "View Tool" links carry names that include the tool ("View Tool: Export Tool"). No vague link text found.Script + human confirmYes, about 10 min
2.5.1 Pointer Gestures (Level A)Not ApplicableNo multipoint or path-based gestures.Human judgmentYes, about 3 min
2.5.2 Pointer Cancellation (Level A)SupportsControls are native links and buttons that act on release.Human judgmentYes, about 3 min
2.5.3 Label in Name (Level A)SupportsAccessible names start with the visible label ("View Tool" -> "View Tool: ..."); the Check, Login and tab buttons match their text.Script + human confirmYes, about 5 min
2.5.4 Motion Actuation (Level A)Not ApplicableNo motion-operated features.Human judgmentNo
3.1.1 Language of Page (Level A)Supportslang="en" on every page.Tool decidedNo
3.2.1 On Focus (Level A)SupportsMoving focus through every page caused no navigation or pop-ups.Script + human confirmYes, about 5 min
3.2.2 On Input (Level A)SupportsChoosing a tab changes the panel only; no form was submitted (read-only test).Human judgmentYes, about 10 min
3.2.6 Consistent Help (Level A)Supports"Contact Us" sits in the same footer position on all pages; the chat button appears on the tool pages in the same corner.Script + human confirmYes, about 5 min
3.3.1 Error Identification (Level A)Not EvaluatedNot tested: needs a form submission or a signed-in account, which this read-only trial did not do.Not tested (needs sign-in / form submit)Yes, about 20 min
3.3.2 Labels or Instructions (Level A)Partially SupportsThe account-name field has a programmatic label (aria-label "Account name") but its only visible label is placeholder text ("account name"), which disappears while typing.Human judgmentYes, about 10 min
3.3.7 Redundant Entry (Level A)Not EvaluatedMulti-step flows are behind sign-in; not tested.Not tested (needs sign-in / form submit)Yes, about 10 min
4.1.1 Parsing (Level A)SupportsPer VPAT 2.5Rev: WCAG 2.0 and 2.1, always answer Supports; WCAG 2.2, obsolete and removed, does not apply. (Pa11y noted one duplicate SVG id; no effect on assistive technology.)Tool decidedNo
4.1.2 Name, Role, Value (Level A)Partially SupportsTabs on the tool pages point aria-controls at panels that are not rendered (axe aria-valid-attr-value, critical); the support-chat iframe has no title; the chat widget's hidden close button has no name; the login dialog lacks aria-modal (focus is still kept inside).Script + human confirmYes, about 30 min

Table 2: Success criteria, Level AA

Table 2: Success criteria, Level AA
CriteriaConformance levelRemarks and explanationsDraft basis (reviewer note)Needs a person?
1.2.4 Captions (Live) (Level AA)Not ApplicableNo live media.Human judgmentNo
1.2.5 Audio Description (Prerecorded) (Level AA)Not ApplicableNo prerecorded video.Script + human confirmYes, about 2 min
1.3.4 Orientation (Level AA)SupportsPages work in portrait (390 px) and landscape; no orientation lock found.Script + human confirmYes, about 5 min
1.3.5 Identify Input Purpose (Level AA)SupportsThe only field asks for any public account name to look up, not the user's own details for this site, so no autocomplete token is required. Reviewer to confirm this reading.Human judgmentYes, about 10 min
1.4.3 Contrast (Minimum) (Level AA)Does Not SupportThe light brand blue fails: white text on blue buttons ("Check", "Upgrade") and blue text links on white ("Upgrade", inline links) are 2.65:1 against the required 4.5:1. Found on all 8 pages at desktop or phone width, including the Login button on phones (axe color-contrast, up to 11 elements a page).Tool decidedNo
1.4.4 Resize Text (Level AA)SupportsAt a 640 px viewport (about 200% zoom of 1280 px) no page scrolled sideways or clipped text.Script + human confirmYes, about 10 min
1.4.5 Images of Text (Level AA)SupportsBadges are logotypes (exempt). A blog diagram contains words and has a full text alternative; reviewer to decide if it is essential.Human judgmentYes, about 5 min
1.4.10 Reflow (Level AA)SupportsAt 320 px no page scrolled sideways except one blog post, where a 5-column data table needs horizontal scrolling; data tables are an allowed exception. Reviewer to confirm.Script + human confirmYes, about 15 min
1.4.11 Non-text Contrast (Level AA)Partially SupportsThe account-name input border is 1.24:1 against white (needs 3:1), and the selected tab is shown by a white pill on a near-white strip (1.05:1) plus a faint shadow. Focus rings use the browser default and pass.Script + human confirmYes, about 20 min
1.4.12 Text Spacing (Level AA)SupportsWith WCAG text-spacing overrides injected, no text was clipped or overlapped (scripted check and screenshots).Script + human confirmYes, about 10 min
1.4.13 Content on Hover or Focus (Level AA)Not ApplicableNo custom tooltips or hover pop-ups found.Human judgmentYes, about 5 min
2.4.5 Multiple Ways (Level AA)SupportsEvery page is reachable from the footer menu and from the home page's tool list and blog index.Human judgmentYes, about 5 min
2.4.6 Headings and Labels (Level AA)SupportsHeadings describe their sections; the control labels are clear.Human judgmentYes, about 10 min
2.4.7 Focus Visible (Level AA)SupportsAll 206 tab stops showed a visible change on focus (browser default ring); none hidden.Script + human confirmYes, about 10 min
2.4.11 Focus Not Obscured (Minimum) (Level AA)SupportsNo focused element was covered by the header or the chat button (checked at each tab stop).Script + human confirmYes, about 10 min
2.5.7 Dragging Movements (Level AA)Not ApplicableNo drag interactions.Human judgmentNo
2.5.8 Target Size (Minimum) (Level AA)SupportsSmall targets found were 20 px-tall text links with enough spacing ("Upgrade", a footer link); reviewer to confirm the spacing exception.Script + human confirmYes, about 10 min
3.1.2 Language of Parts (Level AA)SupportsAll content is in English.Human judgmentNo
3.2.3 Consistent Navigation (Level AA)SupportsHeader and footer links are identical and in the same order on all 8 pages (scripted comparison).Tool decidedNo
3.2.4 Consistent Identification (Level AA)SupportsLogin, Contact Us and tool links are named the same everywhere.Script + human confirmYes, about 5 min
3.3.3 Error Suggestion (Level AA)Not EvaluatedNot tested: needs form submission.Not tested (needs sign-in / form submit)Yes, about 15 min
3.3.4 Error Prevention (Legal, Financial, Data) (Level AA)Not EvaluatedCheckout and subscription changes are behind sign-in (Stripe); not tested.Not tested (needs sign-in / form submit)Yes, about 15 min
3.3.8 Accessible Authentication (Minimum) (Level AA)SupportsSign-in is "Continue with Google" only; the product sets no memory or puzzle test. Google's own sign-in pages are out of scope.Human judgmentYes, about 10 min
4.1.3 Status Messages (Level AA)Not EvaluatedStatus messages appear only after a lookup runs; not triggered in a read-only test. A notifications live region exists.Not tested (needs sign-in / form submit)Yes, about 20 min

Table 3: Success criteria, Level AAA

Not evaluated.

Legal disclaimer (as used in the draft)

This report describes the accessibility of the pages listed above as tested on November 10, 2026, using the methods described. It is the vendor's own statement about its product, not a certification, legal opinion or guarantee, and it does not mean the product is free of accessibility barriers or of legal risk. Conformance may change as the product changes.

VPAT® is a registered service mark of the Information Technology Industry Council (ITI).