Joystick Test – Online Joystick, Flight Stick & HOTAS Tester
This joystick test reads your flight stick, HOTAS, throttle, rudder pedals, racing wheel or arcade stick straight from the browser and shows the raw data it sends: every axis on its own bar, every button in a numbered matrix, each hat switch on an 8-way compass, and a log of each input with millisecond timing. The page captures the range every axis reaches, so a throttle that stops at 92% or a twist axis that never recentres shows up in seconds. Everything runs locally: no driver, no download, and no input data leaves your computer.
How to test a joystick online in five steps
- Connect the device and press a button. Browsers hide game controllers until one sends input, so the page stays empty until then.
- Check the Device card: it shows the connection status, the guessed device type, the axis, button and hat counts, and the update rate.
- Sweep every axis. Run the stick, twist, throttle, pedals and every rotary from stop to stop. Travel should reach 100% on each.
- Press every button and every hat direction. Tested buttons and hat directions turn green.
- Read the event log with your hands off the controls if you suspect something wanders or fires on its own.
Reading the tester panels
The page shows what the device reports, in the order it reports it. Inputs get names only when the browser says the device uses the standard gamepad layout.
Axes and range calibration
Each axis gets a bar with a live marker, a shaded band for the range captured since the last reset, the current value and a Travel percentage; hover a row for the exact minimum and maximum. Travel is the captured span divided by the full −1 to +1 span; the row turns green once both ends get within 0.02 of ±1. A band that stops short on one side points to a worn potentiometer, a slipped magnet, a mechanical stop, or a calibration saved in the vendor's tool.
XY plot with any axis pair
Pick any two axes for the plot. The default is axes 0 and 1, which is the main stick on almost every flight stick. Plot the two toe brakes against each other to check they are independent, or circle the stick against its gate for a circularity figure. Most flight sticks have a square throw, so expect overshoot at the diagonals.
Hat switch compass
Every hat the page finds gets an eight-way compass. The live direction lights up, each direction you have pressed stays marked, and a counter shows how many of the eight you have reached. A hat that never produces a diagonal shows up immediately. On controllers with the standard layout, the d-pad (buttons 12–15) gets a compass too.
Button matrix
Every button the browser reports gets a cell. The page itself supports up to 128. A lit cell is held right now, a green outline means the button has been tested, and a thin bar shows the pressure on analog buttons. The numbering switch changes the labels from browser indices (starting at 0) to Windows numbers (starting at 1), so you can match them to the numbers in your game or in Windows.
Event log
The log keeps the last 100 events, newest first. Each one has a timestamp in seconds since the log started (to the millisecond) and a Δ column with the gap since the previous event. Axis movement is recorded in steps of 0.05, at most every 100 ms per axis, so a full sweep produces a few lines rather than hundreds. Pause, Clear and Copy (for a support ticket) sit above it. Button presses that nobody made, or a press and release a few milliseconds apart, are the fingerprints of ghost inputs and switch bounce.
Flight sticks, HOTAS, throttles and rudder pedals
A flight stick tester has to handle far more than two sticks and four triggers:
- Flight sticks report X and Y for the main stick, usually a twist axis for rudder, and often a small throttle wheel or lever. Hat switches arrive as a single POV axis (see below).
- HOTAS sets connect in one of two ways. Some plug the throttle into the stick and arrive as one large device. Others give each half its own USB cable, so the browser lists two devices; pick each one with the numbered slots on the Device card.
- Throttles rest at one end, not the centre. A throttle at idle reads near −1 or +1, which is normal. What matters is that Travel reaches 100% and the value moves smoothly with no jumps.
- Rudder pedals normally report three axes: rudder plus one for each toe brake. Plot the two brakes against each other; pressing one should not move the other.
If an axis twitches on its own, leave the device untouched and watch the event log: every change of 0.05 or more is recorded with its time. The stick drift test measures resting drift, noise and a suggested deadzone for sticks.
Racing wheels and arcade sticks: input only
Wheels, pedal sets and shifters work as a joystick tester input source like anything else: steering is usually axis 0 and the pedals appear as separate axes. Sweep lock to lock and press each pedal to the floor; a combined-pedal mode shows throttle and brake sharing one axis. Force feedback cannot be tested in a browser. The Gamepad API only offers rumble effects for gamepads, not the torque effects a wheel base uses, so force feedback still needs the manufacturer's control panel or a game. Arcade sticks report their lever as a d-pad or two axes; check all eight directions.
Why buttons and axes show odd numbers
Most "wrong number" complaints have one of four causes:
- Counting from 0 versus 1. The browser numbers buttons from 0. Windows and most games number them from 1, so browser button 4 is Windows button 5. Use the numbering switch above the matrix.
- Axes are placed by HID usage, not by count. On Windows, Chrome and Firefox place each axis according to the HID usage the device declares: X is axis 0, Y 1, Z 2, Rx 3, Ry 4, Rz 5, then Slider, Dial and Wheel. A stick with no Rx or Ry therefore shows gaps that always read 0, and a hat switch usually lands at axis 9.
- Chrome and Edge stop at 32 buttons. Chromium's Windows backend drops buttons above 32 and caps axes at 16. Windows' own control panel also shows 32 buttons, even though DirectInput supports 128. Buttons above 32 on a large HOTAS may therefore be invisible in Chrome while still working in a sim.
- Standard mapping reorders everything. When the browser recognises a gamepad, it rearranges the inputs into the standard layout and the matrix shows names such as A or LB instead of numbers. Flight hardware almost never gets standard mapping, so you see the raw order.
Hat switches, POV and the value 1.28
A DirectInput hat switch (also called a POV) is one value, not four buttons. Browsers map its eight positions onto a single axis: −1 is up, and each step of 2/7 moves one direction clockwise. When the hat is released, the value sits outside the normal range, usually at about +1.286. That is why testers without hat decoding show an "axis" stuck above 1. This page treats any axis that goes past ±1.05 as a hat and moves it to a compass. On Linux, browsers usually report a hat as two axes that snap between −1, 0 and 1 instead. Those stay in the axis list, jumping between the ends with nothing in between.
DirectInput vs XInput
Windows has two game-controller interfaces. XInput is the Xbox model: two sticks, two triggers, a d-pad and a fixed set of buttons, for at most four controllers. It cannot describe a throttle quadrant or a 30-button grip, so flight and sim hardware uses plain USB HID, which games read through DirectInput or raw input. The browser reads both kinds of device. XInput pads arrive with standard mapping and no USB IDs; HID devices arrive raw, with vendor and product IDs shown on the Device card. For Xbox pads, the Xbox controller test adds rumble and trigger-motor checks.
Compared with Windows "Set up USB game controllers"
Windows' built-in tester (joy.cpl, or Set up USB game controllers) is still worth knowing. How they differ:
- Calibration. joy.cpl can write a calibration that DirectInput games then use. This page never writes anything. It records the range the device reports, so you can tell a hardware fault from a bad saved calibration.
- Buttons. joy.cpl's test page shows 32 buttons. This page shows every button the browser exposes, with a tested state for each.
- History. joy.cpl only shows the live state. This page keeps each axis's min/max and a timestamped event log, which is what catches an intermittent ghost press.
- Platforms. joy.cpl is Windows-only. This page runs in Chrome, Edge and Firefox on Windows, macOS and Linux. Safari recognises fewer non-standard devices, so use another browser if it does not list yours.
Use both. If a device reads correctly here but a game ignores it, the fault is in the game's bindings or in a layer such as Steam Input, not in the joystick.
For a regular pad, the gamepad tester shows it on a controller diagram, and the PS5 DualSense test and Joy-Con test cover features specific to those controllers.
Frequently asked questions
Windows sees my flight stick, but the game (or this tester) doesn't. What should I check?
Press a button first: browsers hide every controller until it sends input. If the page still shows nothing, confirm the device appears in joy.cpl, try a USB port directly on the PC, and close vendor software that may hold the device exclusively. In Steam games, a common fix is to untick Steam → Settings → Controller → Generic Gamepad Configuration Support and restart the game.
Why don't buttons above 32 on my HOTAS register?
Many programs stop at 32 buttons per device, including Windows' game controller panel and Chromium-based browsers (Chrome and Edge). DirectInput itself supports 128. If the high buttons are missing here in Chrome but work in your sim, the hardware is fine. To use them everywhere, renumber them in the vendor's software or route them to a virtual joystick with vJoy and Joystick Gremlin.
My throttle levers (Z axis and Z rotation) don't move in Windows Game Controllers. Is the throttle broken?
Sweep each lever here and watch its axis bar. If the value moves and Travel reaches 100%, the hardware works, and the problem is a saved calibration or a software conflict. In that case, reset the Windows calibration to default and calibrate in only one tool, either Windows or the manufacturer's, not both. If an axis does not move here either, or stops partway, suspect the sensor or its cable.
My X56 throttle triggers ghost inputs: the view changes, flaps extend, or it goes to full throttle on its own. How do I prove it?
Leave the throttle untouched with this page open and watch the event log. Button presses you did not make, often only a few milliseconds long in the Δ column, confirm the ghosting. X56 owners most often trace it to USB power, so plug the throttle into a powered USB hub or a different port. A common workaround is a short press delay in the vendor profile software, which filters out the very short ghost presses.
joy.cpl is missing controllers that work fine in Device Manager. Does that mean they're faulty?
Not necessarily. On Windows, browsers read controllers through raw HID input rather than the joy.cpl list. If a device shows up here with working axes and buttons, the hardware and its USB connection are fine, and the problem is in the Windows game-controller layer or a driver. Reinstall the manufacturer's driver and remove stale device entries in Device Manager.
My hat switch is detected as an axis instead of a POV. Is it broken?
No. That is how the browser reports a hat. A POV hat is one value with eight positions, which browsers expose as a single axis that rests near +1.29 when released. This page decodes it into the compass. If all eight petals light up, the switch is fine, and any stuck look direction in a game comes from how that game reads the axis. Bind the hat as a POV or "look" control there, not as an analog axis.
How do I fix Z-axis (twist) drift on my Thrustmaster joystick?
First measure it. Leave the stick untouched and watch the twist axis bar and the event log: small flicker around centre is noise, while repeated spikes or a slow wander point to a worn sensor. Reset any saved calibration, connect straight to the PC, then sweep the axis again and check that Travel reaches 100%. In the sim, add only as much deadzone as it takes for the aircraft to stop yawing while you are hands-off.
Can this page test force feedback on my racing wheel or joystick?
No. A web page cannot send force-feedback effects. The Gamepad API only exposes rumble for gamepads, not the constant-force and spring effects a wheel base or force-feedback stick uses. This tester checks the input side: steering range, pedal travel, buttons and shifters. For force feedback, use the manufacturer's control panel.