# Frame-rate independent movement
URL: https://wwadd.dev/moves/game-dev/delta-time-movement

Speeds should be per second, not per frame. Moving 4 px every frame means a 144 Hz player moves 2.4× faster than a 60 Hz one. Multiply by the elapsed time (delta time) instead. Good enough for simple games; use a fixed timestep when collisions or physics must be consistent.


```ts
const SPEED = 240; // pixels per SECOND
let last = performance.now();

function frame(now: number) {
  const dt = Math.min((now - last) / 1000, 0.1); // seconds, clamped
  last = now;

  player.x += player.dirX * SPEED * dt;
  player.y += player.dirY * SPEED * dt;

  render();
  requestAnimationFrame(frame);
}

requestAnimationFrame(frame);
```

## Related Moves
- [Fixed-timestep game loop](https://wwadd.dev/moves/game-dev/fixed-timestep-loop)

