The tool you need, ready to use

Gamepad Tester

Connect your controller over USB or Bluetooth and press any button: the buttons in the drawing fill in and the circles on either side trace the sticks. Push a stick to its edge and turn it slowly, and the distance reached in each direction stays as an outline. With your hands off, press Start check under 5-second drift check to compare how far a stick moves by itself against deadzone reference rings. Nothing is stored or sent.

Last updated 2026-10-22All math stays in your browser
Example controllerConnect a controller and press any button to switch to yours
Left stickLS
X
—
Y
—
Distance
—
Reached
—

Push to the edge and slowly make two full circles

 

LT RT LB RB LS A B X Y RS

This is an example screen. Press any button on your controller to switch to your own input.

Right stickRS
X
—
Y
—
Distance
—
Reached
—

Push to the edge and slowly make two full circles

 

    5-second drift checkExample

    Let go of the sticks and buttons and set the controller on a flat surface before you start. The page averages the values it reads over 5 seconds and finds the farthest distance from the center.

    Left stickMean —Max — 
    Right stickMean —Max — 

    Unity default deadzone 0.125XInput recommended left 0.240 · right 0.265

    Vibration testConnect a controller to use these buttons
    Recent input

      Last updated 2026-10-22Your inputs are not stored

      ROBERIN standardThe tool you need,
      ready to use.
      • Clear at a glanceInputs and results sit where you expect them.
      • Result firstThe key number comes first; the working only when you need it.
      • Ask lessNo sign-up and no unnecessary details.

      Press one button and the controller drawing and both stick circles start moving

      Connect your controller with a USB cable or over Bluetooth, keep this page open and press any button once. From that moment the button you press fills in on the central drawing, and the circles on either side show where the left and right sticks are right now and the path they have traveled. The chips below count how often each button was pressed, and once you have pressed all 17 the summary reads Buttons checked 17 / 17. Triggers report how deep they are pressed as a value from 0 to 1, and a trigger that never reaches the end leaves an orange mark on its chip.

      If your character seems to walk on its own, let go of the controller and press Start check under 5-second drift check. For 5 seconds the page plots what the sticks send on a magnified scatter plot, then shows the mean position and the farthest distance from the center next to the default deadzones published by Unity and Microsoft XInput. Push a stick to its edge and turn it slowly, and the distance reached in each direction stays behind as an outline, so you can also see which side falls short. Input is processed only inside this browser; nothing is stored or sent to a server.

      When to check a gamepad: a character that walks by itself, a dead button, a trigger that will not go all the way

      It is hard to tell whether a controller problem comes from the game's settings or from the hardware. Close the game and repeat the same motion in the browser, and you can narrow down whether the signal is already wrong at the controller or the problem sits in the game.

      • The camera creeps or the character walks with your hands off: this is the situation where you suspect stick drift. Run the 5-second drift check two or three times and see whether it always leans the same way and whether its size reaches beyond the deadzone rings.
      • One button sometimes does not register: press only that button slowly, many times, and watch whether its counter on the chip goes up by one each time. Also check whether its spot on the drawing fills in.
      • An acceleration or aim trigger feels as if it stops short: press both triggers all the way down and compare whether the maximum reaches 1.00.
      • Buying or selling a used controller: go through the 17 buttons, the reach outline of both sticks, drift and vibration, then copy the log. It gives you something to compare against after the sale.
      • After replacing or cleaning a stick module: compare the circularity and drift numbers with the log you copied before the repair, and you can see in numbers whether it improved.

      How to use it

      1. Connect and wake it up: connect the controller, keep this tab in front and press any button. When the name in the bar above changes from the example controller to your controller's name, you are ready.
      2. Check the buttons: press the four right-cluster buttons, the four D-pad directions, the bumpers and triggers, the center buttons and both stick clicks, one by one, until every chip has a solid outline. Hover over a chip and its spot is highlighted on the drawing.
      3. Pick the labels: when the controller's name shows its maker, the button labels switch automatically. If they look wrong, choose Xbox, PlayStation or Nintendo under the drawing.
      4. Draw the stick outline: push the stick to its edge and slowly turn it two full circles. Once all 36 directions are reached, the mean error and the shortest direction appear under the circle.
      5. 5-second drift check: set the controller on a desk, let go and press Start check. The result appears when the progress bar is full. Pressing Esc or switching to another window cancels it.
      6. Vibration test: in a browser that supports vibration, press both motors, the strong motor and the weak motor in turn and compare what you feel in your hands. Trigger vibration works only on controllers that support it.
      7. Keep a record: Copy log copies the name, the count for each button, axis ranges, circularity, drift and vibration results as text. Reset clears the log and leaves the connection alone.

      Button numbers are set by position, not by the printed label

      When the browser reads a controller with the standard mapping, it gives the 17 buttons and 4 axes fixed numbers by position. Whatever letters the maker prints on the buttons, the same position has the same number. So the bottom button of the right cluster is number 0, whether it says A on an Xbox pad, × on a PlayStation pad or B on a Nintendo pad. The table below lists the positions of the W3C standard mapping with their typical labels.

      NumberPositionXboxPlayStationNintendo
      0Right cluster, bottomA×B
      1Right cluster, rightB○A
      2Right cluster, leftX□Y
      3Right cluster, topY△X
      4Top left front (bumper)LBL1L
      5Top right front (bumper)RBR1R
      6Bottom left front (trigger)LTL2ZL
      7Bottom right front (trigger)RTR2ZR
      8Center cluster, leftViewCreate (PS4: Share)−
      9Center cluster, rightMenuOptions+
      10Left stick clickLSL3LS
      11Right stick clickRSR3RS
      12~15D-pad up, down, left, right↑ ↓ ← →↑ ↓ ← →↑ ↓ ← →
      16Center buttonXboxPSHome

      Inputs that the standard mapping does not include, such as a touchpad click or a capture button, are numbered after 17, so the controller can show 18 or more buttons. On the chips these appear by number, like "Button 17". A controller that the browser cannot read with the standard mapping keeps the drawing dimmed and shows every button and axis only as numbered chips. Because it is impossible to tell which two axes make up one stick, the stick circles and the drift check are not available either.

      Stick directions and the reach outline (circularity)

      A stick arrives as two values, a horizontal axis and a vertical axis. The left stick uses axes 0 and 1, the right stick axes 2 and 3, and each runs from −1 to 1. The horizontal axis is negative to the left, and the vertical axis is negative upward. If Y goes to −1 when you push the stick up, that is simply how the standard defines it. The distance under each circle is how far the stick is from the center, √(X² + Y²): with X at 0.030 and Y at −0.040 the distance is 0.050.

      When you push the stick to its edge and turn it, a gray outline stays inside the circle. This tool splits the directions into 36 slices of 10° and remembers the farthest distance in each. Only slices that reached a distance of 0.5 or more count as reached. Once all 36 are reached, it shows how far on average the outline strays from a radius of 1 (the mean error) and the direction that was pushed the least. The table below gives values from the same calculation.

      Shape at full pushMean errorShortest direction
      Stops at a distance of 1.000 in every direction (round gate)0.0%1.000
      Round, but only the three slices at 30 to 60° up-right stop at 0.8501.3%0.850 · Up-right
      Horizontal and vertical each go all the way, so the diagonal distance exceeds 1 (square gate)12.7%1.004 · Right

      A lower mean error is not a better score. A controller whose horizontal and vertical axes both reach the end on the diagonal ends up square, and a figure in the 12% range is natural for it. What to look at is the shortest direction. If every other direction is near 1 and one direction stops in the 0.8s, the stick does not push all the way that way, so repeat the motion a few times and compare with the other stick. The horizontal and vertical ranges under the circle are the smallest and largest value each axis had reached since the last reset.

      How the 5-second drift check counts

      Stick drift means the value does not return to the center, 0, after you let go, or wanders on its own. From the moment you press Start check, the page collects every value read over exactly 5 seconds: the start time is included and the moment 5 seconds is reached is not. From those values it works out, for each stick, the mean X and mean Y (which way it leans) and the farthest distance from the center (the largest deviation, wobble included). At 60 screen refreshes per second that gives about 300 samples.

      Time since startLeft stick XLeft stick YIn the calculation
      0 ms0.030−0.020Counted
      1,000 ms0.050−0.010Counted
      2,500 ms0.040−0.030Counted
      4,999 ms0.060−0.020Counted
      5,000 ms0.3000.300Skipped (end time)

      This example gives 4 samples, a mean X of 0.045, a mean Y of −0.020 and a maximum distance of 0.063. The 0.300 that arrives at 5,000 ms comes after the check has ended, so it is left out. If you press Esc partway through, switch to another window or tab, lose the connection or pick another controller, the check is canceled and no average is made from the values collected so far. While the check runs, the vibration buttons are locked, because the motors' shaking would mix into the stick values.

      Reading it next to the deadzone rings

      It is common for a stick at rest to send small values. That is why games and game engines use a deadzone, which treats small values near the center as 0. The two dotted rings on the scatter plot are two published defaults. If the maximum distance is smaller than the inner ring, drift is likely to be filtered out in games that use that default.

      ReferenceOriginal valueConverted to −1 to 1
      Unity Input System default minimum deadzone (sticks)0.1250.125
      Microsoft XInput recommended deadzone, left stick7,849 (axis range −32,768 to 32,767)7,849 ÷ 32,767 ≈ 0.240
      Microsoft XInput recommended deadzone, right stick8,6898,689 ÷ 32,767 ≈ 0.265
      Microsoft XInput trigger press threshold (for reference only, not used in this tool's comparison)30 (trigger range 0 to 255)30 ÷ 255 ≈ 0.118

      The result line tells you whether the maximum distance is inside the Unity default, larger than that but inside the XInput recommendation, or beyond even the XInput recommendation. This is a comparison, not a fault verdict. In a game with a small deadzone, or when you have reduced the deadzone in the settings, drift of around 0.05 can show up on screen, and in a game with a large deadzone even a big drift may go unnoticed. If the mean is small and only the maximum distance is large, the stick may have wobbled right after you let go or the controller may have moved, so leave it still and run the check again.

      Trigger depth and the maximum mark

      Triggers 6 and 7 of the standard mapping report how far they are pressed as a value between 0 and 1. The trigger bar in the drawing fills to that value while the current value appears as a number next to its name, and the chip bar shows the same value. If the deepest press in this log is below 1, an orange vertical line stays on the chip bar, so you can spot a trigger that does not reach the end at a glance. For example, if you press the right trigger to 0.35, push it all the way down and then release it to 0.20, the current value is 0.20 and the maximum is 1.00.

      The point at which a trigger counts as "pressed" is decided by the browser and the controller. The bar can therefore be partly filled while the chip has not yet switched to pressed. If you changed trigger stops (a feature that reports a short press as a full press) or sensitivity in the controller's own app, the values shown include that setting.

      Vibration test: run the two motors separately

      Most controllers produce vibration with two motors of different kinds. The browser standard defines the strong one as low-frequency and the weak one as high-frequency vibration, and the Microsoft XInput documentation describes the left motor as low-frequency and the right motor as high-frequency. This tool sends both motors, the strong motor only and the weak motor only, each for 0.8 seconds at full strength, so you can find out when only one grip fails to buzz. In a controller and browser that support trigger vibration, the left and right triggers can also be tested separately.

      BrowserDual-motor vibrationTrigger vibration
      Chrome and Edge (Windows, macOS and others)Supported (from Chrome 68)From Chrome 126, supported controllers only
      Safari (macOS)Supported (from 16.4)Not supported
      FirefoxNot supportedNot supported
      Safari on iPhone and iPadNot supportedNot supported

      The vibration buttons can be pressed only when the browser exposes vibration for this controller. When the browser reports "complete" after a command, that means the command finished, not that the motor actually shook. Judge vibration by what you feel in your hands. If another command cuts in, the result is "preempted", and while the tab is hidden the command is rejected. On a wireless connection, a power-saving setting or another app using the vibration can make it feel weak.

      When the controller does not show up, or its name or button count looks wrong

      To protect privacy, the browser keeps the controller list empty until the user presses a controller button or moves a stick while the page is visible. Plugging in the cable alone shows nothing, which is normal, so press a button once. If nothing changes, go through the steps below.

      1. Check in your operating system's Bluetooth or device settings that the controller shows as connected.
      2. Try another USB port or another cable. A charge-only cable does not carry the signal.
      3. Repeat the same steps in another browser among Chrome, Edge, Firefox and Safari. Supported controllers and connection types differ from browser to browser.
      4. If Steam Input or a controller utility is running, close it and test again. Such programs can convert the signal so that the name and button count look different.

      With two or more controllers connected, a selector appears in the bar above. Each number the browser assigns (Pad 0, Pad 1 and so on) keeps its own count. A controller that disconnects stays in the list as offline, and if it reconnects under the same number with the same name, counting continues. If a different controller connects under that number, a new record starts. When the controller you were viewing disconnects, the display switches to another connected controller, and the recent inputs also show which pad each input came from by its number.

      Common mistakes

      • Reading the sign of Y the wrong way: in the standard mapping, up is negative. Getting −1 when you push up is normal.
      • Observing drift with a hand still on the stick: even a thumb that barely touches the stick changes the mean. Set the controller on a desk and let go before you start.
      • Judging by the mean error of circularity alone: a controller with a square gate shows 12% even when it is fine. Look at the value of the shortest direction too.
      • Tapping a button extremely fast to test the count: this tool reads the state on every screen refresh. On a screen that refreshes 60 times a second, a press and release shorter than about 16.7 ms can end before it is read and be missed.
      • Finding the number from the printed label: the A on a Nintendo controller is the right button of the right cluster, so it is number 1. Numbers follow the position, not the letter.
      • Treating complete as proof of vibration: the browser's complete only means the command is finished. Check the shaking by hand.

      Limits

      • This tool sees only the values that reach the browser. It does not measure stick wear, the lifespan of button switches, input lag or polling rate, and it does not decide whether anything is broken.
      • The 36 slices with a 0.5 threshold for circularity and the 5-second drift check are counting methods set by this tool. They are not a manufacturer's normal range, and for exchanges or repairs you should follow the seller's and manufacturer's guidance.
      • The deadzone rings are defaults published by Unity and XInput. Real games use their own values, and a settings menu may change them.
      • Values are read on every screen refresh, so inputs shorter than that can be missed. While the tab is hidden, reading stops and input during that time is not counted.
      • If a controller app, Steam Input or an operating system accessibility setting changes the signal, you see that result as it is. There are also combinations in which the browser does not support vibration or some buttons.
      • The log is not saved and disappears when you reload or close the page. This describes how the measurement data is handled and does not mean that the whole site makes no network requests.

      Sources

      Sources checked on 2026-10-22. The 36 slices with a 0.5 threshold for circularity and the 5-second drift check are counting methods set by this tool.

      Frequently asked questions

      I connected my controller but nothing shows up on the screen.

      While this page is visible, the browser does not tell it about a controller until you press a button on it. Keep this tab in front and press any button. If nothing changes, check in your operating system settings that it is connected, then try another USB port or another browser.

      How do I check for stick drift?

      Set the controller on a flat surface, let go of the sticks and buttons, then press Start check under 5-second drift check. For each stick you get the mean position and the farthest distance from the center over those 5 seconds, and the scatter plot shows which side the points cluster on. Repeat it two or three times and see whether it leans the same way.

      My stick value isn't 0 when I let go. Is it broken?

      Not necessarily. A stick at rest often sends small values, which is why games use a deadzone that ignores values near the center. The Unity default is 0.125, and the Microsoft XInput recommendation is about 0.240 for the left stick and about 0.265 for the right. If the maximum distance stays inside those references, it is likely to be filtered out in a game with default settings. Each game sets its own deadzone, though, so this tool does not decide whether anything is broken.

      What does the circularity mean error tell me?

      With the stick pushed to the edge and turned, the farthest distance in each of 36 directions of 10° is compared with a radius of 1, and the mean error is how far off it is on average. A controller with a square gate, where the diagonal reaches beyond 1, can show about 12.7%, so do not call it good or bad from one number. Check whether the shortest direction shown with it is clearly lower than the others.

      I pushed the stick up and Y comes out negative.

      That is normal. In the browser's standard mapping the vertical axis is negative upward and positive downward, and the horizontal axis is negative to the left and positive to the right. Many games flip it so that up is positive, which can feel reversed.

      The trigger never reaches 1.00 even when I press it all the way.

      If the deepest press on the chip bar is below 1, an orange mark stays there. Press both triggers with the same force a few times and compare the maximums, and check that trigger stops or a sensitivity setting are not turned on in the controller's own app. If only one side is much lower, copying the log gives you something to quote when you ask for support.

      The vibration test buttons can't be pressed.

      They work only when the browser exposes vibration to the page. Chrome and Edge, and Safari 16.4 or later on macOS, support dual-motor vibration, while trigger vibration needs Chrome 126 or later and a controller that supports it. Firefox and Safari on iPhone and iPad have no vibration command. Even if the browser reports complete, check by hand whether the controller really shook.

      Button names on my PlayStation or Nintendo controller look different.

      Switch the labels under the drawing to PlayStation or Nintendo and they show under that name. The browser numbers buttons by position, not by letter, so the bottom button of the right cluster is number 0 whether it says A on Xbox, × on PlayStation or B on Nintendo. When the controller's name shows its maker, the labels are picked automatically.