
DualShock 4 Tester and Specs
The DualShock 4 is the PS4 controller and still a common PC pad. Early units report USB 054C:05C4. Later ones report 054C:09CC. The browser often labels Bluetooth units only as “Wireless Controller.” Use the PS5 tester layout if you want PlayStation names; the readings are the same instrument.
{"waiting":"Press any button on the controller. Browsers hide gamepads until you press a button on this tab.","noApi":"This browser does not expose the Gamepad API, so the live tester cannot read inputs. The written checks on this page still apply.","insecure":"This page is not a secure context, so the browser will not share gamepads. Open the site over HTTPS.","privacy":"Inputs stay in this browser. Nothing is uploaded.","checkAgain":"Check again","layout":"Button labels","layoutAuto":"Match the connected pad","layoutPs":"PlayStation","layoutXbox":"Xbox","layoutNintendo":"Nintendo","layoutGeneric":"Generic","layoutDualsense":"PS5 DualSense","layoutDualshock":"PS4 DualShock 4","layoutSwitch":"Switch Pro","layoutJoycon":"Joy-Con","viewDrawing":"Controller","viewDashboard":"Dashboard","fullscreen":"Fullscreen","copyResults":"Copy results","copied":"Copied","battery":"Battery","log":"Input log","logEmpty":"Presses show up here.","notFound":"Not found","buttonStates":"Button states","axesHeading":"Axes","presses":"Presses","player":"Player","buttons":"Buttons","face":"Face","dpad":"D-pad","shoulders":"Shoulders and triggers","center":"Center and sticks clicks","extra":"Other buttons","sticks":"Sticks","leftStick":"Left stick","rightStick":"Right stick","up":"Up","down":"Down","left":"Left","right":"Right","stickHint":"Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.","offset":"Offset","deadzone":"Inner deadzone","radial":"Radial","axial":"Axial","shape":"Deadzone shape","afterDeadzone":"After deadzone","inside":"Inside deadzone","measureDrift":"Measure drift (3s)","release":"Release both sticks and hold them still.","measuring":"Measuring resting offset…","trace":"Trace circularity","tracing":"Push the stick around the outer gate.","stopTrace":"Stop trace","vibration":"Vibration","strong":"Strong motor","weak":"Weak motor","duration":"Duration","play":"Play vibration","pulse":"Pulse three times","triggerRumble":"Try trigger rumble","rumbleMissing":"This browser did not offer a vibration actuator for the selected controller. Chrome and Edge usually do; Firefox and Safari often do not.","rumbleSent":"Vibration command sent.","rumbleFailed":"The browser rejected the vibration command.","triggerUnsupported":"Trigger rumble is not available on this actuator. Dual rumble still ran if the browser accepted it.","rate":"Browser-observed rate","sampleAge":"Sample age","moveStick":"Move a stick to measure the update rate.","rateNote":"This is how often the browser hands us a new sample. It is not the controller’s USB poll rate.","ageNote":"How old the newest sample is when the page draws it. This is not display lag and not in-game lag.","ageUnavailable":"This browser’s gamepad timestamp cannot be compared with the page clock.","gyro":"Motion","requestHid":"Request DualSense access","hidIntro":"Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.","hidMissing":"WebHID is not available here. Use Chrome or Edge on a desktop computer, connect the pad by USB, and try again. Buttons and sticks above still work through the Gamepad API.","hidEmpty":"No device was selected.","hidOk":"The browser allowed access to {name}. This version confirms the device and does not stream gyro values yet, so it cannot show a wrong motion number. Buttons and sticks above stay on the Gamepad API.","hidDenied":"The browser blocked or cancelled device access. Gamepad readings are unaffected.","raw":"Raw data","rawEmpty":"Raw values appear here after a controller connects.","checkup":"Full checkup","startCheckup":"Start full checkup","resetMarks":"Reset marks","stepButtons":"Buttons","stepSticks":"Sticks","stepTriggers":"Triggers","stepRumble":"Rumble","stepDone":"Review","checkupIdle":"A short pass over buttons, both sticks, both triggers, and vibration.","checkupButtons":"Press every face button, the D-pad, bumpers, menu buttons, and both stick clicks.","checkupSticks":"Rotate each stick out to the gate.","checkupTriggers":"Pull both triggers fully.","checkupRumble":"Play vibration, then say whether you felt it.","feltYes":"I felt it","feltNo":"I felt nothing","checkupSkipRumble":"This pad has no vibration actuator in this browser, so that step is skipped.","announcePress":"{label} pressed","modelLink":"This looks like {name}.","openModel":"Open the model page","presetNote":"Labels are locked to this page’s layout. Change “Button labels” if they do not match the pad in your hands.","mappingStandard":"standard mapping","mappingOther":"non-standard mapping","healthy":"Healthy","borderline":"Borderline","drift":"Drift","couldNotMeasure":"Could not get a still sample. Rest the controller on a table and try again.","suggested":"Suggested inner deadzone","coverageLow":"Keep tracing the outer edge. Too few sectors were filled to score the gate.","noPadSelected":"No controller is selected.","slotsLabel":"Connected controllers","noneConnected":"None connected yet","focusDrift":"This page focuses on stick drift. Every other check is still here.","focusDeadzone":"This page focuses on deadzone and calibration. Every other check is still here.","focusVibration":"This page focuses on vibration. Every other check is still here.","focusPolling":"This page focuses on the browser-observed update rate. Every other check is still here.","focusLatency":"This page focuses on sample age and input timing. Every other check is still here.","focusGyro":"This page focuses on motion. Buttons and sticks still use the Gamepad API.","focusButtons":"This page focuses on buttons. Sticks, triggers, and vibration are still here.","names":{"edge":"DualSense Edge","dualsense":"DualSense","ds4":"DualShock 4","joycon":"Joy-Con","switchpro":"Switch Pro Controller","bitdo":"8BitDo pad","deck":"Steam Deck or Steam Input device","series":"Xbox Series controller","xone":"Xbox One controller","xbox":"Xbox controller","nintendo":"Nintendo controller","generic":"generic PC gamepad"}}Press any button on the controller. Browsers hide gamepads until you press a button on this tab.
Button states
Input log
- Presses show up here.
Press any button on the controller. Browsers hide gamepads until you press a button on this tab.
This is how often the browser hands us a new sample. It is not the controller’s USB poll rate. How old the newest sample is when the page draws it. This is not display lag and not in-game lag.
Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.
Vibration
Motion
Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.
Full checkup
- Buttons
- Sticks
- Triggers
- Rumble
- Review
A short pass over buttons, both sticks, both triggers, and vibration.
Raw data
Raw values appear here after a controller connects.
Specs and identifiers
| Field | Value |
|---|---|
| USB VID:PID | 054C:05C4 early, 054C:09CC later |
| Share / Options | Index 8 is Share, not Create |
| Sticks | Potentiometer |
| Touchpad | Click is often button 17. Coordinates are not |
Works with
- PS4: native. PS5: supported for many games.
- PC, Mac, Android: USB and Bluetooth.
- Not a native Xbox or Switch pad.
Browser support for this controller
Buttons, sticks, and analog triggers are reliable in Chromium and Firefox. Rumble is a Chromium feature more often than a Firefox one. Light bar and gyro need WebHID or a remapper, not the Gamepad API. The label on index 8 says “Create / Share” in our PlayStation layout because DualSense renamed that button.
Known quirks
- The Bluetooth name collides with other Sony pads. Trust the PID when it is present.
- Very old USB units and the later revision differ in headphone-jack behavior. The browser test does not cover the jack.
- Remappers were written for this pad for years. Turn them off to see the hardware.
Drift, repair, and warranty notes
These sticks have had a long life. A high resting radius is ordinary wear, not a mystery fault. Bands: under 0.06 healthy, over 0.12 drift. Replacement is a repair-shop job. Check Sony’s current policy only if the pad is still inside a warranty window, which most 2013–2016 units are not.
Similar controllers
Same instrument, different hardware. Open a neighbor if you are comparing a replacement.
Frequently asked questions
How do I tell a DualShock 4 from a DualSense?
The light bar on a DualShock 4 is on the top edge. The DualSense light bar is in the touchpad. USB ids 05C4 and 09CC are DualShock 4. 0CE6 is DualSense.
Does the touchpad work in the browser?
The click often does. The X/Y position of your finger usually does not, not through the Gamepad API.