Hold the phone, perform a motion, label what it means. Capture a signed motion profile and attach it to a validation brief — camera shake, gimbal sweep, operator cadence, whatever the bench needs to replay.

Works best on mobile over HTTPS. Desktop fallback: arrow keys / WASD for tilt, Space for shake. Export JSON to upload into the Workbench.

INSTALL / DOWNLOAD

Install to launch from your home screen and run offline. Or download the HTML file to self-host on any device.

Data Source
Phone · DeviceMotion
local browser sensors
— Hz
Reads DeviceMotion + DeviceOrientation from the phone running this page. Default mode.
Sensor Logger setup: install the Watch app from the Sensor Logger companion, open the gear icon on the Logger page, enable MQTT Publish, paste the same broker URL + topic. Public broker wss://broker.hivemq.com:8884/mqtt works with no auth — pick a unique topic so you don't collide with anyone else testing.
Your Wear OS app should send JSON frames in this shape:
{ "acc": [x, y, z], "rot": [alpha, beta, gamma], "t": ms }
Or batched: { "frames": [{...}, {...}] }. rot and t are optional; acc is in m/s² with gravity.
Live Sensors LAB
Acceleration (m/s²)
X
0.00
Y
0.00
Z
0.00
Linear Acceleration (gravity removed)
X
0.00
Y
0.00
Z
0.00
Orientation (degrees)
α (compass)
0
β (pitch)
0
γ (roll)
0
Force + Buffer
Total
0.0
Linear
0.0
Buffer
0/200
Detected
Linear Force0.0
Motion Path Visualizer

X/Y motion trace · fading trail · thickness = velocity intensity · crosshair = neutral

Recording IDLE
Duration
0.00s
Samples
0
Peak Force
0.00
Match Result TEST
Label This Motion SAVE
snake_case identifier the game engine will receive
🎥
Drop MP4 here or tap to choose
reference clip of the actual physical motion
Stored locally in IndexedDB. Travels with single-motion exports.
Motion Library 0 SAVED

Universal motion grammar recorder · localStorage persistence · iOS DeviceMotion permission supported