Controller Vibration & Haptics Test
Dispatch dual-rumble test pulses, isolate low-frequency and high-frequency grip motors, and verify whether your browser, OS driver, and connection mode expose GamepadHapticActuator.
Plug in your controller & press any button, or test using keyboard emulation / auto demo.
Test heavy (low frequency) and light (high frequency) rumble motors
Test all buttons, sticks, triggers, deadzones, and developer telemetry together.
Overview & Diagnostic Methodology
Check the status badge at the top of the panel first ("No Controller Connected", "Haptic Actuator Ready", or "Actuator Unavailable"). When your browser and OS driver expose a compatible dual-rumble actuator, use the 5 waveform presets or the independent Strong Motor (0%–100%), Weak Motor (0%–100%), and Duration (100ms–2000ms) sliders to test left and right grip motors separately.
How Browser Haptics Work and Why Rumble Can Be Unavailable
Why Vibration Depends on Four Separate Layers: Unlike button and stick inputs—which flow one way from the controller to the browser—vibration requires two-way output reports. Even inside Google Chrome or Microsoft Edge, a connected controller will only vibrate if (1) the physical controller has rumble motors, (2) the USB or Bluetooth connection mode supports standard output reports, (3) the operating system driver exposes a force-feedback/XInput haptic endpoint, and (4) the browser maps that endpoint to Gamepad.vibrationActuator. If any layer is missing, the panel displays "Actuator Unavailable" and disables the trigger buttons.
Interpreting "No Controller Connected" vs. "Actuator Unavailable": When the badge reads "No Controller Connected", the browser has not detected an active gamepad yet (press any controller button to wake it). When the badge reads "Actuator Unavailable", your controller is working for buttons and sticks, but the browser cannot send rumble commands to it. This happens on Apple Safari and Firefox (where GamepadHapticActuator support is restricted or absent), on Nintendo Switch controllers connected to PC without an XInput wrapper, and frequently on PS5 DualSense or PS4 DualShock 4 controllers over Bluetooth on Windows when tested outside Steam Input or DS4Windows.
Isolating Left (Strong) vs. Right (Weak) Grip Motors: Most Xbox and PlayStation controllers use an asymmetric dual-motor layout. The left handle contains a larger counterweight (Strong Motor / Low Frequency) that produces deep, heavy thuds, while the right handle contains a smaller counterweight (Weak Motor / High Frequency) that spins up rapidly for light buzzes. By sliding one motor to 100% and the other to 0%, you can verify whether a drop or worn wire has silenced one side of the controller.
Measurement & Telemetry Classification
Technical distinction between direct hardware reads, client-side algorithms, and educational thresholds.
- Presence or absence of the Gamepad.vibrationActuator (or legacy hapticActuators) object on the active browser Gamepad instance.
- Promise resolution from vibrationActuator.playEffect("dual-rumble", ...) and vibrationActuator.reset().
- Normalized strongMagnitude and weakMagnitude values (0.00 to 1.00) mapped from the 0%–100% UI sliders.
- Configured pulse duration in milliseconds (100ms to 2000ms in 50ms increments) and sequenced multi-step preset intervals.
- Why "Actuator Unavailable" is common: Safari and Firefox do not expose web haptics on many setups, and DualSense/DualShock 4 controllers often require USB or an XInput translator on Windows for browser rumble.
- Left vs. right grip motor asymmetry: why the left grip typically houses a heavier low-frequency weight while the right grip houses a lighter high-frequency weight.
- Hardware vs. API boundaries: why web browsers only receive confirmation that the OS accepted the rumble command, not a physical tachometer reading from the spinning motor.
Key Diagnostic Parameters
How to Test Step-by-Step
- 1Connect your controller (USB is recommended first, as several controllers and OS drivers only expose web rumble over a wired connection) and press any button so the browser detects the device.
- 2Check the status badge in the top-right corner of the vibration card: "No Controller Connected" means no active pad is detected yet; "Actuator Unavailable" means the controller is detected for input, but your browser, OS driver, or wireless mode did not expose a rumble interface.
- 3When the badge shows "Haptic Actuator Ready", click one of the 5 presets (Quick Pulse, Heavy Thud, Double Tap, Ramp Up, or High Buzz) to send an immediate test waveform.
- 4To isolate a single grip motor, set Strong Motor (Low Freq) to 100% and Weak Motor (High Freq) to 0% (or vice versa), choose a Duration between 100ms and 2000ms, and click "Start Vibration".
- 5If a wireless controller shows "Haptic Actuator Ready" in the browser but does not physically vibrate in your hands, check whether its battery is low or test over a USB data cable.
What This Test Verifies
Dual-rumble motor pulses are dispatched through the GamepadHapticActuator interface using playEffect("dual-rumble", { strongMagnitude, weakMagnitude, duration }). Haptic actuation is supported in Chromium desktop browsers (Chrome, Edge, Opera, Brave) when exposed by the OS driver, and is currently unavailable in Firefox and Safari.
Documents how browsers expose a controller’s haptic hardware actuator.
Browser support table and API reference for dual-rumble strong and weak motor channels.
Frequently Asked Questions
Why does the panel say "Actuator Unavailable" even though my buttons and sticks work?
Button and stick inputs use standard read-only HID reports, whereas vibration requires two-way driver support and the browser GamepadHapticActuator interface. You will see "Actuator Unavailable" if you are using Safari or Firefox, if your controller is connected via a Bluetooth or DirectInput mode that does not expose standard rumble to the OS, or if the controller hardware lacks standard dual-rumble actuators.
Does using Chrome or Edge guarantee that my controller will vibrate?
No. While Chromium browsers (Chrome, Edge, Brave, Opera) implement the GamepadHapticActuator API, vibration still depends on your operating system driver and how the controller is connected. For example, an Xbox controller on Windows typically vibrates immediately in Chrome, whereas a PS5 DualSense or Switch Pro Controller on Windows may show "Actuator Unavailable" over Bluetooth unless connected via USB or routed through an XInput translation layer.
What is the difference between Strong Motor (Low Freq) and Weak Motor (High Freq)?
Standard dual-rumble controllers place two different motors in the grips. The Strong Motor (usually in the left grip) spins a heavier mass for deep rumbles, while the Weak Motor (usually in the right grip) spins a lighter mass for fast, high-frequency surface vibrations. Setting one slider to 100% and the other to 0% lets you test each physical motor on its own.
Why does the page say "Vibrating..." when I click a preset, yet I feel nothing in the controller?
The "Vibrating..." indicator confirms that the browser accepted the playEffect("dual-rumble") command, but the browser has no sensor inside the controller to verify physical motion. If you feel nothing, check whether your wireless battery is low (many controllers cut power to rumble motors when charge drops low), verify that rumble is not disabled in Steam/OS settings, or test with a direct USB cable.
Can this tool test Xbox Impulse Triggers or PS5 DualSense Adaptive Trigger resistance?
No. Standard web browsers only expose the two-channel "dual-rumble" grip interface. Independent Xbox trigger rumble motors and PlayStation 5 motorized adaptive trigger tension require platform-specific native APIs that are not exposed to web pages.