Play DDR with a USB dance mat, in your browser
Infinite DDR works with USB dance mats and gamepads today. Plug the mat into a computer, open any song, step on each arrow once so the game learns the mat's wiring, and dance: five difficulties with arcade foot ratings, DDR timing windows, a score out of 1,000,000 and a world board per song. Free, no download, no account, and every song on YouTube is a stage.
Keyboard (arrows or D F J K) and touch on phones work too; this page is the mat guide.
Setup, about two minutes
- 1
Plug in the mat
Connect the dance mat or gamepad by USB (or pair it over Bluetooth) to a computer running Chrome, Edge, Firefox or Safari. PlayStation mats need their USB adapter in PC mode; Xbox 360 USB mats and most PC/TV mats work as they are.
- 2
Open a song
Search a song or paste a YouTube link on the home page, or pick one from the library. The game detects the mat at music select.
- 3
Press any button on the mat
Browsers hide controllers until a button is pressed. Step on an arrow or press Start and a green Pad detected badge appears under the difficulty list.
- 4
Map the arrows once
Every mat wires its arrows to different buttons or axes, so the first time an unknown mat appears, Dance mat setup opens by itself: step off the mat and hold still for a second, then step on left, down, up and right once each, stepping off after each one. Start is optional (Enter on the keyboard skips it). The layout is remembered for that mat in this browser; a gamepad with a standard d-pad needs no mapping.
- 5
Dance
Pick a difficulty with the mat's arrows and press Start. Arrows are judged with DDR timing windows (Marvelous within 22.5 ms, Perfect 45 ms, Great 90 ms) and scored out of 1,000,000. Hold Start for two seconds to quit a song; Start also retries from the results screen.
Difficulty select, the results screen and the sync tool all take the mat's arrows and Start, so you never need the keyboard once the mat is mapped.
Dance mat questions
Which dance mats work?
Anything the browser sees as a game controller: USB dance mats sold for PC, Xbox 360 mats over USB, PlayStation or Wii mats through a USB adapter, StepManiaX and L-TEK style pads, and ordinary gamepads. A mat that shows up as a keyboard and types the arrow keys works with no setup at all. Metal arcade-style pads that present as a joystick work the same way as soft mats.
Does it work on a phone with a mat?
Mat play is built for desktop browsers. On phones the four panels on screen are the pad; a Bluetooth mat on Android has not been tested.
The mat is plugged in but nothing happens.
Press a button on it first: browsers do not report a controller until one of its buttons is pressed. Then look for the Pad detected badge at music select. If a song starts and the first six arrows pass with no step registered, the game says so and offers Map pad arrows; mapping takes about ten seconds and the song restarts.
The arrows are mixed up.
Open Dance mat setup from the re-map arrows link at music select and step on each arrow again. Use defaults clears the saved layout for that mat.
My steps feel early or late.
Mats and Bluetooth add a few milliseconds of latency. The results screen shows your average timing after every song, and after a couple of songs the game sets the offset that lines you up by itself, with an undo. The Sync tool at music select measures it directly.
Can two mats play at once?
Not yet. One player per browser; a second mat would press the same arrows.
Can I export the chart as a StepMania simfile?
Not yet. Charts are generated on the fly for any song and are the same for every player, so scores compare on the world board. StepMania plays hand-stepped packs you install; Infinite DDR is a jukebox that charts whatever you paste.
How the mat is read
The game polls the browser's Gamepad API every 4 ms and turns each panel into the arrow key it stands for, so the same engine judges keyboard, mat and touch. A gamepad with a standard layout maps its d-pad straight away. A mat without one reports its panels as whatever buttons or axes the maker chose, including hat switches that rest away from zero and panels that read as pressed when nobody is on them, which is why setup first learns the resting state and then binds each arrow by a step on and off. Bindings are stored per mat in your browser and never leave it.