Skip to content

Gamepad tester

Live buttons, triggers and axes for every connected controller, with stick drift and circularity tests.

Resting drift test length

Press any button on your controller to connect it

Browsers keep controllers hidden from a page until you press a button while it's open, so sites can't see what you have plugged in.

  • Plug it in by USB, or pair it over Bluetooth in your system settings first: the browser only sees controllers your system recognizes.
  • Press a face button rather than moving a stick. Some browsers only wake up on a button press.
  • Nothing yet? Click anywhere on this page and press again. Some browsers only pass controller input to the window in front, and none to a background tab.
  • Safari generally shows only controllers that macOS or iOS support natively, such as Xbox, PlayStation and Switch Pro controllers. Some browsers, Firefox in particular, report some controllers without the standard layout; you then get numbered lists instead of the diagram.
  • If Steam is running, it can take over a controller and present it differently. Close Steam if it doesn't show up or looks wrong.

Summary

  • Gamepad API

    Not tested

    Checking whether your browser can read controllers.
  • Controllers detected

    Not tested

    None yet. Press a button on your controller while this page is open.
  • Buttons, sticks and vibration

    Not tested

    Nothing to test until a controller connects.

How the tester reads your controller

The page uses the browser's Gamepad API. Controllers don't send events to web pages the way a keyboard does; instead the page asks for the latest state of every connected controller once per display frame and redraws only what changed. Each button reports whether it's pressed and a value from 0 to 1, which is what makes analog triggers readable, and each axis reports a value from −1 to 1. Nothing is recorded or sent anywhere.

When the browser recognizes a controller it maps it to the standard layout, and you get a diagram with every button numbered by its index. Otherwise you get lists of every button and axis, in the order the controller reports them. A button counts as tested the first time it registers a press, and an axis once it moves 0.5 (half a full push) from where it started.

The data rate beside each controller counts how often its timestamp changes, which is how often new data arrived. Because the page can only look once per frame, that count can't exceed your display's frame rate, so it shows a lower bound for fast controllers rather than their true polling rate.

Stick drift explained

Drift is a stick reporting movement while nobody touches it. Stick sensors wear, collect dust and lose calibration, and the resting point creeps away from center. The resting drift test records both sticks every frame for the time you choose, skipping the first 0.5 second while a stick you just let go springs back. If either stick moves sharply during the test, someone touched it, and the test stops rather than report a false result.

You get three numbers per stick. The resting offset is how far the average position sits from center, where 1 is a full push. The furthest from center is the worst single reading, which is what a deadzone has to cover. The jitter is how much the readings scatter around their own average, which is noise rather than drift. The verdict uses the furthest reading: under 0.05 is fine, 0.05 to 0.1 is noticeable in games with small deadzones, and past 0.1 is likely to move things on screen by itself.

Circularity

A stick's range should be a circle: pushed all the way in any direction, it should read 1. The circularity test divides the circle into 72 directions of 5° and keeps the furthest reading in each while you rotate the stick around its rim. The circularity error is the average distance between that outline and a perfect circle, as a percentage. It is only reported once the stick has reached the rim in 90% of directions, because a half-traced outline says nothing about the other half.

Readings above 1 are common. Many sticks sit in a square or octagonal gate whose corners let the stick travel further than its sides, so diagonals read up to about 1.4 and the error rises without anything being wrong. The more telling sign is a direction where the stick can't get past about 0.9: that stick won't reach full speed or full turn that way, which the test points out.

Deadzones

A deadzone is the area around center that a game treats as zero, so small resting errors don't move anything. Most games use an inner deadzone somewhere between 0.05 and 0.25 of a full push, and many let you change it. Set it just above the furthest-from-center reading from the drift test and the stick will rest quietly without wasting more of its travel than it needs to.

Some games also have an outer deadzone, treating anything near the rim as a full push. That hides a stick that falls a little short of 1, but not one that falls well short, which is why the circularity test reports the weakest direction as well as the average error.

Vibration

Where the browser supports it, the vibration test plays short effects on the strong and weak motors, and on the trigger motors when the controller reports them. The browser can only say that it sent the effect, not that the motors ran, so the test asks whether you felt it.

Questions

Why isn't my controller detected?

Browsers keep controllers hidden until you press a button while the page is open, so press a face button first; moving a stick isn't always enough. Check that your system recognizes the controller, over USB or after pairing it over Bluetooth, click on the page so its window is in front, and press again. Safari generally shows only controllers macOS and iOS support natively. Software that takes over controllers, such as Steam's controller support, can hide or rename one, so try again with it closed. A page embedded in another site can also be blocked from reading controllers; open the tester directly.

What is stick drift?

Drift is a stick reporting movement when nobody is touching it, most often because its sensors have worn or collected dirt so its resting point has moved off center. Games ignore a small area around center, called the deadzone, so a stick resting within 0.05 of center goes unnoticed. Once it wanders past about 0.1, beyond the deadzones most games ship with, your character or camera starts to creep on its own.

What is a normal circularity error?

There is no single right number, because it depends on the shape of the gate around the stick. A stick with a round gate usually lands somewhere around a few percent up to about ten. Sticks with square or octagonal gates read past 1 toward the corners, which pushes the error well above that without anything being wrong. What does point to a problem is a stick that falls clearly short of the rim in one direction, or an error that has grown compared with the same controller when it was new.

Why doesn't vibration work?

Vibration needs three things to agree: the browser, the controller and the connection. Chrome and Edge let pages vibrate controllers; Firefox doesn't, and Safari's support depends on its version and the controller. Some controllers have no motors, and some drivers or wireless connections don't pass vibration through to the browser. Trigger rumble only appears where the browser reports that the controller supports it. If the page plays an effect and you feel nothing, try a USB cable before blaming the motors.

What's the difference between standard and non-standard mapping?

When a browser recognizes a controller, it rearranges its inputs into the standard layout: the same 17 buttons and four stick axes in the same order, whatever the brand. The tester can then draw a diagram and name each button by position. A non-standard mapping means the browser passed the inputs through in whatever order the controller reports them, so the tester lists every button and axis by number instead. Those numbers may not match the labels on the controller, and the same controller can be standard in one browser and non-standard in another.

Why does the data rate never go above my screen refresh rate?

Controllers don't send events to web pages. The page reads the latest state once per display frame, so on a 60 Hz screen it can see at most 60 updates a second, even from a controller that reports 250 or 1000 times a second. A number that matches the frame rate means the controller is at least that fast. A lower number usually means the controller only sends data when something changes, so move a stick while you watch it.

How long does the circularity test need?

Until the stick has reached its rim in at least 90% of the 72 directions the test tracks. Two or three slow turns, pressing the stick firmly against the edge the whole way, is usually enough. Fast spins skip directions between display frames, so going slowly fills the outline in sooner.