Initializing, please wait a moment

Click Start to begin; results render below as the diagnostic runs.

Connected pads

None yet. Connect a controller, click Enable, then press any button on the pad (browsers expose pads after a button press).

Buttons (index)
Axes
axes: (idle)
Live readout

Ready. Click Enable gamepad polling, then press a button on your controller. Values stay in this tab - nothing is uploaded.

polls: 0 | presses: 0 | pads: 0

Gamepad / Controller Test


Check connected gamepad or controller buttons and stick axes in the browser.

Click Enable gamepad polling, then press a button on the pad so the browser exposes it.

See live button indicators and axis values update while you hold sticks or triggers. Reset the readout anytime; nothing is uploaded and no account is required.

Reading axis values and the polling panel

Each axis value is shown two ways at once, both from the same underlying number: as plain text rounded to three decimals - a stick resting at center reads "a0=0.000" - and as a horizontal bar whose width is that same value remapped from the browser's -1 to 1 range onto a 0% to 100% bar. Push a stick fully to one edge and the number reads -1.000 or 1.000 while its bar reaches one end. Some controllers report their triggers as axes rather than buttons; those read as a value ramping from 0 toward 1 as you squeeze rather than jumping between two states.

The panel around the button grid and axis readout switches to a highlighted border and background the moment polling starts, so you can tell at a glance whether Gamepad Test is actively listening without watching the status text below it. The button grid itself only rebuilds when the connected pad's button count changes - for example when you swap in a different controller mid-session - so button lights that are already held down don't flicker or reset on every animation frame while you keep pressing them.

← Back to Device Test Tools

Related tools:

  • Camera Test - Check or test your camera online: live preview, resolution readout, switch front and back camera,
  • Keyboard Test - Press each key - the on-screen layout highlights it.
  • LCD Test - Test your LCD screen for dead pixels, stuck pixels, and backlight bleed.
  • Microphone Test - Free microphone test online: live spectrum meter, mic permission check, and optional speaker
  • Device Test Tools - Test camera, microphone, keyboard, and LCD online before meetings.
  • Screen Recorder - Record your screen, camera, or microphone in the browser, blur faces while recording, and download
  • GPU Test - WebGL Benchmark & Info - GPU Test - WebGL Benchmark & Info - See what your browser's graphics stack can do - WebGL 1 and 2
  • Speaker & Audio Channel Test - Test left and right speaker channels with a short in-browser tone.
  • Mouse Test (Buttons & Scroll) - Mouse Test (Buttons & Scroll) - Check left, middle, and right buttons, pointer coordinates, and
  • Touchscreen Test - Touchscreen Test - Check single and multi-touch contacts on a local pad in the browser.
  • Monitor Refresh Rate Test (Hz) - Monitor Refresh Rate Test (Hz) - Measure display refresh rate in the browser, including adaptive
  • Hash Generator (SHA-256/512) - Hash Generator (SHA-256/512) - Hash the text you type or paste into a SHA-1, SHA-256, SHA-384, or

Tags: #device-test

Related guides:

Loading reviews...

Frequently Asked Questions

What does Gamepad / Controller Test check?

Connected pads, button presses by index, and stick/trigger axis values via the browser Gamepad API. Everything stays in the tab.

Do I need to allow camera or microphone access?

No. This tool uses the Gamepad API only - no getUserMedia and no camera or mic permission prompt.

Why does nothing show until I press a button?

Most browsers hide pads until you press a button after the page is open. Click Enable, then press any button on the controller.

Is my controller input uploaded?

No. Poll counts and axis values stay in the page session. Reset clears them; closing the tab drops them.

What if my browser doesn't support the Gamepad API?

Clicking Enable checks for it first. If it's missing, the status line says so directly and suggests Chrome, Edge, or Firefox with a USB or Bluetooth controller instead of starting a loop that would never see input.

What does the status line show besides which button I pressed?

It names the pad's index number, its reported mapping - usually "standard" for common controllers, or blank when the browser hasn't mapped the layout - and a timestamp value taken from the pad's own report, not your system clock. Treat that timestamp as a relative counter, not wall-clock time.

Do I have to click Enable before the status line reacts to my controller at all?

Connecting or disconnecting a controller updates the status line right away either way. The full connected-pad list and the live button/axis readout only start refreshing once you've clicked Enable and the polling loop is running.

Does Reset stop the polling loop?

No. Reset only zeroes the poll and press counters and clears the button/axis display; the underlying loop keeps running in the background if it was already listening, so pressing a button again immediately starts counting up from zero once more.

What shows when more than one controller is connected?

Gamepad Test lists every pad the browser currently exposes, one line per pad, showing the browser-assigned index number, the pad's id string, and how many buttons and axes it reports - for example "#0 Xbox Wireless Controller buttons=17 axes=4". Plugging in a second controller adds a new line to that list, but the button-light grid and the axis readout below it always follow whichever pad the browser reports first; the second pad shows up in the list without driving the grid. Unplugging the pad that drives the grid, with a second pad still attached, hands the grid over to whichever pad the browser now reports first.