How to track your osu! pp gains, session by session
Tracking osu! pp gains session by session means recording your performance points before you play, recording them again after you stop, and attributing the difference to specific plays. On TrackMyOsu that is three actions: log in through osu! OAuth, press Start Session before you play, and press Stop when you finish. The site captures pp, global and country rank, accuracy, play count, play time, ranked and total score, level and grade counts at the start, refreshes every 60 seconds while the session runs, and saves a permanent record showing which top plays were new and how much pp each one was actually worth once osu!'s weighting curve had been applied.
What a pp gain actually measures
A session's pp gain is not the pp value of the plays you set during it. Your profile figure is an aggregate: osu! sorts your eligible scores by pp, then weights each one by 0.95 raised to the power of its position minus one. The best score counts in full, the second at 95%, the third at 90.25%, and so on down the list.
When a new score enters that list, three things happen at once. The new score contributes its own pp at its own weight, every score it outranks slides down one position and loses 5% of the contribution it was making, and the score at the bottom drops out entirely. Your gain is the net of all three. This is why two players can each set a top play worth 300pp on paper and walk away with completely different profile movements. Tracking the aggregate before and after is the only way to see the real figure.
Step 1 — Log in with osu! OAuth
Open trackmyosu.com and choose Login with osu!. You are redirected to osu.ppy.sh, where you approve the request on osu!'s own authorisation page, and then returned to TrackMyOsu signed in. Your osu! password is never typed into TrackMyOsu and never reaches it — that is the point of OAuth. What TrackMyOsu receives is a token that lets it read the same public profile information anyone can see on your osu! page: pp, ranks, accuracy, play counts, score totals, your best performance list and your medals.
Because the connection is an authorisation grant rather than a stored credential, you can revoke it at any time from your osu! account settings, and TrackMyOsu immediately loses the ability to read anything new. There is nothing to install and no client-side software involved, so the login works the same way in a desktop browser or on a phone.
Step 2 — Start a session and capture a baseline
Press Start Session from the dashboard before your first play. TrackMyOsu takes a full snapshot and stores it as the session's baseline. Everything measured later is measured against this row.
| Captured at start | Why it matters |
|---|---|
| pp, global rank, country rank | The headline movement for the session |
| Accuracy and 300/100/50/miss counts | Lets accuracy drift be explained, not just observed |
| Play count and play time | How much play produced the movement |
| Ranked score, total score, level | Volume metrics that only ever climb |
| SS, S and A counts, silver and regular kept apart | Silver grades come from Hidden, Flashlight or Fade In |
| Identifiers of every current top play and medal | The reference set used to decide what is new |
That last row is what makes new-play detection exact rather than inferred from a pp jump.
Step 3 — Play while the session runs
Open osu! and play as you normally would. The session runs independently of your browser: TrackMyOsu refreshes your stats every 60 seconds for as long as the session is active, and each refresh is stored as its own snapshot rather than overwriting the last one. A finished session is therefore a time series, not just a start and an end.
On every refresh the current best-performance list is compared against the identifiers captured at the start. Anything present now that was not present then is a new top play, and it is recorded with its pp, accuracy, grade, mods, max combo, star rating and the beatmap it was set on. Medals are handled the same way. You can close the tab, reboot, or leave the browser entirely — none of that stops the session, because the tracking is not happening in the page.
Step 4 — Stop the session and read the diff
Press Stop when you are finished. TrackMyOsu takes a final snapshot, marks it as the session's end, and writes the whole thing into your permanent history. The session detail page then shows the difference between the first and last snapshots alongside the list of everything new that appeared in between.
Read it in this order. Start with pp gained, because that is the aggregate outcome. Then look at the new top plays, because those are the cause. Then check rank movement, which is a consequence of your pp change and of everyone else's, so it is the least controllable of the three. Accuracy and play count give you the context: a session with twelve new top plays and one with a single new top play can produce identical pp figures, and the difference between them matters when you are trying to work out whether an approach is working. Sessions are never overwritten, so the record stays comparable months later.
A worked example: one session, two new top plays
Take an illustrative profile whose weighted top 100 comes to 6,372.7pp and whose bonus is at its ceiling, so the profile reads about 6,786pp at the start of the session. Its best play is 380pp and its hundredth is 140.5pp. During the session the player sets two new top plays.
| Event | Enters at | Face value | Profile pp after | Actual gain |
|---|---|---|---|---|
| Session start | — | — | 6,786.6 | — |
| New top play A | #1 | 400.0pp | 6,867.1 | +80.5 |
| New top play B | #17 | 330.0pp | 6,891.4 | +24.3 |
| Session end | — | 730.0pp combined | 6,891.4 | +104.8 |
Play B enters one place lower than it would have, because play A has already shifted the list.
Two plays worth 730pp between them moved the profile by 104.8pp, roughly 14% of their face value. Without a before-and-after record the player sees a 400pp play in their recent scores and a profile that moved by rather less, with no obvious link between the two. The session diff makes the link explicit.
Why the gain is smaller than the play's pp
The arithmetic behind that example is worth understanding, because it is the single most common source of confusion about pp. When a new score enters at position k, the net change to your weighted total is:
- Plus the new score's pp multiplied by the weight of position k, which is 0.95 to the power of k minus one.
- Minus 5% of the combined weighted contribution of every score it pushed down a place.
- Minus the weighted value of the score knocked off the bottom of the list.
For play A above: 400 × 1.00 = 400.0, minus 5% of 6,371.8 = 318.6, minus 0.9 for the displaced hundredth play, giving 80.5pp. The middle term is the one people forget, and it scales with how much pp you already have. That is the mechanism behind diminishing returns — the larger your existing top 100, the more a new entry has to overcome before it adds anything at all.
Session tracking compared with the alternatives
There are three practical ways to know what a play session did to your stats, and they differ mainly in what counts as the unit of measurement.
| Manual notes | Date-range snapshots | Session tracking | |
|---|---|---|---|
| Unit | Whatever you remember to write | Two points in time | One sit-down at the game |
| New top plays | Recalled from memory | Inferred from the interval | Matched against a start-of-session list |
| Effort per session | Two manual entries | Remember to update | Start and Stop |
| Granularity | As fine as your discipline | As fine as your update frequency | Fixed at one session |
Date-range tools such as osu!track are well suited to long-arc questions — how much you improved over a month, or across a year. Session tracking answers a narrower question well: what did tonight do. Neither model is more accurate than the other, since both read the same public osu! data; they simply slice it differently, and running both alongside each other causes no conflict.
What a session history is good for over time
One session tells you about one evening. Fifty sessions tell you something you cannot get from a profile page, because the osu! profile shows the current state and not the path taken to reach it.
Patterns that only emerge from a run of sessions include how many plays you typically need before a new top play appears, whether your gains come from a few large jumps or a steady trickle of mid-list entries, and whether longer sessions actually produce proportionally more than short ones. That last one surprises people regularly.
Every completed session also feeds the rest of the site. Your public profile at /u/<username> shows your tracked history to anyone with the link, the pp-gains leaderboard ranks tracked sessions by pp earned, the Hall of Fame collects standout results, and profile badges are awarded from your accumulated tracking record. None of it requires any action beyond pressing Start and Stop.
Sources
Game mechanics described here follow the official osu! wiki — in particular Performance points, Star rating and Accuracy — and the ppy/osu difficulty and performance calculators. Session figures are computed from TrackMyOsu's own tracked-session database.
By carrot12_. Last updated 2026-08-12.