Multi-Controller Tester

Connect two or more controllers at once. Each one gets its own live panel, showing real button presses and stick movement independently and simultaneously.

Hardware diagnostics / Gamepad

Multi-Controller Input Lab

Side-by-side browser input streams, individual player activity and a synchronized event timeline.

Waiting for controllers
Connect two or more USB/Bluetooth controllers and press a button on each. The browser reveals devices after initial interaction.
Connected controllers0
Currently active controllers0
Peak concurrent activity0
Logged input events0
No gamepads visible yet. Connect and activate each controller to show its own card.

Combined input timeline

Recent browser-observed device, button and axis events, labeled by gamepad slot. The latest 250 entries are kept in memory.

TimeController slotInputEventValue
No events recorded yet.

What the readings mean: Values come from navigator.getGamepads() (browser and driver mapping), not direct USB packets. A slot number can change after reconnection; controller IDs are not unique hardware serials. The axis threshold affects only visual activity and event logging, not hardware deadzones. Simultaneous observations cannot prove exact input latency or certify lack of controller cross-talk. CSV export is local and user-initiated.

★ ★ ★ ★ ★
No ratings yet — be the first

What Is a Multi-Controller Tester?

This tool detects every controller currently connected to your system - not just the first one - and gives each a dedicated live panel showing its real button presses and stick positions independently. It's built for situations a single-controller test can't handle: checking that all controllers work correctly before a local multiplayer session, or comparing two controllers of the same model side by side to spot a difference between them.

How to Use the Multi-Controller Tester

  1. Connect two or more USB/Bluetooth controllers and press a physical button on each one. Browsers may hide a controller until the first interaction.
  2. Check the Connected Controllers counter and identify each controller by its Gamepad API slot index and browser-reported name. Slots can change after reconnecting.
  3. Press a button on one controller at a time. Its individual card should highlight the corresponding B-index, increase its press-transition count, and add a labeled row to the combined timeline.
  4. Move both analog sticks and triggers, checking the live stick plots and raw A-index values. Use Axis Activity to change the visual movement threshold; it does not alter the gamepad's deadzone.
  5. Use two controllers simultaneously and compare Currently Active and Peak Concurrent counts. This shows overlapping browser observations, not certified input latency.
  6. Temporarily use Pause Monitoring / Resume Monitoring, or Refresh after a device is connected. Disconnect a controller to confirm that its card disappears and its activity is logged.
  7. Select Export CSV to download the most recent 250 input-event records, or Clear History to start a new observation session. Export is initiated by you and stays local unless you share the file.

How It Works

This tool calls navigator.getGamepads() every animation frame, which returns an array covering every controller the browser currently recognizes, indexed by connection slot. Rather than reading only the first entry, it iterates through the entire array and builds or removes a live panel for each index as controllers connect and disconnect, reading each one's real buttons and axes arrays independently and simultaneously.

Understanding Your Results

  • Each controller gets its own responsive panel with no cross-talk - your system is correctly distinguishing between multiple connected controllers, which is the expected healthy behavior.
  • Pressing a button on one controller lights up the wrong panel - worth double-checking which physical controller you're actually holding; this is more often a mix-up than an actual detection fault.
  • A controller's panel disappears unexpectedly while still connected - could indicate an intermittent connection issue, particularly common with Bluetooth controllers experiencing signal interference.
  • Only some of your connected controllers show a panel - press a button specifically on the missing one, since browsers only reveal a gamepad after it sends its first input.

Browser Limitations

The number of controllers a browser can track simultaneously is generally limited only by your operating system and available USB/Bluetooth connections rather than the browser itself, though very high controller counts are uncommon enough that testing has generally focused on smaller numbers. Some systems may also reassign connection index numbers if a controller disconnects and reconnects, which can shift which panel represents which physical device.

Common Mistakes to Avoid

  • Forgetting to press a button on each controller - every controller needs its own initial input before appearing, even after others are already detected.
  • Assuming panel order matches physical connection order permanently - disconnecting and reconnecting can shift index assignments; always verify by pressing a button and watching which panel responds.
  • Testing wireless controllers too far from the receiver - keep controllers within normal range to avoid connection drops that could be mistaken for a detection problem.

Frequently Asked Questions

How many controllers can this tool handle at once?

It tracks every controller your browser and operating system currently recognize - there's no fixed limit built into this tool itself, though practical limits depend on your system's available connections.

Why does a controller's panel disappear even though it's still plugged in?

This usually indicates an intermittent connection or driver-level disconnect being reported to the browser, which is more common with Bluetooth controllers than wired ones.

Can I use this to check for input lag between controllers?

This tool shows live button and stick status but doesn't measure precise timing differences between controllers; for reaction-based timing, see the dedicated Reaction Time Test.

Is my controller data stored or sent anywhere?

No. All controller data is read and displayed locally in your browser only, for the current session, and is never transmitted or saved.

Does this work with a mix of different controller brands connected together?

Yes, any combination of controllers recognized by the standard Gamepad API will each get their own panel regardless of brand or model.

Conclusion

Before a local multiplayer session, or whenever you need to confirm several controllers are all functioning correctly at once, this gives you a clear, simultaneous view of every connected device. For a deeper single-controller check, use the Gamepad Tester.