Controller button test
Press every button once and the checklist ticks it off, so a dead button stands out. Then run the chatter test: press one button about twenty times at a normal pace. If the browser sees an extra press within a few milliseconds of a release, that switch is bouncing.
Controller bench
No controller yet
Turn your phone sideways for the full bench.
Press any button on your controller — browsers only show a pad after its first press.
Button check
Press every button once to tick it off. Then run the chatter test: press each button slowly, about 20 times.
Verdict
Connect a controller and run a check — the verdict shows up here.
Checklist for this controller
- Press each button and D-pad direction once until the list is complete.
- Click both sticks in (L3 and R3).
- Pull each trigger slowly to full and release.
- Run the chatter test on any button that misbehaves in games.
How to fix it
- A button that never registers usually has a worn contact or membrane.
- Double presses mean a bouncing switch; cleaning sometimes helps, otherwise the switch needs replacing.
- A button that stays pressed after release is often sticky from dirt — clean around it.
- A trigger that never reaches 100% may need recalibration or has a worn sensor.
FAQ
How do I check if all buttons on my controller work?
Press each one on this page; the checklist marks every button the browser has seen.
Why does my controller press a button twice?
Worn switches bounce: the contact opens and closes again within milliseconds. The chatter test shows how often it happens.
Can a website detect a stuck button?
Yes. If a button stays reported as pressed while you aren't touching it, the bench shows it as held.
Can the bench catch every double press?
Not the very shortest. Chrome updates the Gamepad API about every 4 ms, so a bounce quicker than that can slip between two reads. The experimental deep mode sees every report the pad sends and is the finer tool.
Does it show how hard I press a face button?
No. Digital buttons report only pressed or released, so the browser gets no pressure for them. Triggers are analogue and show their full travel.