Project
Roulette

Incrementing Counter

Stat numbers that count up from zero at a consistent pace.

StarterWeb appUI component1–3hAI-buildable 5/5no setup

Each counter animates to its own target, but they should all finish around the same time regardless of target size — which means the increment has to be derived from the target, not fixed.

UI
Logic
Useful

Hosting · Free forever

Deploys free on GitHub Pages, Cloudflare Pages or Vercel Hobby.

Deploy it and share a link.

Core features · 4

  • Each counter animates from zero to its target value
  • Counters with different targets finish at roughly the same time
  • The final value is exact, never overshooting
  • Counting starts when the element scrolls into view

The interesting part

  • Deriving increment from target so durations match, and landing exactly on target

Once it works

  • Add thousands separators and suffixes like K/M
  • Respect prefers-reduced-motion

Suggested stack

reacttypescripttailwindframer-motiondate-fns

Track it