Awfully Helpful

Sample report: Limited Accessibility Check

A real check of a small Minnesota city. Name withheld.

This is a real check of a small Minnesota city’s public website and two of its PDFs. I did it as practice. The city did not hire me or ask for it, so I left out its name, its web addresses and anything else that names it.

Everything else is as I found it: the numbers, the colors, what the screen reader said, and the fixes.

Awfully Helpful

Limited Accessibility Check report

Summary

Client
None. A practice check of a small Minnesota city’s public website. The city did not ask for it. Its name is withheld.
Checked
September 28 to October 23, 2026
Standard
WCAG 2.1 Level AA
Scope
The homepage, 5 more pages and 2 PDFs (10 PDF pages in total)
Findings
27 problems. This page shows 6 of them in full.
Checks passed
120 of 147 checklist steps (82%). 12 steps were not tested. This share is not a grade and not a WCAG conformance level.
Type of check
A Limited Accessibility Check. It covers only the pages and PDFs listed below. It is not a full conformance audit.
How it was checked
Two scanners, browser probes and real NVDA speech: in Edge on Windows for the pages, and in Acrobat Reader for the PDFs. Two AI judges from different vendors, each blind to the other, had to agree on each finding, or Kyle checked it by hand. Kyle read every finding.
Legal note
This report is not legal advice.

Pages checked

  • Homepage
  • Pay a utility bill
  • Forms and applications
  • Meeting agendas and packets
  • Contact
  • Calendar

PDFs checked

  • City council minutes (6 pages)
  • Park rental form, fillable (4 pages)

What was tested

Checklist steps by page or PDF
Page or PDFPassedFailedNot tested
Homepage2032
Pay a utility bill1942
Forms and applications2032
Meeting agendas and packets1942
Contact1942
Calendar1942
All pages together (one step)100
City council minutes (PDF)220
Park rental form (PDF)130
Total1202712

Who fixes what

  • The site’s theme or template (the web developer): 9 findings
  • City staff (the city’s own text, images, links and PDFs): 6 findings
  • Both: 12 findings

Six of the 27 findings

I chose these six to show different kinds of problems. They are in the same order as in the full report.

  1. Some text is too light against its background
  2. The main pay-bill link has no name
  3. An instruction works only if you can see the page
  4. The headings do not show the page’s structure
  5. The contact form’s fields are too faint to see
  6. The rental form’s fields are silent to a screen reader

1. Some text is too light against its background

Where
Homepage. The main menu links are #1f6692 on #aec8d8 (3.57:1; one link measured 3.18:1). The quick-link tiles are white on #aec8d8 (1.74:1), white on #b77d4d (3.47:1) and white on #0090d6 (3.52:1). The footer “Subscribe” button is #1f6692 on #eb7692 (2.23:1). The welcome paragraph at the top is about 2.5:1. The large “Events” heading is #e1e7ec on white (1.25:1).
WCAG rule
1.4.3 Contrast (Minimum) (Level AA)
What is wrong
Normal text needs at least 4.5:1, and large text at least 3:1. All of these are below that, and the screenshots match the measurements. People with low vision struggle to read this text.
The scanners also found
AccessLint found 4, axe-core found 10. The two scanners overlap, so these do not add up.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
The site’s theme or template. Ask the web developer; staff edits cannot change this part.
How to fix
Change the theme colors so all normal text reaches at least 4.5:1. Use dark text on the light-blue menu and the pink button. Use darker tile colors behind white text. Make the welcome paragraph white. Make the “Events” heading dark enough for 3:1, or make it decoration only.
How to retest
Reload the homepage. Check each item above with a contrast tool, such as the Colour Contrast Analyser. Normal text must show at least 4.5:1, and the large “Events” heading at least 3:1. Then run the contrast scanner again.

2. The main pay-bill link has no name

Where
Pay a utility bill page. The link to the online payment site, in the main content. Also the logo link and the YouTube link, in the header and again in the footer.
WCAG rules
2.4.4 Link Purpose (In Context) (Level A); 2.5.3 Label in Name (Level A); 4.1.2 Name, Role, Value (Level A)
What is wrong
Five links have no name, and one of them is the main pay-bill link. NVDA reads part of its web address instead, an account code. The logo link is read as the site’s address and the YouTube link as “featured”. In the links list, all five say only “link”.
The scanners also found
AccessLint found 5, axe-core found 5.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
Both. The logo and YouTube links are in the theme. The pay link is in the city’s own content.
How to fix
Give each image or icon link a name that says where it goes. For the pay link, use alt text such as “Pay your utility bill online”. In the header and footer, name the logo link “City of [name] home” and the icon link “City of [name] on YouTube”, with alt text or an aria-label.
How to retest
Open the NVDA links list (Insert+F7) and Tab through the page. It passes when all five links say a clear name, not a blank or a web address.

3. An instruction works only if you can see the page

Where
Pay a utility bill page, main content. The sentence “Click on the payment logo above to view your bill online…” and the payment logo above it (eCheck, Savings, MasterCard, Discover, Visa).
WCAG rules
1.3.2 Meaningful Sequence (Level A); 1.3.3 Sensory Characteristics (Level A)
What is wrong
The page tells people to “click on the payment logo above”. That works only if you can see it. NVDA reads the logo as a blank object, so a screen reader user hears no name and no link. The rest of the reading order makes sense.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
City staff. It is in the city’s own content.
How to fix
Change the sentence so it names the link, not its shape and place. For example: “Select Pay Your Bill Online to view your bill.” Make that a real text link, or give the logo alt text that says where it goes.
How to retest
Read the page with NVDA (Insert+Down Arrow). It must say a link with a clear name, such as “Pay Your Bill Online”. The instruction must no longer depend on “logo” or “above”.

4. The headings do not show the page’s structure

Where
Meeting agendas and packets page. The four board sections (City Council, Planning Commission, Economic Development Authority and Park Board) and the year links under each, 2026 to 2021.
WCAG rules
1.3.1 Info and Relationships (Level A); 2.4.6 Headings and Labels (Level AA)
What is wrong
The page title is good. The headings are the problem. The page has no level 1 heading, and every heading is level 4. The headings list shows 24 bare years, “2026” to “2021” four times over, with nothing to say which board each one belongs to.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
Both. Part is in the theme, part is in the city’s own content.
How to fix
Add one level 1 heading, “Meeting Agendas & Packets”. Make each board heading level 2. Then make the years level 3 under their board, or turn them into plain list links.
How to retest
In NVDA, press Insert+F7 and open the headings list. It shows one level 1 heading and four level 2 board headings. Each year sits at level 3 under its board, or is gone from the list.

5. The contact form’s fields are too faint to see

Where
Contact page, the contact form: the two name fields, the email and confirm email fields, and the message box. Each has a #ccd5db border on a white background.
WCAG rule
1.4.11 Non-text Contrast (Level AA)
What is wrong
The fields have no fill and only a pale border. The border is 1.49:1 against white. It needs at least 3:1, so people with low vision may not find the fields. The search box passes: its light gray fill stands out against the blue header.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
The site’s theme or template. Ask the web developer; staff edits cannot change this part.
How to fix
Make the borders of the text fields and the message box darker, for example #767676 or darker on white, so they reach at least 3:1. Or give the fields a fill that is at least 3:1 against the page.
How to retest
Reload the contact page. Check each field’s border color against the white page with a contrast tool. Every border reads 3:1 or more.

6. The rental form’s fields are silent to a screen reader

Where
The park rental form (PDF), all 18 tab stops: 14 text fields and 4 check boxes.
WCAG rules
4.1.2 Name, Role, Value (Level A); 2.4.3 Focus Order (Level A); 3.3.2 Labels or Instructions (Level A); 2.4.4 Link Purpose (In Context) (Level A)
What is wrong
In both NVDA runs, no field said its label. NVDA said only “edit, blank” or “check box, not checked”. Only the Clear Form button had a name. A screen reader user cannot tell which field is which, so they cannot fill in the form on their own.
The scanners also found
19 of 19 form fields have no tooltip label.
Confirmed by
Two AI judges (Claude and Codex) with the screenshots, each blind to the other
Who fixes it
City staff. It is in the city’s own content.
How to fix
Open the PDF in Adobe Acrobat Pro and go to Prepare Form. For each text field and check box, open Properties. In Tooltip, type its printed label, such as “Renter name” or “Pavilion rental date”. Make sure Tab moves through the fields in the order they appear on the page.
How to retest
Open the new PDF in Adobe Acrobat Reader with NVDA running. Tab through every field. Each one says its label, such as “Renter name, edit, blank”, and the order follows the page.

Not tested

12 steps were not tested, 2 on each page. The pages have form fields, so I did not press single keys to test for one-key shortcuts. And I had no written permission to send the city’s forms, so I did not test their error messages.

WCAG 2.1 AA results

Fails (14): 1.1.1 Non-text Content; 1.3.1 Info and Relationships; 1.3.2 Meaningful Sequence; 1.3.3 Sensory Characteristics; 1.4.3 Contrast (Minimum); 1.4.5 Images of Text; 1.4.11 Non-text Contrast; 2.4.2 Page Titled; 2.4.3 Focus Order; 2.4.4 Link Purpose (In Context); 2.4.6 Headings and Labels; 2.5.3 Label in Name; 3.3.2 Labels or Instructions; 4.1.2 Name, Role, Value.

Not tested (5): 2.1.4 Character Key Shortcuts; 3.1.1 Language of Page; 3.3.1 Error Identification; 3.3.3 Error Suggestion; 4.1.3 Status Messages.

No failure found (30). This means the steps found no failure on these pages. There may still be problems that the steps did not find. 4.1.1 Parsing is treated as met, as the W3C’s note to WCAG 2.1 says.

What the paid check adds

This page shows 6 of the 27 findings from a practice check. A real check of your site gives you:

  • your homepage, 5 key pages you choose and up to 5 PDFs (no more than 25 pages in total);
  • every finding confirmed on your live page or file;
  • browser probes and real NVDA speech, with review of every proposed failure and sampled passes;
  • every problem I find, with where it is, the WCAG rule, who fixes it, the fix and the retest;
  • a report within 15 business days after your materials arrive.

The price is $750, fixed. Introductory price for the first 3 clients.

See the full scope of the Limited Accessibility Check