Free online aim trainer
Aim trainer that maps where your misses go
Thirty targets appear one at a time at random points in the field; hit each one and the page reports accuracy, the median time to get on target and a map of the cells your stray clicks landed in. Every press is stored with its offset from the target it was aimed at, so a run that misses low and left reads differently from one that scatters evenly. The field is measured in CSS pixels and a browser is never told your mouse DPI or your in-game sensitivity, so the distances here are the ones your window produced — comparable between your own runs, not between two machines.
- 100% free
- No signup
- 30 targets
- 3 target sizes
- Miss heat map
One target at a time, in a random spot. Nothing moves, so the clock measures the flick alone.
Press Start, then click each circle as it appears. Every stray click is recorded with its distance from the target you were aiming at.
Filled in by your first stray click. The map divides the field into 40 cells and counts what lands in each.
- mean flick distance
- —
- target diameter
- 44 px
- average landing point
- —
Distance traveled between targets is recorded alongside the time, because a 900 px flick and a 200 px nudge are not the same shot.
The field is measured in CSS pixels, so the same run on a bigger window means longer flicks and slower times without your hand changing at all — compare runs on the same window, or compare the accuracy rather than the clock. A touchscreen works and scores well, for the good reason that a finger travels straight to a position while a mouse has to be steered there.
How to get a run worth comparing
Three steps, and the first one decides what the other two are measuring.
Set the target size before the run, not during it
Three diameters are offered: 26, 44 and 68 CSS pixels. The middle one is roughly the size of a head hitbox at the distances people practise at, the small one punishes overshoot hard, and the large one is where you go to find out whether your slow runs are aim or hesitation. A size change resets the run, because a mixed-size run averages two different tasks into one meaningless figure.
Click each circle, and let the strays be recorded
One target is on the field at a time and the next appears the moment the last one is hit, so the clock never stops between shots. A click that lands outside the circle does not end the target — it is stored with its distance and direction from the center you were aiming at, and the target stays put until you actually hit it. That is deliberate: a trainer that respawns on a miss hides the pattern that a map of misses is trying to show you.
Compare accuracy against the clock, then look at the map
The two numbers trade against each other, and knowing which one you are spending is the point of running this at all. A 95% run at 700 ms per target and a 62% run at 380 ms can come from the same hand on the same day. Then read the map: misses grouped in a few cells on one side mean the pointer is arriving somewhere predictable and a sensitivity change will move it, while misses spread evenly across the field are a grip and posture problem that no setting fixes.
Technical specifications
| Targets per run | 30, one at a time, each at a random point at least half a diameter plus 6 px from the edge |
|---|---|
| Target sizes | 26, 44 and 68 CSS pixels across, fixed for the whole run |
| Timing | From the frame the target was painted to the press that landed inside it, so the drawing frame is not charged to you |
| Stall guard | A target left longer than 5 s still counts as hit but is kept out of the timing figures and reported separately |
| Accuracy | Hits over every primary-button press inside the field, misses included |
| Miss map | 8 × 5 cells laid over the field, shaded by how many strays landed in each |
| Landing bias | Mean offset of every click from the center of the target it was aimed at, in pixels and direction |
| Data kept | None — no ranking, no saved run, nothing written outside the tab |
Frequently asked questions
Why do the targets sit still instead of moving?
Because aim is two separate skills and mixing them produces a number that explains nothing. Flicking is getting the pointer onto a stationary point you were not already looking at, and tracking is keeping it on something that is moving away from you; they use different feedback loops, they improve at different rates, and a run that combines them cannot be unpicked afterward into which half was weak. Static targets measure the first one cleanly, and the time per target is therefore a movement time rather than a blend.
Why did my score change when I resized the browser window?
Because the field is measured in CSS pixels and it grows with the window. A wider field means longer average travel between targets, and movement time rises with distance, so the same hand reads slower on a maximized window than on a half-screen one. The mean flick distance is printed with the result for exactly this reason — compare two runs only when that figure is close, or compare their accuracy, which is far less sensitive to the field size.
What sensitivity should I be using for this?
Whatever you use elsewhere, because the useful part is the comparison and not the score. The portable unit is centimeters per 360-degree turn: it describes how far the mouse physically travels to turn all the way around, and unlike a DPI number or an in-game slider it means the same thing on every machine. Most people who aim seriously sit somewhere between 20 and 50 cm per 360, and moving inside that range changes how much of a flick is wrist and how much is arm.
Does a higher mouse DPI make me better here?
No, and this page cannot even see your DPI. A browser receives pointer positions in CSS pixels after the operating system has already applied its own scaling and, if it is switched on, its acceleration curve — the raw sensor counts never arrive. Raising DPI while lowering in-game sensitivity by the same factor leaves your effective sensitivity unchanged, which is why eDPI, the two multiplied together, is the figure worth quoting. What DPI does affect is the smallest movement the sensor can resolve, and that stopped being a practical limit on any sensor made in the last decade.
My misses all cluster on one side. What does that mean?
It usually means you are stopping the pointer where the previous shot taught you to stop it. A consistent bias in one direction is a calibration problem: your hand has learned a distance-to-movement mapping that no longer matches the sensitivity you are on, which is common straight after a settings change or a new mouse pad. Vertical bias is more often posture — a low grip that drags the pointer down at the end of a fast horizontal flick. The landing figure printed under the map averages every click on the run, so a few pixels in one direction is noise and thirty is not.
Is a trackpad or a trackball hopeless on this?
Not hopeless, but they measure something else and their numbers should stay in their own column. A trackpad has a hard travel limit and needs a lift-and-reposition on long flicks, which shows up as occasional times two or three times the median rather than a uniformly slower run. A trackball is thumb or finger motion with no travel limit at all, so its accuracy usually holds while its time per target sits higher. A touchscreen scores surprisingly well here, because a finger goes straight to a position instead of steering a pointer toward it.
About flicking, tracking and the sensitivity underneath both
Pointing at something has been measured for seventy years and the result is unusually tidy. Fitts’s law says the time to move onto a target rises with the logarithm of the distance divided by the target’s width, which has two consequences you can feel on this page. Halving the target costs you about as much time as doubling the distance to it, so a 26-pixel run is genuinely harder than a 68-pixel one rather than merely feeling that way. And because the relationship is logarithmic, a flick twice as long is nowhere near twice as slow — most of a movement is the deceleration at the end, which is also where the misses come from. The mean flick distance printed with your result is there so you can tell a hard run from a big window.
Sensitivity is the setting that moves all of this, and the units are a mess worth untangling. DPI describes how many counts the sensor reports per inch of desk, an in-game slider scales those counts by a number that means something different in every engine, and eDPI multiplies the two into a figure comparable within one game. The only unit portable across games is centimeters per 360-degree turn, because it describes the physical desk distance rather than any software scale. This page cannot see any of them — a browser gets positions in CSS pixels after the operating system has applied its own scaling and pointer acceleration — so the honest way to use a run here is to change one setting, run it again, and read the difference. The mouse sensitivity converter does the arithmetic for carrying the same centimeters per 360 into another game.
What the map adds is a direction, which a percentage never has. A run scored at 70% tells you seven in ten landed; a map showing all nine misses in two adjacent cells on the right tells you the pointer keeps arriving in the same wrong place, which is a correctable thing. Two parts of every time-per-target figure are not aim at all: the interval before you began to move, measured on its own by the reaction time test, and the delay between your press and the screen reacting, which the input lag test isolates with no reflexes in the number. If a click of yours occasionally registers twice or not at all, the fault is in the switch rather than the hand, and the mouse test shows it per button.
What a run leaves behind
Every number on this page is worked out by JavaScript running in the tab you are reading it in. Nothing you type, paste or open is uploaded, logged or kept, which is also why the tools carry on working after you disconnect from the network.
Nothing about a run is written down anywhere. The hits, the misses and the map exist as counts in this tab’s memory, there is no ranking to be entered into and no best score kept between visits, so closing the tab is the whole deletion process. Copying the summary is the only route out of the page, and it goes to your clipboard.