Numbers in motion: Our animated counter tool for decks
At Headout’s annual event, we showcase our wins with animated counters where numbers smoothly tick up. Creating these used to take hours in Adobe After Effects, so we built a web tool. Now, anyone can create them in minutes—just input numbers, set the speed, add symbols, and it’s done.
At Headouting, our annual event, presentations are all about showing impact—especially with metrics like CVR (Conversion Rate), CTR (Click-Through Rate), and other key performance indicators. We’ve got a lot of numbers to share, and making those numbers feel meaningful is crucial. When a user sees a number steadily increasing—whether it's ROI or revenue—it creates a sense of progress and achievement. It’s not just about what the final number is; it’s about seeing the journey there. That’s why animating those numbers becomes essential. It transforms data into a story, making the progress feel tangible and exciting.
And while the impact is undeniable, creating these animations used to be a major time drain. We needed a solution that could keep the magic without all the manual effort.
What is an Animated Counter?
An animated counter is like a digital odometer, counting from one number to another—for example going from 0 to $323 million, bringing those metrics to life. It's more than just numbers ticking up; these counters come with prefixes, smooth transitions, and custom easing to match the style of any presentation.
The Problem: Manual Madness in Motion Design
Creating animated counters in Adobe After Effects (AE) was time-consuming, requiring manual adjustments and lengthy render times. While AE is a powerful tool, making those animated counters used to be a serious time sink. Our motion designer, Roshan, had to manually make each one of them, that meant setting up keyframes, tweaking speeds, and making sure everything was smooth. Even a small change required going back into AE, re-adjusting, and rendering again. For a single counter, it could take 2-3 hours, and during the rush before Headouting, those hours quickly piled up. It wasn’t just time-consuming—it was exhausting.We realized that while the animations made our presentations stand out, the process was too time-consuming. We needed a solution that kept the quality but cut down production time, so we looked for ways to streamline our workflow and meet deadlines more efficiently.
Finding a Better way
That's where i saw the opportunity to streamline and make this process more efficient. With my background in web development, I thought “Why not create a simple tool that anyone could use to generate these counters?” Something that wouldn’t require design skills or motion graphics expertise. So, we set out to build a web tool that could do just that.
- Save Time: Create a faster solution than After Effects.
- Make It Easy: Enable non-designers to build animations.
- Keep It Flexible: Allow users to adjust prefixes, suffixes, and animation speed effortlessly.
The Solution: Building the Animated Counter Web Tool
To deliver a robust and highly performant animated counter web tool, we leveraged Framer Motion, a powerful animation library for React. This enabled us to create smooth, fluid transitions for dynamic data with minimal overhead, providing an intuitive user experience while maintaining technical simplicity. Below is a detailed breakdown of the tech stack and architecture behind the tool.
Tech Stack
Our animated counter tool leverages React, Framer Motion, and TypeScript for smooth animations and ease of use:
- React: React served as the foundation for the tool’s UI architecture, allowing us to build reusable, declarative components and manage state efficiently. React’s virtual DOM and component lifecycle made it an optimal choice for handling frequent updates without sacrificing performance.
- Framer Motion: As the core of the animation engine, Framer Motion allowed us to define fluid number transitions with ease. Its physics-based approach to animation meant that we could achieve natural-looking transitions without manually handling the frame-by-frame mechanics. Its declarative API integrates seamlessly with React, reducing boilerplate code while enabling high control over motion dynamics.
- TypeScript: We used TypeScript for strict typing across the codebase, improving code quality and reducing runtime errors. TypeScript’s static type checking provided better tooling support (like IntelliSense), enhancing developer productivity and enabling safer refactors.
- Tailwind CSS: Tailwind CSS powered the UI design, providing utility-first CSS that allowed us to quickly prototype and implement a responsive, visually cohesive interface. With Tailwind’s modular approach, we kept the CSS footprint minimal while still enabling dynamic style customization based on user inputs.
Core Components and Architecture
Counter Component
The Counter component serves as the main feature, rendering dynamic number transitions within a defined range. Conceptually, it functions like a digital odometer that can animate from one numerical state to another. The component is fully decoupled, making it easily reusable across different contexts, such as dashboards, landing pages, or sales presentations.
The logic is encapsulated in React hooks to manage state and trigger the animation lifecycle, while props such as start and end values, duration, and prefix/suffix are passed in as configuration options.
Animation with Framer Motion
The animation layer is powered by Framer Motion, which abstracts away the complexities of calculating each frame in the animation. We define key parameters like the starting value, ending value, and transition duration, while Framer Motion handles the tweening, easing, and interpolation to ensure smooth visual transitions.
Framer Motion's built-in animation curves, such as easeIn, easeOut, and spring, allow us to offer a variety of motion effects. By tapping into its motion components, we can create these animations declaratively within the React JSX structure.
State Management and Hooks
React’s use of hooks (useState, useEffect) manages the internal state of the counter and controls animation triggers. The useEffect hook listens for changes in the input parameters (start value, end value, duration), and fires the animation whenever these inputs are updated.
User Input Controls
We implemented a customisable interface that allows users to set:
- Start/End Values: Defining the range of the counter.
- Duration: Configuring the length of the animation.
- Prefix/Suffix: Adding symbols or text before or after the animated number (e.g., `$`, `%`).
Each of these controls is tied to a corresponding state variable, and any change in user input updates the state, which in turn re-triggers the animation process.
Key Features of the Tool
The tool allows users to input a start value, end value, duration, and add prefixes or suffixes, like a dollar sign or percentage. It instantly generates smooth, real-time animations, offering teams a quick way to showcase their numbers. Key features include:
- User Input Controls: Easily set start and end values, duration, and customise with prefixes or suffixes.
- Real-Time Preview: See the animation as you build, allowing for quick tweaks and adjustments.
- No Design Skills Needed: Accessible to everyone, making animated counters easy to create beyond the design team.
See the Animated Counter Tool in Action:
To truly understand the impact of our animated counter tool, it’s best to see it in action –
Check out the tool in action here
What Did We Achieve?
Our new tool reduced animation time from hours to minutes, making creation accessible and customisable for everyone. Teams like marketing, product, and sales could now build their counters independently, allowing Roshan to focus on more creative projects instead of repetitive tasks.
Improving with Feedback
Once the tool launched, we gathered feedback from various teams. Marketing requested more colour options, while product teams sought smoother animations. We integrated these suggestions, making the tool even more versatile to meet diverse needs. It was a collaborative effort, and we appreciate the input that helped shape the tool into a truly impactful solution.
A Simple Solution, Big Change
At Headout, we're always looking for ways to make our workflows smoother. Sometimes it's the simple stuff that makes the biggest impact. Our animated counter tool turned what used to be a tedious task into something quick and fun for everyone. We couldn't have pulled this off without our awesome early testers, especially Anurag Krishna who jumped in with some super helpful feedback. Big shoutout to Ramakrishna for nurturing this idea from the start and backing it up with solid input along the way!