https://framer.com/m/CounterPro-H0sG.js

Io / Enhancements / CounterPro

CounterPro

CounterPro animates a number up to its target with odometer-style digits, number formatting, and optional glow or motion blur.

Enhancements20 controlsodometer digitsmotion blur

Examples

Live specimens for every control the component exposes.

Default

from and to set the range. The count runs once the component scrolls into view, so a stat block animates when the reader reaches it.

99
Number formatting

Separator, decimals, prefix and suffix are formatting only — the animation still runs on the raw number.

thousand separator

1284000

two decimals

99.50

prefix and suffix

$250+
Motion

duration sets how long the count takes; delay holds it before starting. Both are seconds.

duration 1s

99

duration 4s

99

delay 1.2s

99
Glow, blur and spacing

Glow and motion blur are effects on the digits. spacing widens the gap between digit columns.

glow on

88

motion blur

88

digit spacing

88

Props

The controls exposed on the instance panel.

PropTypeBehaviour
fromnumberStarting value of the count.
tonumberTarget value the counter animates to.
startOnViewbooleanWaits until the component scrolls into view before counting.
fontfontFamily, size, weight and letter spacing for the digits.
textColorcolorDigit colour. Use text-color so it follows the theme.
prefixstringText placed before the number, e.g. a currency symbol.
suffixstringText placed after the number, e.g. a unit or plus sign.
useSeparatorbooleanTurns on grouping of long numbers.
separatorstringCharacter used between groups. Default is a comma.
separatorPositionnumberHow many digits per group. 3 gives thousands.
decimalPlacesnumberDigits shown after the decimal point.
decimalCharstringCharacter used as the decimal point.
spacingnumberExtra space between digit columns, in pixels.
durationnumberLength of the count animation, in seconds.
delaynumberWait before the count starts, in seconds.
glowEffectbooleanAdds a coloured glow behind the digits.
glowColorcolorColour of that glow.
glowIntensitynumberStrength of the glow.
motionBlurbooleanBlurs digits in proportion to how fast they spin.
blurIntensitynumberStrength of the motion blur.
replayOnViewbooleanCounts again every time the number re-enters the viewport, not just the first time.
textStyleenumTheme type step for the number.
weightenumWeight for that step.
PropTypeBehaviour
fromnumberStarting value of the count.
tonumberTarget value the counter animates to.
startOnViewbooleanWaits until the component scrolls into view before counting.
fontfontFamily, size, weight and letter spacing for the digits.
textColorcolorDigit colour. Use text-color so it follows the theme.
prefixstringText placed before the number, e.g. a currency symbol.
suffixstringText placed after the number, e.g. a unit or plus sign.
useSeparatorbooleanTurns on grouping of long numbers.
separatorstringCharacter used between groups. Default is a comma.
separatorPositionnumberHow many digits per group. 3 gives thousands.
decimalPlacesnumberDigits shown after the decimal point.
decimalCharstringCharacter used as the decimal point.
spacingnumberExtra space between digit columns, in pixels.
durationnumberLength of the count animation, in seconds.
delaynumberWait before the count starts, in seconds.
glowEffectbooleanAdds a coloured glow behind the digits.
glowColorcolorColour of that glow.
glowIntensitynumberStrength of the glow.
motionBlurbooleanBlurs digits in proportion to how fast they spin.
blurIntensitynumberStrength of the motion blur.
replayOnViewbooleanCounts again every time the number re-enters the viewport, not just the first time.
textStyleenumTheme type step for the number.
weightenumWeight for that step.

Usage

Guidance carried over from the component definition.

Reach for CounterPro

A metric, stat or KPI should count up when it enters the viewport.

Large numbers need a thousand separator, currency prefix or unit suffix.

The digits should read as one steady odometer rather than a text swap.

The count needs to stay on the theme type scale and colour tokens.

Reach for something else

The number changes from live data after mount — this counts once on view.

You need a progress indicator rather than a number — use Slider or a bar.

The value is plain static text with no animation — use TextPro.

Io — Enhancements

Every specimen above is a live component instance. Colour, type and radius resolve from the project theme tokens.

io

An experiment in what a design system becomes when AI can consume it.

© 2026 io

Contact me

Create a free website with Framer, the website builder loved by startups, designers and agencies.