Loading the recording.

WCAG 2.2 · Success Criterion 2.5.8 · Level AA

Watch a real tremor
try to click
a passing button.

Every accessibility checker on the market measures your buttons against 24 by 24 pixels and prints a green tick. That number comes from a 2006 study of able-bodied thumbs on touchscreens.

On the right is a clinically recorded hand, replayed at true scale against a button of exactly the size the standard permits. It is not a simulation and there is no intensity slider. Nothing here is generated.

·
of the time this hand is inside a conforming 24 px target
·
pixels it would actually need to stay on target 95% of the time
·
of 52 measured tremors are wider than the entire 24 px target

Live · real recording

·

·

clicks that would land

measuring…

24 is the AA minimum. 44 is the AAA enhanced size.

Swept, not assumed. The hand-to-pixel mapping is genuinely undetermined.

Recording


The instrument, pointed at your site

Now measure a page you are responsible for.

Paste any public URL. A real Chromium loads it, waits for the fonts, finds every button, link and field, and measures each one as rendered. Then it replays the recording against each rectangle and reports how often that hand would stay inside it. Target size is a layout property, so there is no way to answer this by reading the HTML. The page has to be laid out and measured.

Public pages only. Private addresses, cloud metadata endpoints and anything that is not a web page are refused before a browser opens.


What we already measured

The web, against one recorded hand.

A defined list of sites where being unable to click has a consequence: government services, healthcare, the disease organisations whose own audiences have tremor, and the accessibility vendors who sell the audits. Every figure below is recomputed from stored measurements, and the list is committed to the repository so the set cannot be quietly curated after the fact.


Provenance

260 people, not one flattering recording.

Every accessibility simulator on the market generates tremor from a parameter. You drag a control labelled intensity and the cursor wobbles. Nothing about it came from a human being.

These recordings came from people with a diagnosis, captured on an Apple Watch Series 4 at 100 Hz during a standardised neurological assessment and published on PhysioNet. We measured all 1,560 postural recordings from 260 assessed people, not the one that makes the best argument.

That mattered. The recording this page opens with turns out to be the second cleanest in the entire set, and presenting it alone would have been true of that person and misleading about everyone else. Only 3.3% of recordings contain a detectable tremor at all. The distribution is below, including the part that weakens the claim.

We do not diagnose anyone. Condition labels are reproduced from the dataset. Nothing here infers one.

Selected recording

Frequency content of the recording. The peak is the tremor. The shaded band is the published parkinsonian rest-tremor range, 4 to 7 hertz.

Hit rate against target size for the selected recording, one line per mouse sensitivity. The marker at 24 px is the AA minimum, the marker at 44 px is the AAA enhanced size. The same data is in the table below.

Fraction of time the cursor is inside the target. Computed in your browser, now, from the committed recording.

How, and what we are not claiming

The physics is not ours. The measurement is.

Acceleration to distance

A watch measures acceleration; a pointing task cares about distance. For roughly sinusoidal motion the two are related exactly, so we integrate twice in the frequency domain, where integration is a division rather than a running sum. Summing twice in time turns any small offset into a parabola. Band-limiting to the clinical tremor range removes that singularity before it can do damage.

The frame took three attempts

Integrating the device's own axes is wrong, because the wrist turns and smears the signal between them. A gravity-seeking attitude filter is worse: this dataset's channel is already gravity-free, averaging 0.001 to 0.14 g, so the filter was reading noise as vertical and reported 73° of tilt on a still wrist. What ships is gyroscope-only de-rotation, which needs no gravity, leaving a frame that is fixed but of unknown orientation. Every figure is then the median across 120 plane projections, because we cannot say which plane a mouse moves in.

Millimetres to pixels

A mouse at 800 cpi moves the cursor 31.5 pixels per millimetre of hand movement. A finger on a 96 dpi screen covers 3.8. Those differ by 8.3x and using the screen figure for a pointing task understates every result, which is a mistake we made once and caught. The mapping also depends on the operating system, so it is swept rather than asserted.

The generous reading

Our metric assumes the person has already aimed perfectly and charges the tremor only for the wobble around that aim. Real pointing is harder, because acquiring the target is the difficult part. We chose the most forgiving measure available so the result cannot be dismissed as a pessimistic model.

What already exists, so nobody has to catch us

SUPPLE++ (Gajos, Wobbrock & Weld, UIST 2007; CHI 2008) computed a per-user minimum target size in pixels and beat manufacturer defaults by 26% on speed. It derives size from expected movement time, on a desktop, from a motor test that took motor-impaired participants 30 to 90 minutes.

ABD-MT (Kong, Zhong, Fogarty & Wobbrock, MobileHCI 2024) ships open-source code that enlarges a keyboard when a user has tremor, and argues against "a single minimum target size" exactly as we do. Its tremor signal is a boolean from touch variability, and the size comes from finger footprint, not from an amplitude.

Sarcar et al. (IEEE Pervasive Computing, 2018) maps tremor amplitude in centimetres to key size in dp. The amplitudes are population values taken from the literature; the authors name measuring the individual as future work.

axe-core and Lighthouse check target size against a flat constant. axe-core's own rule page names "people who have mobility impairments such as hand tremors" as the beneficiaries, and then applies 24 px to everyone.

Funkify and other simulators have a tremor mode. It is synthetic, parameterised and qualitative, designed to build empathy rather than to produce a number.

Measuring your own tremor is a solved problem. StudyMyTremor has reported amplitude in millimetres from a phone since 2016, and a dozen apps do something similar. We are not claiming that part.

The 24 px number traces to Parhi, Karlson & Bederson, MobileHCI 2006, a one-handed thumb study of able-bodied participants. The 44 px AAA figure is platform convention. The data is PADS (Varghese et al., npj Parkinson's Disease, 2024), on PhysioNet under CC BY-NC-SA 4.0.

What is actually new here. Not measuring tremor, and not the idea that target size should adapt to a person. It is the join nobody has published: taking clinically recorded tremor, in physical units, and evaluating WCAG 2.5.8 itself against it, on pages that are actually shipping.