Skip to content
JoystickTester.com
Dual-Rumble Actuator Test

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.

Methodology & Scope•100% Client-Side Browser Diagnostics•W3C Gamepad API
No Controller Detected Yet?Try Virtual Simulator

Plug in your controller & press any button, or test using keyboard emulation / auto demo.

No Controller Detected YetPlug in via USB or Bluetooth & press any button
Dual-Rumble Haptics & Vibration Suite

Test heavy (low frequency) and light (high frequency) rumble motors

No Controller Connected
Awaiting Controller Connection: Connect a physical controller via USB or Bluetooth and press any button to enable dual-rumble haptic motor testing.
Quick Rumble Presets
80%
Heavy thuds, explosions, low-end
60%
Crisp clicks, surface texture
400 ms
Actuation pulse length in ms
Need complete controller diagnostics?

Test all buttons, sticks, triggers, deadzones, and developer telemetry together.

Open Full Tester

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.

Diagnostic Notice: Important Limitation: A browser can only confirm that it dispatched playEffect("dual-rumble") to your OS driver—it cannot sense whether the physical motor inside your controller actually spun. If the UI shows "Vibrating..." and your controller stays silent, try connecting via USB cable or check whether a low battery or console/PC mute setting has disabled rumble.

Measurement & Telemetry Classification

Technical distinction between direct hardware reads, client-side algorithms, and educational thresholds.

Real Measurement
  • 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().
Calculated Metric
  • 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.
Educational Context
  • 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

Actuator Exposure State
Checks whether navigator.getGamepads() exposes vibrationActuator or hapticActuators on the active controller.
Strong vs. Weak Motor Isolation
Sends independent 0.00 to 1.00 magnitude commands to the low-frequency (left) and high-frequency (right) grip motors.
Timed Pulse Dispatch (100–2000ms)
Dispatches dual-rumble effects with a configurable millisecond duration and manual Stop override.

How to Test Step-by-Step

  1. 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.
  2. 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.
  3. 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.
  4. 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".
  5. 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

Live 3-State Actuator Status Badge (No Controller Connected, Actuator Ready, Actuator Unavailable)
5 Built-in Haptic Presets (Quick Pulse, Heavy Thud, Double Tap, Ramp Up, High Buzz)
Independent Strong (Low-Freq) & Weak (High-Freq) Motor Sliders (0% to 100%)
Custom Pulse Duration Slider (100ms to 2000ms in 50ms Steps)
Automatic Control Lockout When GamepadHapticActuator Is Absent
Multi-Step sequence Timer & Instant Stop Cancellation
Web Gamepad Haptic Actuator Specifications

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.

MDN Web Docs: Gamepad.vibrationActuator Property Reference

Documents how browsers expose a controller’s haptic hardware actuator.

MDN Web Docs: GamepadHapticActuator Compatibility & playEffect() Usage

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.

Explore Other Tools
Full Laboratory