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: 92.0/100 (Excellent)
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 | 30.0/30 | total chars=1547592, readable chars=1547245, replacement chars=0 |
| Tag coverage | 25.0/25 | tagged pages=352, total pages=352, tags per page=106.8 |
| Alt text quality | 14.0/20 | figures=47, with meaningful alt=33 |
| 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 | 7.5 MB |
| Original PDF (un-remediated) | 4a490f4e_2025-26_Catalog-web.pdf |
| Remediated PDF | 2025-26_Catalog-web.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 | 30.8 MB |
| Pages | 352 |
| Structure Tags | 37576 |
| Checks Passed | 25 of 30 applicable (3 not applicable) |
| Screen Reader Errors | 14 |
| Screen Reader Warnings | 14 |
| 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: 14/47 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: 2, 5-9, 11-15, 17-18, 20, 22, 25, 30, 32-35, 37-40, 42, 48, 52-54, 56, 62-63, 69-83, 87-91, 94, 96-97, 101-102, 104-106, 109-110, 112, 115-116, 118, 121-122, 124-125, 127-128, 130-131, 134-135, 137, 140, 143-146, 150-153, 155-157, 159-161, 163-166, 168-174, 177-178, 180, 182-183, 185, 188-189, 192, 194-195, 198-199, 201, 206-207, 210-211, 222, 224-225, 228-229, 232, 238-242, 245-246, 249, 251-252, 257, 263-265, 267-268, 270, 277-278, 283, 287-288, 293, 296-297, 301, 303, 305-308, 312, 314, 319, 321, 324, 326, 328, 331, 334-335, 337-338, 343-348, 350 |
| 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 40: 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 40: 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 40: 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 40: 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 79: 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: 2, 5-9, 11-15, 17-18, 20, 22, 25, 30, 32-35, 37-40, 42, 48, 52-54, 56, 62-63, 69-83, 87-91, 94, 96-97, 101-102, 104-106, 109-110, 112, 115-116, 118, 121-122, 124-125, 127-128, 130-131, 134-135, 137, 140, 143-146, 150-153, 155-157, 159-161, 163-166, 168-174, 177-178, 180, 182-183, 185, 188-189, 192, 194-195, 198-199, 201, 206-207, 210-211, 222, 224-225, 228-229, 232, 238-242, 245-246, 249, 251-252, 257, 263-265, 267-268, 270, 277-278, 283, 287-288, 293, 296-297, 301, 303, 305-308, 312, 314, 319, 321, 324, 326, 328, 331, 334-335, 337-338, 343-348, 350 |
| 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 65: suspicious extracted text (text extraction is low quality); Page 89: 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 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 | 14/47 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 (28 issues)
| Severity | Page | Element | Issue |
|---|---|---|---|
| WARNING | doc | Document | No headings found — screen reader users cannot navigate by heading |
| ERROR | p8 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p8 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p19 | 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 | p64 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p65 | 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 | p161 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p169 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| ERROR | p351 | Figure | Figure has generic/placeholder alt text: 'Figure' — provides no value to screen reader users |
| WARNING | p208 | P | Tagged element is empty — screen reader announces nothing |
| WARNING | p209 | P | Tagged element is empty — screen reader announces nothing |
| WARNING | p249 | P | Text repeated 3 times on page 249: '*HQHUDO&RRSHUDWLYH(GXFDWLRQLVDFRXUVHZKHUHWKHVWXGHQW...' — screen reader reads it each time |
| WARNING | p250 | P | Text repeated 3 times on page 250: 'Prerequisite: Cosmetology 111 or Barbering 113...' — screen reader reads it each time |
| WARNING | p256 | P | Text repeated 3 times on page 256: '&RRSHUDWLYH(GXFDWLRQLVDZRUNH[SHULHQFHSURJUDPLQYROYLQJ...' — screen reader reads it each time |
| WARNING | p262 | P | Text repeated 4 times on page 262: '7KLVFRXUVHDOORZVVWXGHQWVWRSXUVXHDGLUHFWHGVWXG\LQ(O...' — screen reader reads it each time |
| WARNING | p281 | P | Text repeated 3 times on page 281: '&RRSHUDWLYH(GXFDWLRQLVDZRUNH[SHULHQFHSURJUDPLQYROYLQJ...' — screen reader reads it each time |
| WARNING | p295 | P | Text repeated 6 times on page 295: 'Prerequisite: Competency in intermediate algebra or completi...' — screen reader reads it each time |
| WARNING | p306 | P | Text repeated 3 times on page 306: 'Prerequisite: Electrical Construction and Maintenance 116....' — screen reader reads it each time |
| WARNING | p306 | P | Text repeated 4 times on page 306: 'POWER LINE MECHANIC - TRAINEE (600 HOURS)...' — screen reader reads it each time |
| WARNING | p313 | P | Text repeated 3 times on page 313: '&RRSHUDWLYH(GXFDWLRQLVDZRUNH[SHULHQFHSURJUDPLQYROYLQJ...' — screen reader reads it each time |
| WARNING | p331 | P | Text repeated 3 times on page 331: '7KLV2QOLQHFRXUVHZLOOJLYHFXUUHQWVWXGHQWV7HFKQLFLDQVD...' — screen reader reads it each time |
| WARNING | p339 | P | Text repeated 6 times on page 339: 'A.S., Los Angeles Trade-Technical College...' — screen reader reads it each time |