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.

0123456789
0123456789
Number formatting

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

thousand separator

0123456789
,
0123456789
0123456789
0123456789
,
0123456789
0123456789
0123456789

two decimals

0123456789
0123456789
.00

prefix and suffix

$
0123456789
0123456789
0123456789
+
Motion

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

duration 1s

0123456789
0123456789

duration 4s

0123456789
0123456789

delay 1.2s

0123456789
0123456789
Glow, blur and spacing

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

glow on

0123456789
0123456789

motion blur

0123456789
0123456789

digit spacing

0123456789
0123456789

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.
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.

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.