Accessibility

Dice Lock is a browser game with two halves, and they are held to two different standards. The pages and menus are ordinary HTML, so they answer to WCAG 2.1 AA. The two playing boards are pixels on a <canvas>, where WCAG's contrast and text rules cannot be measured at all, so they answer to the Game Accessibility Guidelines at their basic and intermediate levels instead.

This page lists what the game supports. It was last checked on 17 September 2026, against the game that's running, and the test suite holds every claim to the code, so a support that stops being true fails a test before it fails you.

Seeing

Nothing in this game is told to you by colour alone. Every coloured signal on the board has a second channel that survives colour being removed entirely:

Contrast. Every run of text on every page and menu measures at least 4.5:1 against what is behind it, in both the light and the dark palette — and in every world, which is the picture the Tower lets you put behind the whole game. A world changes what colour the page is; it is not allowed to change what any of those numbers are, and on a light page it only changes the page's colour and never its brightness for exactly that reason. The game's palette is dark unless you choose Light in Settings; written pages like this one follow your machine. The world is a setting beside the palette.

Text size. All of the page and menu text is sized in rem, so the default font size you set in your browser is the size the game uses, and browser zoom reflows rather than clips. This was measured at a 24px root — 1.5x — across all fifteen surfaces.

Pinch to zoom. Every screen you read can be pinched bigger the way any other web page can — the menus, help, how to play, the pause sheet, the result, a replay. The one exception is the board while a match is actually running, where a stray second finger used to scale the game out from under you in the middle of a move; a pinch there is ignored, and a double-tap on the board — which on an iPhone is that same zoom — is one of the game's own controls there: it rerolls the die you tapped. If you are already zoomed in, pinching and double-tapping keep working everywhere, including on the board, where a double-tap will reroll a die as well as zoom you back out — so there is no magnification you can be left stuck at. Nothing in the game locks the page against zooming.

What the board draws is yours to choose. Six switches sit together under Settings → ACCESSIBILITY. Reduced motion is the first; the other five are every mark the board puts on a die that is not the die — die numerals, risk strips and risk in words, which start off, and the cursor frame and refusal marks, which start on. So the game you are handed says risk and says "that move was refused" without using colour, and you can ask for the band in words, quiet the per-die decoration, or turn every one of the five off, without anything you have already played changing.

Motion. Reduced motion is a switch in Settings, and it starts in the position your operating system asks for. It stills the screen shake, the pulses, the glows, the drifting numbers, the roll-up of the score on a cleared Tower step, the page transitions, the highlight that travels down a segment about to freeze and the retreat of one that has just thawed, the rain and the lightning on the Tower map's Storm floor, the slow drift of the place behind every screen, the die that rolls in and locks when the game opens (you are shown the lock and the name for a moment instead), and — on a Guardian fight — the spin of the Warden's wheel, the drop of a tool off the Foreman's bench and the unfurling of the Overgrowth's leaves. What it deliberately keeps is the two that carry information rather than mood: a Guardian's marks still go out as its health drains, and the barrage arc still grows, because it is a clock and a clock that did not move would be the one readout on the screen that lies. A frozen board's segment still says a second and a half before it freezes that it is about to, because that warning is the whole of what the player can do about it — the mark is simply still while it builds rather than swept. The Leviathan's blink is kept too, stepped rather than eased — it is the whole of how a refused formation is answered on that floor. Nothing in the game flashes faster than 1.8 times a second, which is under the three-per-second bar that can provoke a seizure. The moving picture on the home page has a pause button of its own.

Hearing

Every one of the twenty-three sounds the game makes happens on screen as well — a mark, a float, an animation or a message. A move the board will not accept draws a red frame with a barred circle in it, around the dice it refused, as well as sounding the refusal. That mark is on unless you turn it off (Settings → ACCESSIBILITY → REFUSAL MARKS), which is the one way this promise can be made untrue, and only by you.

There is music under a rising board, and it is the same mute and the same slider. A match against the computer or a friend, an Endless run and a Tower step each play a 24-bar loop from the moment the countdown ends until the result screen. There is no music. A 24-bar loop played under every rising board from 2026-10-12, and it was removed whole on 2026-10-19: the cues above are every sound the game makes, and nothing on any screen is said in sound alone.

Sound can be muted from any screen with the M key, from the speaker in the corner of every menu, and from the SOUND switch in Settings. All three are the same mute, and there is no music and no speech, so there is nothing to balance against anything else.

That switch sits on a card over a percentage slider — under it is GAME SOUNDS, a switch of its own over a percentage slider, and MUSIC beside it, each a switch with its own slider. The music went and took its card; GAME SOUNDS went with it, because with no music left to leave playing a second switch could only silence what the first one already did. One switch and one slider is the whole of the tab. The slider steps five percent at a time and is reachable the same three ways every other control on a menu is: arrow keys, a pad's stick or D-pad, and a thumb on the track. It says its percentage beside itself, and · off there when the switch is off — the number stays visible through it, because it is the value being set.

Moving, and the pace of a match

There is a way to play with no clock on you at all, and it is the point of this section.

Three input methods, each complete on its own. Keyboard, touch and gamepad each reach every action in the game: you never have to switch to another one mid-match. Both keyboard grips are live at once — the arrows with Z X C, or WASD with J K L — so a one-handed player has two layouts to choose between without setting anything. Touch targets are at least 44px on a touch screen, and a mouse works alongside the keyboard on a desktop.

Reading the game with a screen reader

The menus, the HUD and the result screens are ordinary HTML and are fully navigable. Every control is reachable with Tab, activates with Enter or Space, and says what it is: the theme control is a radio group, the toggles are switches, the volume is a slider that speaks its own percentage, the keybind chart is read out as a table with its columns named, and the username box on the Account screen has a label and announces its errors. Opening a dialog takes the rest of the page out of the reading order and gives the dialog the heading it was drawn with; closing it puts your place back where it was.

The one exception is the first second of a result screen, which is deliberate (JIO-1522). A match ends on a tick nobody chose — a stack tops out while a key is held down — and the button under the focus would otherwise start the next match with a press meant for the last one, so every control on that screen is disabled for one second and then comes back. Nothing is lost by waiting it out: the result is spoken into the live region as the screen opens, and the focus lands on the first button the moment the second is up.

During a match, five things are spoken, and they are the five that decide it:

  1. a volley of locked dice committed against you,
  2. your ability meter coming full,
  3. your own stack reaching the danger row,
  4. in a Versus match, the minute from which every volley carries extra locked dice — said once a step, with the number each volley now carries,
  5. the result — victory, defeat or draw, and on a Tower step the step cleared or topped out, with the score, the bar it was played to and how many stars it paid.

And one line that is a reason rather than an event. Some locked dice arrive as a block — a slab of two or more that moves, clears and comes free as one piece — and a swap with either die standing in one is refused. The board draws the refusal around the whole block and the game buzzes, and both of those say no without saying why: every other refusal has its reason on the screen, where a block looks much like the locked dice around it and the one thing that is new about it is the rule. So that refusal, and only that one, is spoken.

And one line that is not about the board at all. The Tower's REDRAW plays a placeholder advertisement — a card over the whole page with a clock on it — and the clock is not read out, because a number that re-announced itself once a second would talk over the card it is counting. Three lines are spoken instead: what has taken the screen and for how long, the moment it can be skipped, and that it has closed. Which of the three ways it closed is not said: if you pressed SKIP you know you pressed it, and what you cannot see is that the page is yours again.

And one line before the match begins. Every Endless run and every match against the computer opens on a still board with TAP TO START over it, and nothing moves until you act — a tap anywhere, any key, or any pad button. The 3-2-1 that used to open the board made a sound; this makes none, so the prompt is spoken as the board is dealt: "Ready. Clear dice before the stack reaches the top. Tap, press any key or a pad button to start." The prompt is a real button and it takes the focus, so Enter and Space start the run with no binding to learn, and Escape opens the pause sheet instead of starting anything.

A Guardian fight is read off a drawing, and the words are still there. Each of the Tower's five Guardians is an object on the screen — a vault door whose nine bolts snap one at a time, a bench its nine tools come off, vines that get cut back, a constellation going out star by star, an eye whose rings fade — and the object is a picture of the fight's health and its barrage clock. None of that is readable as text, so the words are kept: the health readout — 1,180 and LEFT OF 1,863 beside it, in the goal row under the bar, the same row and size a step's target is drawn in — is on the screen beside the object at every width, and the header bar's BARRAGE · 12 is hidden from view but still read out. Both stay in the reading order and are rewritten every frame, so a fight is never a screen whose only readout is a picture.

The short list is a decision, not an oversight. A live region is read one line at a time, and a feed per event stops being information and becomes noise — which is why a swap, a clear, a chain and a cursor move are left to the sounds and the marks that already have them. Three rules keep even this many from piling up: at least 1.2 seconds between any two lines, 2.5 seconds between two of the same kind, and a repeat of the same line inside 3 seconds is dropped. Only the newest line of a kind is kept waiting, so what you hear is the board as it is now, not as it was.

How this was checked

The work behind this page was an audit of every screen, a repair pass per finding, and then one end-to-end verification pass over the finished build. That last pass, on 17 September 2026, re-ran 1,925 automated tests and 406 checks driven through a real browser against the live build and found no regression in any closed finding. The browser checks are the ones that matter here: they read Chrome's own accessibility tree — what a reader is actually handed — rather than the markup that ought to produce it, and they measure the board's pixels with the colour taken out.

If something here does not match what you find, the mismatch is the bug. This page is not written as HTML: it is generated from a file called ACCESSIBILITY.md that sits in the game's own source next to the code it describes, and its claims are checked against that code by the test suite — so it cannot quietly drift away from what actually ships.