Accessibility
What works, what does not yet, and our report against WCAG 2.1 level AA.
Where we stand
We aim for the Web Content Accessibility Guidelines (WCAG) 2.1 at level AA across the whole site, and we are close: of the 50 level A and AA success criteria, we believe CamelKeys supports 45, does not need 4, and partly supports 1. The one gap is in the typing test itself, and it is described below with the rest of what we know does not yet work well.
This is our own evaluation, made in November 2026. Nobody outside CamelKeys has audited the site yet, and it has not been tested by people who use screen readers, switch access or voice control. If you use any of those, we would value your help: write to hello@camelkeys.com.
What works
- Everything works from the keyboard. A test starts with the first key you type. Tab moves from the typing area to the Restart button, Escape restarts or closes a window, and Enter goes to the next test from the results. A "Skip to the main content" link comes first on every screen.
- You can see where you are. Buttons, links, fields and tabs show a ring when they have keyboard focus.
- Text is readable. Text meets the contrast WCAG asks for (4.5 to 1, or 3 to 1 for large text) in the light and the dark theme, and the edges of form fields and focus rings meet 3 to 1. In Settings you can make the words of the test larger, change their font, and turn on the dark theme.
- Zoom and small screens. Pages work at 200% zoom and in a window 320 pixels wide without scrolling sideways, and with the wider line and letter spacing some readers set for themselves.
- Less movement. If your device asks for reduced motion, the site's animations stop.
- No time pressure unless you choose it. Timed tests are timed by nature, but word tests (10 to 100 words) have no limit. "Stop on error" in Settings makes you correct each mistake before moving on.
- Words for pictures. Charts have text alternatives, and the speed chart comes with a table of its numbers. Share pictures have alternative text, and their numbers are on the page as text too.
- Messages are announced. Short messages appear in a status region that screen readers read out, form errors are announced, and the results take focus when a test ends.
What does not work well yet
- Mistakes during the test are shown, not announced. A screen reader can read the words you are to type, and the results list every mistake as text, but while you type, which letters are right and which are wrong is shown only by colour and underline. This is the one criterion we partly support (1.3.1), and the fix we are working on is an option to announce mistakes as they happen.
- Some screens skip a heading level, going from the page's main heading straight to third-level headings for their cards. WCAG does not require headings to go in order, but it makes moving by heading less tidy.
- The keyboard drawing in the lessons is wider than a 320-pixel screen and is cut off at its right edge there. The lesson works without it.
- Races are live: other typists' lanes move while you race. That is the point of a race; the practice tests and lessons have no moving parts.
How we checked
In November 2026 we ran automated checks in the browser on every screen of the app and on the site's main pages: names for every button and link, labels for every field, headings, duplicate ids, positive tab order and the contrast of every piece of text, in both themes. We went through each screen with the keyboard alone, at 200% zoom, in a window 320 pixels wide and with WCAG's text-spacing overrides, and we read the code for the rest. What we found was fixed before this report: the contrast of grey text and of the words still to type, the edges of form fields, focus rings in two places, a skip link that was missing, and controls that made one screen too wide for small phones.
Accessibility conformance report
This report follows the structure of the ITI VPAT® 2.5 (WCAG edition).
- Product: CamelKeys, the website and web app, including the typing tests, lessons, races, classes and these pages.
- Report date: 12 November 2026.
- Standard: WCAG 2.1, levels A and AA.
- Evaluation: self-evaluation by CamelKeys, as described above, in current versions of Chrome, Safari and Firefox.
- Terms: Supports: the site meets the criterion without known defects. Partially supports: some of the site does not meet it. Does not support: most of the site does not meet it. Not applicable: the criterion is not relevant to the site.
Level A
| Criterion | Conformance | Remarks |
|---|---|---|
| 1.1.1 Non-text Content | Supports | Images, icons and charts have text alternatives; the speed chart also has a table of its numbers. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | Supports | The only video is the replay a typist can make of their own test, without sound; the results page gives the same information as text. |
| 1.2.2 Captions (Prerecorded) | Not applicable | There is no audio content with speech. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | Supports | The results page is the text alternative to a replay video. |
| 1.3.1 Info and Relationships | Partially supports | Headings, lists, tables, labels and landmarks are marked up. During a test, which letters are typed right or wrong is shown by colour and underline only; the results list the mistakes as text. |
| 1.3.2 Meaningful Sequence | Supports | |
| 1.3.3 Sensory Characteristics | Supports | Instructions name controls by their labels. The daily challenge's coloured squares also have a text summary. |
| 1.4.1 Use of Color | Supports | Mistakes are red and underlined, selected options are filled, and links in text are underlined. |
| 1.4.2 Audio Control | Supports | Nothing plays by itself. Key sounds are off unless chosen in Settings, and play only as keys are pressed. |
| 2.1.1 Keyboard | Supports | |
| 2.1.2 No Keyboard Trap | Supports | Tab moves from the typing area to Restart; Escape closes windows. |
| 2.1.4 Character Key Shortcuts | Supports | Letters are typed only while a test or lesson has focus; there are no single-letter shortcuts. |
| 2.2.1 Timing Adjustable | Supports | The time limit of a timed test is essential to it; word tests have no limit. |
| 2.2.2 Pause, Stop, Hide | Supports | Lanes move only during a race the typist joined; animations stop when reduced motion is set. |
| 2.3.1 Three Flashes or Below Threshold | Supports | |
| 2.4.1 Bypass Blocks | Supports | A skip link, and header, navigation and main landmarks. |
| 2.4.2 Page Titled | Supports | |
| 2.4.3 Focus Order | Supports | Windows move focus inside when they open and back when they close. |
| 2.4.4 Link Purpose (In Context) | Supports | |
| 2.5.1 Pointer Gestures | Supports | Nothing needs a path or multi-finger gesture. |
| 2.5.2 Pointer Cancellation | Supports | |
| 2.5.3 Label in Name | Supports | |
| 2.5.4 Motion Actuation | Not applicable | Nothing responds to moving the device. |
| 3.1.1 Language of Page | Supports | |
| 3.2.1 On Focus | Supports | |
| 3.2.2 On Input | Supports | Changing a setting updates the test on the same screen. |
| 3.3.1 Error Identification | Supports | Form errors are given in text and announced. |
| 3.3.2 Labels or Instructions | Supports | |
| 4.1.1 Parsing | Supports | W3C now treats this criterion as always met for HTML. |
| 4.1.2 Name, Role, Value | Supports | Buttons, fields, tabs, switches, menus and windows expose their names and states. |
Level AA
| Criterion | Conformance | Remarks |
|---|---|---|
| 1.2.4 Captions (Live) | Not applicable | There is no live audio. |
| 1.2.5 Audio Description (Prerecorded) | Not applicable | There is no video with sound. |
| 1.3.4 Orientation | Supports | |
| 1.3.5 Identify Input Purpose | Supports | Name, email and password fields say what they are for, so browsers can fill them in. |
| 1.4.3 Contrast (Minimum) | Supports | Checked on every screen in the light and dark themes. |
| 1.4.4 Resize Text | Supports | |
| 1.4.5 Images of Text | Supports | Share pictures are made to be posted elsewhere; their text is on the page as text. |
| 1.4.10 Reflow | Supports | The keyboard drawing in lessons is a diagram, which WCAG exempts; it is cut off at its right edge on screens narrower than its width. |
| 1.4.11 Non-text Contrast | Supports | Field edges, focus rings and selected options meet 3 to 1. |
| 1.4.12 Text Spacing | Supports | Checked with WCAG's line, paragraph, letter and word spacing. |
| 1.4.13 Content on Hover or Focus | Supports | Chart readouts stay while the pointer is over them and close with Escape. |
| 2.4.5 Multiple Ways | Supports | Navigation, footer links, the guides index and a sitemap. |
| 2.4.6 Headings and Labels | Supports | |
| 2.4.7 Focus Visible | Supports | |
| 3.1.2 Language of Parts | Supports | Test words and language names carry their language. |
| 3.2.3 Consistent Navigation | Supports | |
| 3.2.4 Consistent Identification | Supports | |
| 3.3.3 Error Suggestion | Supports | |
| 3.3.4 Error Prevention (Legal, Financial, Data) | Supports | Payments are reviewed before they are made; deleting an account asks for the password, and deleting a class asks for confirmation. |
| 4.1.3 Status Messages | Supports | Messages appear in a status region that screen readers announce. |
Tell us what is hard to use
If something on CamelKeys is hard to use with the way you use a computer, write to hello@camelkeys.com and say which page and what happened. Schools that need this report for an approval can ask us for it as a document.