Grades (SS, S, A, B, C, D)

osu! awards a letter grade to every passed play, running D, C, B, A, S and SS from worst to best. A grade is not simply a restatement of accuracy. On the stable client, osu!standard thresholds are written in terms of the proportion of 300 judgements, the share of 50s and whether the play contained any misses, while osu!(lazer) grades from the accuracy percentage and then demotes an S or SS to an A if the play contains a miss. An S or SS earned while using Hidden, Flashlight or Fade In is displayed as a silver grade, which marks the mods used rather than a higher tier.

Thresholds on the stable client

These are the conditions given by the osu! wiki. The osu! and osu!taiko columns are expressed as a proportion of top judgements, not as an accuracy percentage — that distinction is the source of most confusion about grades.

Gradeosu!osu!taikoosu!catchosu!mania
SS100% accuracy100% accuracy100% accuracy100% accuracy
SOver 90% 300s, at most 1% 50s, no missesOver 90% GREATs, no misses98.01% to 99.99%Over 95%
AOver 80% 300s and no misses, or over 90% 300sOver 80% GREATs and no misses, or over 90% GREATs94.01% to 98.00%Over 90%
BOver 70% 300s and no misses, or over 80% 300sOver 70% GREATs and no misses, or over 80% GREATs90.01% to 94.00%Over 80%
COver 60% 300sOver 60% GREATs85.01% to 90.00%Over 70%
DAnything elseAny other passing scoreUnder 85.00%Anything else

osu!catch and osu!mania are the exceptions: both grade purely on accuracy, and in both an S is possible with misses in the play. In osu! and osu!taiko a single miss rules out S no matter how clean the rest was.

Thresholds in osu!(lazer)

The lazer client grades from accuracy using one shared ladder, which each ruleset may then adjust. The shared cutoffs are SS at exactly 100%, S at 95% or above, A at 90%, B at 80% and C at 70%, with D below that. The osu! and osu!taiko rulesets add a single override: a play that would otherwise have earned an S or SS but contains at least one miss is demoted to an A.

Two rulesets deviate further. osu!catch keeps its own cutoffs — SS at 100%, S at 98%, A at 94%, B at 90% and C at 85% — matching the stable table. osu!mania promotes an S back to SS whenever every judgement in the play was a 300 or better. That rule matters because under ScoreV2 weighting a rainbow 300 counts 305 and a gold 300 counts 300, so a play of 900 rainbow 300s and 100 gold 300s computes as (305 × 900 + 300 × 100) ÷ (305 × 1,000) = 99.84% and would otherwise miss the SS it clearly deserves.

Silver grades

A silver S or SS is not a rank above the ordinary one. It is the same grade, marked to show that the play was set with a mod that hides part of what the player can see: Hidden, Flashlight, or Fade In in osu!mania. The osu! API names the buckets separately — plain grades appear as ss and s, the silver versions as ssh and sh — and the lazer client models them as the ranks XH and SH, converted from X and S when one of those mods is active.

Because the silver marker depends only on the mods, a silver S and a plain S set on the same map with the same judgements represent exactly the same threshold being met, under different visual conditions. Only S and SS have silver variants; there is no silver A.

When accuracy and grade disagree

Consider two osu!standard plays on the same 500-object map, both with accuracy of exactly 97.27%:

On stable, Play A clears every S condition: 96% of judgements are 300s, only 0.4% are 50s, and there are no misses. Play B has the identical 96% share of 300s but one miss, which rules out S and leaves it an A. The results screen reports the same accuracy for both. In lazer the outcome matches for a different reason — Play B clears the 95% cutoff, then loses the S to the miss override.

The reverse case exposes the client difference. A play of 460 300s, 38 100s, 2 50s and no misses is 94.60% accurate. On stable it is an S, because 92% of its judgements are 300s and nothing disqualifies it. In lazer the same judgement counts fall below the 95% cutoff and grade as an A.

Grade counts on a profile

An osu! profile tallies grades per game mode, but only at the top of the ladder. The API's grade_counts object exposes five buckets — ss, ssh, s, sh and a — and there is no tally for B, C or D anywhere on the profile. The counts follow a player's best score on each ranked beatmap, so improving a map from an A to an S moves the tallies rather than adding to both.

Grade counts measure consistency rather than difficulty. A player who sticks to comfortable maps can accumulate thousands of S grades on modest pp, while a player pushing their limit on hard maps may hold a much smaller grade count at a far better global rank. Read together with accuracy, grade counts describe how cleanly someone finishes maps, not how hard those maps were.

Grades in a tracked session

TrackMyOsu snapshots those five grade counts on every refresh while a session is open, so the difference between a session's opening and closing snapshot is a permanent record of which top-tier grades were added while you played. Each new top play detected during a session is stored with its grade, accuracy and mods as osu! reports them.

Where a play contains a miss, osu!'s own displayed grade for that score can be one tier lower than accuracy alone implies, so treat the letter as a quick shorthand and the accuracy figure as the precise number.

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!