PP (performance points)

PP (performance points) are osu!'s skill rating. Every passed play on a ranked or approved beatmap is given a pp value derived from the beatmap's difficulty, your accuracy, your maximum combo, your miss count and the mods used. Profile pp is not the sum of those values. The osu! servers keep your highest-pp score on each beatmap, sort those scores from best to worst, multiply the score in position n by 0.95 to the power of n minus 1, and add the results together, plus a bonus term that grows with the number of ranked beatmaps you have scored on. No single play can dominate a profile.

What a single play is worth

A pp value is assigned by the osu! servers the moment a passing score is submitted on a ranked or approved beatmap. The inputs are the map's star rating, your accuracy, your maximum combo on the attempt, how many misses you dropped, the number of hit objects, and the mods you played with.

The osu!(standard) calculator in the ppy/osu codebase does not simply add its skill components together. It produces separate aim, speed, accuracy and cognition values and combines them with a p-norm using an exponent of 1.1, so a play that is strong in more than one area is worth more than the parts suggest. Mods then adjust the result rather than sitting outside it: NoFail applies a reduction that scales with miss count, SpunOut scales the total down in proportion to how much of the map is spinners, and Relax removes the speed and accuracy components entirely.

Qualified and loved beatmaps have leaderboards but award no pp at all, however good the score. Only ranked and approved maps feed a profile total.

The 0.95 decay and what it costs you

Profile pp is a decaying weighted sum. After the server has reduced your account to one best score per beatmap and sorted them by pp, the score in position n is multiplied by 0.95n−1 before it is added in:

total pp = pp1 × 0.950 + pp2 × 0.951 + pp3 × 0.952 + …

PositionWeightA 300 pp play there contributes
1st1.0000300.00 pp
2nd0.9500285.00 pp
5th0.8145244.35 pp
10th0.6302189.07 pp
25th0.292087.60 pp
50th0.081024.30 pp
100th0.00621.87 pp

The weights form a geometric series whose total can never exceed 20 (that is 1 ÷ 0.05). The first hundred positions account for 19.88 of that 20 — about 99.4 per cent — which is why the top hundred is treated as the whole picture in practice.

The bonus term for breadth

A separate term rewards playing many maps rather than a few very well. The server adds 416.6667 × (1 − 0.995min(N, 1000)), where N is the number of ranked maps with a score set, so the term has a hard ceiling.

Half the ceiling arrives at around 137 scored beatmaps, so the bonus is generous early and close to flat later. For an established player it is a fixed few hundred pp sitting underneath the weighted sum. It is the usual reason a hand calculation of someone's top plays comes out a few hundred pp short of the figure on their profile.

A worked example

Take a player with scores on exactly 100 beatmaps, each worth precisely 200 pp. Their weighted total is 200 × 19.8816 = 3,976.32 pp before the bonus term.

They then set a 400 pp play — double their previous best. It enters at position 1 at full weight, and all one hundred existing plays shift down a place, each retaining 95 per cent of the weight it previously had. The new weighted total is 4,177.50 pp.

The 400 pp play was therefore worth 201.18 pp on the profile, almost exactly half its face value. That gap is the entire point of the design: displacing your own scores costs 5 per cent of the weight of everything below the new entry, so the pp figure on a score screen always overstates what actually lands on a profile. The same play entering at position 25 instead would be weighted at 0.9524 = 0.292, contributing about 117 pp before that displacement cost is subtracted.

What the top-100 shorthand hides

Three details get lost in the usual one-line summary.

PP during a tracked session

Because pp only moves when one of these weighted positions changes, a live pp figure on its own tells you very little. TrackMyOsu records a snapshot of your pp, global rank, country rank, accuracy, play count and score totals roughly every 60 seconds while a session is running, and takes a baseline of your best-performance list at the moment you press Start.

When a new entry appears in that list during the session, the play is logged with the pp it carried, and the session's pp delta is the difference between the first and last snapshot. Sessions are kept permanently, so a run that gained 12 pp across four hours is still there months later next to the plays that produced it, rather than being flattened into a single current total. Session pp gains also feed the site's PP-gains leaderboard.

See also

Related guides

Longer explainers that use this term: browse all osu! guides, or start with Understanding osu! pp, How to read your osu! stats and Star rating explained.

Sources

Definitions follow the official osu! wiki and the ppy/osu source. Session figures come from TrackMyOsu's own tracked-session database.

By . Last updated 2026-08-13.

Track your own osu! sessions

TrackMyOsu snapshots your pp, rank and top plays when you start playing, then shows exactly what changed when you stop. Every session is kept permanently. Free, no install, no password — it uses osu! OAuth.

Login with osu!