What This Report Shows
This report evaluates the accessibility of a single document against WCAG 2.1 Level AA — the standard required for ADA compliance. The document was tested with 34 automated accessibility checks and 9 screen reader simulation checks that replicate how NVDA and VoiceOver navigate PDF documents.
- Conformant
- All checks pass. The document is fully accessible to screen readers and assistive technology.
- Partially Conformant
- Minor issues remain (3 or fewer failed checks). The document is mostly accessible but has small gaps.
- Not Conformant
- Significant accessibility barriers exist. Screen reader users may not be able to fully access this document.
Screen Reader Readability
Composite readability score: 84.2/100 (Good)
This score summarizes practical screen reader readability across text extractability, tagging coverage, alt text quality, heading structure, and table/list accessibility.
| Component | Score | Details |
|---|---|---|
| Text extractability | 29.9/30 | total chars=1586686, readable chars=1580128, replacement chars=0 |
| Tag coverage | 25.0/25 | tagged pages=334, total pages=334, tags per page=94.5 |
| Alt text quality | 6.3/20 | figures=38, with meaningful alt=12 |
| Heading structure | 13.0/15 | errors=0, warnings=1 |
| Table/list accessibility | 10.0/10 | errors=0 |
Document Information
| Source | |
| Original File Type | |
|---|---|
| Original File Size | 11.0 MB |
| Original PDF (un-remediated) | ecf9e7b2_college-catalog-2018-2020.pdf |
| Remediated PDF | college-catalog-2018-2020.pdf |
| Source Web Page | N/A |
| Original Accessibility State | |
| Had Structure Tags | Yes |
| Had Language Set | No |
| Had Document Title | No |
| After Remediation | |
| Remediated File Size | 32.5 MB |
| Pages | 334 |
| Structure Tags | 31556 |
| Checks Passed | 25 of 30 applicable (3 not applicable) |
| Screen Reader Errors | 26 |
| Screen Reader Warnings | 9 |
| veraPDF | FAIL |
| Conformance | Partially Conformant |
WCAG 2.1 AA Conformance
| Success Criterion | Status | Remarks |
|---|---|---|
| 1.1.1 Non-text Content (Level A) | FAIL | Figures require alternate text: 26/38 figures have generic/placeholder alt text; Elements require alternate text: /Figure element has generic/placeholder alt text: 'Figure'; /Figure element has generic/placeholder alt text: 'Figure' |
| 1.3.1 Info and Relationships (Level A) | FAIL | All page content is tagged: Pages with untagged content: 127, 158, 160, 162, 167, 312 |
| 1.3.2 Meaningful Sequence (Level A) | PASS | |
| 1.3.3 Sensory Characteristics (Level A) | N/A | Not applicable to static PDF documents |
| 1.4.1 Use of Color (Level A) | FAIL | Document has appropriate color contrast: Page 1: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}}; Page 38: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}} |
| 1.4.3 Contrast (Minimum) (Level AA) | FAIL | Document has appropriate color contrast: Page 1: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}}; Page 38: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}} |
| 1.4.5 Images of Text (Level AA) | PASS | |
| 2.1.1 Keyboard (Level A) | PASS | |
| 2.1.2 No Keyboard Trap (Level A) | N/A | Not applicable to static PDF documents |
| 2.2.1 Timing Adjustable (Level A) | PASS | |
| 2.3.1 Three Flashes or Below Threshold (Level A) | N/A | No applicable checks for this document |
| 2.4.1 Bypass Blocks (Level A) | PASS | |
| 2.4.2 Page Titled (Level A) | PASS | |
| 2.4.4 Link Purpose (In Context) (Level A) | PASS | |
| 2.4.5 Multiple Ways (Level AA) | PASS | |
| 2.4.6 Headings and Labels (Level AA) | PASS | |
| 2.4.7 Focus Visible (Level AA) | PASS | |
| 3.1.1 Language of Page (Level A) | PASS | |
| 3.1.2 Language of Parts (Level AA) | N/A | Not applicable to static PDF documents |
| 3.2.3 Consistent Navigation (Level AA) | N/A | Not applicable to static PDF documents |
| 3.2.4 Consistent Identification (Level AA) | N/A | Not applicable to static PDF documents |
| 4.1.1 Parsing (Level A) | PASS | |
| 4.1.2 Name, Role, Value (Level A) | PASS |
Accessibility Checks (34)
| Category | Check | Result | Details |
|---|---|---|---|
| Document | Accessibility permission flag is set | Passed | |
| Document | Document is not image-only PDF | Passed | |
| Document | Document is tagged PDF | Passed | |
| Document | Structure tree is internally consistent | Passed | |
| Document | Document structure provides logical reading order | Passed | Vision analysis: reading order is acceptable; Page 1: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}}; Page 38: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}} |
| Document | Text language is specified | Passed | Language: en |
| Document | Document title is showing in title bar | Passed | |
| Document | Bookmarks are present in large documents | Passed | |
| Document | Document has appropriate color contrast | Failed | Page 1: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}}; Page 38: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}}; Page 75: Vision analysis error: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Your project has exceeded its monthly spending cap. Please go to AI Studio at https://ai.studio/spend to manage your project spend cap.', 'status': 'RESOURCE_EXHAUSTED'}} |
| Page Content | All page content is tagged | Failed | Pages with untagged content: 127, 158, 160, 162, 167, 312 |
| Page Content | All annotations are tagged | Passed | |
| Page Content | Tab order is consistent with structure order | Passed | |
| Page Content | Reliable character encoding is provided | Failed | Page 47: suspicious extracted text (words are split by repeated spaces); Page 11: /TT1 uses unmapped glyph codes in /ToUnicode (0x00, 0x03, 0x0F, 0x11, 0x4B, 0x51); Page 11: /TT2 uses unmapped glyph codes in /ToUnicode (0x00, 0x03, 0x0D, 0x0E, 0x10, 0x24) |
| Page Content | All multimedia objects are tagged | Not Applicable | No multimedia objects found |
| Page Content | Page will not cause screen flicker | Passed | |
| Page Content | No inaccessible scripts | Passed | |
| Page Content | Navigation links are not repetitive | Passed | |
| Page Content | Page does not require timed responses | Passed | |
| Forms Tables Lists | All form fields are tagged | Not Applicable | No form fields found |
| Forms Tables Lists | All form fields have description | Passed | |
| Forms Tables Lists | TR must be child of Table/THead/TBody/TFoot | Passed | |
| Forms Tables Lists | TH and TD must be children of TR | Passed | |
| Forms Tables Lists | Tables must have headers | Passed | |
| Forms Tables Lists | Tables: same cols per row, same rows per col | Passed | Vision analysis: no reading order errors — irregular row widths likely due to legitimate row/col spans; Table has rows with 2-3 columns; Table has rows with 1-7 columns |
| Forms Tables Lists | Tables must have a summary | Passed | |
| Forms Tables Lists | LI must be child of L | Passed | |
| Forms Tables Lists | Lbl and LBody must be children of LI | Passed | |
| Alt Text Headings | Figures require alternate text | Failed | 26/38 figures have generic/placeholder alt text |
| Alt Text Headings | Alternate text that will never be read | Passed | |
| Alt Text Headings | Alternate text must be associated with content | Passed | |
| Alt Text Headings | Alternate text should not hide annotation | Passed | |
| Alt Text Headings | Elements require alternate text | Failed | /Figure element has generic/placeholder alt text: 'Figure'; /Figure element has generic/placeholder alt text: 'Figure'; /Figure element has generic/placeholder alt text: 'Figure' |
| Alt Text Headings | Appropriate heading nesting | Not Applicable | No headings found |
Screen Reader Validation (35 issues)
| Severity | Page | Element | Issue |
|---|---|---|---|
| WARNING | doc | Document | No headings found — screen reader users cannot navigate by heading |
| ERROR | p20 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p20 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p20 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p20 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p21 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p21 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p58 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p59 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p60 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p61 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p62 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p63 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p66 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p67 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p68 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p69 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p75 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p76 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p86 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p114 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p120 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p140 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p157 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p161 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p237 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p268 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| WARNING | p160 | P | Text repeated 3 times on page 160: 'Select at least 3 units from the following:...' — screen reader reads it each time |
| WARNING | p189 | P | Text repeated 3 times on page 189: '7KLVQRQWUDGLWLRQDOFRXUVHSURYLGHVIRUFKDOOHQJLQJHGXFDWL...' — screen reader reads it each time |
| WARNING | p190 | P | Text repeated 3 times on page 190: '6WXGHQWVZLOOXVHFRPPRQSRZHUDQGKDQGWRROVWRSHUIRUP...' — screen reader reads it each time |
| WARNING | p228 | P | Text repeated 4 times on page 228: '7KLVFRXUVHDOORZVVWXGHQWVWRSXUVXHDGLUHFWHGVWXG\LQ(O...' — screen reader reads it each time |
| WARNING | p250 | P | Text repeated 3 times on page 250: '&RRSHUDWLYH(GXFDWLRQLVDZRUNH[SHULHQFHSURJUDPLQYROYLQJ...' — screen reader reads it each time |
| WARNING | p250 | P | Text repeated 3 times on page 250: '7KHVWXGHQWZLOOGHYHORSDWOHDVW OHDUQLQJREMHFWLYHVWR...' — screen reader reads it each time |
| WARNING | p282 | P | Text repeated 3 times on page 282: '7KHRXWFRPHZLOOYDU\GHSHQGLQJRQWKHFRQWUDFWZLWKWKHLQV...' — screen reader reads it each time |
| WARNING | p284 | P | Text repeated 3 times on page 284: 'Prerequisite: Electrical Construction and Maintenance 116....' — screen reader reads it each time |