During Fall 2024, Code.org took part in a Voluntary Product Accessibility Template (VPAT) assessment in our effort to increase our site’s accessibility. Code.org contracted the VPAT to be done through a third party (deque) who evaluated our site against the WCAG Level A and Level AA guidelines.
The learnings from this assessment will continue to aid us in our work towards making a more accessible and inclusive platform. Specifically, we will spend 2025 investing in making our new Labs accessible and integrating them as accessible versions of our curriculum. We still have a long way to go, but look forward to investing in the opportunities highlighted in this assessment.
Top Improvements:
Code.org completed a VPAT in 2023 (see detailed report here). Compared to 2023, we had a 53% increase in the amount of criteria that we support and a 50% decrease in the amount of criteria that we do not support. Below are some high level improvements:
- Improved support for Keyboard scenarios
- Improved support for both input purposes and error messages
- Adding text alternatives to non-text content
- Clearly identifying the appropriate language across the site.
Top Strengths:
- Providing basic keyboard navigation support through ensuring that keyboard users know where their focus is at all time, and that all of our “input” fields provide clear labels for screenreader users and clear error messages on those input fields.
- There are multiple ways available to find different web pages across the site, and our navigation system is consistent across different web pages.
- Our platform supports different orientations (landscape and portrait) for all of our sites.
- Sufficient controls for users for audio on our site that plays longer than 3 minutes.
- Ease of use for users who are using Focus and on Input.
Top Opportunities:
- Some scrollable regions in our labs do not have keyboard access.
- The name, role, state, and/or value of most, if not all, user interface components cannot be programmatically determined. Which makes it difficult for assistive technology to interpret specific buttons.
- Images with texts in them do not have sufficient alternative text.
Full VPAT outcomes:
The VPAT gives one of the following conformance levels to each of the guidelines:
- Supports: The functionality of the product has at least one method that meets the criterion without known defects or meets with equivalent facilitation.
- Partially Supports: Some functionality of the product does not meet the criterion.
- Does Not Support: The majority of product functionality does not meet the criterion.
Below is a summary of our ratings for each of WCAG criteria, but the fully VPAT/ACR can be found here.
Criteria | Conformance Level |
Success Criteria, Level A | |
1.1.1 Non-text Content (Level A) | Partially Supports |
1.2.1 Audio Only and Video-only (Prerecorded) (Level A) | Partially Supports |
1.2.2 Captions (Prerecorded) (Level A) | Not Applicable |
1.2.3 Audio Description or Media Alternative (Prerecorded) | Not Applicable |
1.3.1 Info and Relationships (Level A) | Does not support |
1.3.2 Meaningful Sequence (Level A) | Partially Supports |
1.3.3 Sensory Characteristics (Level A) | Partially Supports |
1.4.1 Use of Color (Level A) | Partially Supports |
1.4.2 Audio Control (Level A) | Supports |
2.1.1 Keyboard (Level A) | Partially Supports |
2.1.2 No Keyboard Trap (Level A) | Partially Supports |
2.1.4 Character Key Shortcuts (Level A 2.1 only) | Supports |
2.2.1 Timing Adjustable (Level A) | Partially Supports |
2.2.2 Pause, Stop, Hide (Level A) | Partially Supports |
2.3.1 Three Flashes Below Threshold | Not Applicable |
2.4.1 Bypass Blocks (Level A) | Partially Supports |
2.4.2 Page Titled (Level A) | Supports |
2.4.3 Focus Order (Level A) | Partially Supports |
2.4.4 Link Purpose (In Context) (Level A) | Supports |
2.5.1 Pointer Gestures (Level A 2.1 only) | Supports |
2.5.2 Pointer Cancellation (Level A 2.1 only) | Supports |
2.5.3 Label in Name (Level A 2.1 only) | Supports |
2.5.4 Motion Actuation (Level 2.1 Only) | Supports |
3.1.1 Language of Page (Level A) | Partially Supports |
3.2.1 On Focus (Level A) | Supports |
3.2.2 On Input (Level A) | Supports |
3.3.1 Error Identification (Level A) | Supports |
3.3.2 Labels or Instructions (Level A) | Partially Supports |
4.1.1 Parsing (Level A) | Supports |
4.1.2 Name, Role, Value (Level A) | Does not Support |
Success Criteria, Level AA | |
1.2.4 Captions Live (Prerecorded) (Level AA) | Not Applicable |
1.2.5 Audio Description (Prerecorded) (Level AA) | Partially Supports |
1.3.4 Orientation (Level AA 2.1 only) | Supports |
1.3.5 Identify Input Purpose (Level AA 2.1 only) | Supports |
1.4.3 Contrast (Minimum) (Level AA) | Partially Supports |
1.4.4 Resize text (Level AA) | Partially Supports |
1.4.5 Images of Text (Level AA) | Partially Supports |
1.4.10 Reflow (Level AA 2.1 only) | Partially Supports |
1.4.11 Non-text Contrast (Level AA 2.1 only) | Partially Supports |
1.4.12 Text Spacing (Level AA 2.1 only) | Partially Supports |
1.4.13 Content on Hover or Focus (Level AA 2.1 only) | Partially Supports |
2.4.5 Multiple Ways (Level AA) | Supports |
2.4.6 Headings and Labels (Level AA) | Partially Supports |
2.4.7 Focus Visible (Level AA) | Partially Supports |
3.1.2 Language of Parts (Level AA) | Supports |
3.2.3 Consistent Navigation (Level AA) | Supports |
3.2.4 Consistent Identification (Level AA) | Supports |
3.3.3 Error Suggestion (Level AA) | Supports |
3.3.4 Error Prevention (Legal, Financial, Data) (Level AA) | Supports |
4.1.3 Status Messages (Level AA 2.1 only) | Partially Supports |
For questions related to Code.org's accessibility efforts, please reach out to accessibility@code.org.