Aim Trainer - Progress Tracker
Web platform with 40+ benchmarks tracking aim trainer performance with 50,000+ monthly users.
Introduction
KovaaKs Aim Trainer is a popular aim training software used by gamers to improve their aiming ability. Previously, all community benchmarks apart from one made by the Voltaic aim group were created using Google Sheets.
This app has also been designed to be as easy to use as possible, by needing any login or account creation, and simply entering a Steam ID, vanity ID, or profile URL to access your profile and scores.
To help users track their progress across various community benchmarks, I developed a web application that can support all community benchmarks, as well as all the different rank calculations that they use, that can all be accessed in one place as a benchmark hub.
Project Overview
There are currently over 40 integrated community benchmarks and 50,000+ monthly active users, and has become a platform used by both beginners and advanced players to monitor their progress and compare performance.
Built with Svelte 5, styled with Tailwind CSS, and using Cloudflare Workers for serverless functions, the website is designed to be as fast and user friendly as possible, with extensive prefetching and caching, while also having tooltips for most user interactions.


Core Features
1. Unified Benchmark System
The platform consolidates 40+ community benchmarks into a single interface, which can be accessed after entering a Steam ID, URL or vanity ID. There are filters and tags that users can use to find the benchmark they want to try, as well as a button to play a random one.

There is also support for linking to specific aim groups directly, such as Voltaic or Revosect.

Key capabilities:
- Browse benchmarks from Voltaic, Revosect, Aimerz+, and more
- Filter by mixed, precise, reactive, tracking, switching, and other categories
- Sort by relevance or favorites
- Favorite benchmarks for quick access
2. Steam Integration & User Profiles
Users can easily access their profiles using Steam ID, vanity ID, or profile URL. The platform automatically fetches scores from the KovaaKs API.

Features:
- Steam Vanity ID resolver
- Autocomplete for favorited players
- Autocomplete for cached profiles
3. Progress Tracking Table
The main score tables are based on existing Google Sheets benchmarks, but use the KovaaKs APIs to fetch user scores automatically, and make score tracking much easier. Each benchmark uses its own structure and rank calculation method, supporting roughly 20 different rank calculation algorithms. Each benchmark includes multiple difficulty tiers, allowing players to track progression from beginner to elite levels.

Table features:
- Different difficulties for the benchmark accessible via tabs
- Organized by categories (Clicking, Tracking, Switching, etc.)
- Visual rank progression bars (Bronze → Silver → Gold → Platinum)
- Current score vs. rank thresholds
- Percentage completion toward next rank
- Energy score calculation (custom rank metric)
- Edit scores to see how improvements affect rank
- View score history when linked to kovaaks.com account
- Compare scores with friends or other players
- Open the benchmark directly in KovaaKs
- Save a screenshot of the table for sharing
- Saving and loading previous states of the table
- Settings to customize table appearance and behavior
- Buttons to Copy/Paste scores directly from Google Sheets for validation
4. Progress Tracking & Snapshots
Save snapshots of your scores over time and track rank progression.

Snapshot features:
- Save current scores with timestamps
- Load previous snapshots into the table
- Compare snapshots by loading them as a comparison in the table which also provides a head-to-head comparison view
- Rank progress over time
5. Score History Tracking
For users who link their kovaaks.com account, they can view their last 10 scores for each scenario in a benchmark. This is limited to the last 10 plays due to KovaaKs API constraints.

6. Customization & Accessibility
Extensive table customization options ensure the interface works for every user.


Customization options:
- Layout: Ultra, Compact, Normal, Wide density
- Progress bars: Normal or Simple style
- Visual aids: Shade category/rank cells, high contrast mode
- Typography: Font selection, size adjustment, contrast tuning
- Display: Bold text, text shadows, rank position, progress percentage
7. Benchmark Progress Comparisons
A second user can be loaded alongside the main profile to compare scores side-by-side in the benchmark table, with head-to-head rank comparisons and score differentials highlighted.

8. Visualizations
Players can visualize their performance with charts if they want a more visual representation of their progress.

Visualization features:
- Radar charts showing performance across all aim categories
- Head-to-head (H2H) record tracking
- Sub-category performance breakdown
- Color-coded category performance
9. Score Edit View
Users can also edit their scores directly in a detailed table view to see how changes would affect their ranks.

10. Individual Scenario Leaderboards
Every scenario in a benchmark has a shortcut to jump to its leaderboard. This page is essentially a wrapper of KovaaKs existing leaderboards, but provides the additional context of the ranks on the leaderboard, as well as a few extra stats.

11. Sensitivity Statistics
Each leaderboard page includes sensitivity distribution statistics for the current page being viewed. This is very useful for players looking to optimize their sensitivity settings based on top performers, or players trying to find a starting point.

Insights include:
- Box plot distribution of sensitivity (cm/360)
- Statistical measures (Min, Q1, Median, Mean, Q3, Max)
- Outliers
12. Benchmark Builder
Includes a tool for creating custom benchmarks locally or to be submitted for review to be added. This cannot be fully automated as benchmarks often need manual adjustment to ensure that they are formatted correctly beyond syntactic correctness.



Builder features:
- Add/remove difficulties
- Configure rank colors and names
- Set up categories and subcategories
- Define scenario counts
- Import/Export JSON configurations
- Preview benchmark structure
- Local benchmark management, if users wish to modify existing benchmarks, or create their locally.
Example JSON structure:
{
"benchmarkName": "Custom Benchmark",
"rankCalculation": "generic-energy",
"difficulties": [
{
"difficultyName": "Entry",
"kovaaksBenchId": 1000,
"sharecode": "KovaaKsCustomCode",
"rankColors": {
"Bronze": "#E69138",
"Silver": "#999999",
"Gold": "#FFE599",
"Platinum": "#6FA8DC"
},
"categories": [
{
"categoryName": "Clicking",
"color": "#272727",
"subcategories": [
{
"subcategoryName": "Static",
"scenarioCount": 4,
"color": "#FFF1AA"
}
]
}
]
}
]
}
13. Benchmark Statistics & Balancing
This is a page for benchmark creators, as this is quite heavy on the KovaaKs APIs. It offers statistics about benchmark participation and player distributions.



Technical Architecture
Frontend
- Svelte 5 - Reactive UI with very good performance. In hindsight, it may have been easier to use React with Next.js for better ecosystem support, but Svelte has worked well so far.
- Tailwind CSS - Utility-first styling for quick development
- Chart.js and D3.js - Data visualization and graphs
- TypeScript - Used for better type safety
Backend
- Cloudflare Workers - Serverless edge computing
- Cloudflare KV - Distributed key-value storage for caching
- KovaaKs API Integration - Used to fetch data from KovaaKs
- Steam OpenID - Authentication system
By using a lot of local caching, the website currently peaks at 11% of Cloudflare Workers free tier limits without incurring any costs. This is with roughly 3,000 daily active users and 50,000 monthly active users, as reported by Cloudflare Analytics.
Last updated October 2025