Menu Files
Button
Use same height as other button pieces.
Tinting varies by button state.

This element is stretched to fit the needed width.
Use same height as other button pieces.
Tinting varies by button state.

Use same height as other button pieces.
Tinting varies by button state.

Mod Icons

Click the Auto mod icon to see this icon.






This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

This element is osu!mania-specific.
Cycle through the xK mods to view.

Click the Double Time mod icon to see this icon.


Click the Sudden Death mod icon to see this icon.


This element is osu!-specific mod.
This mod will move the cursor for the player while the player just needs to tap or click.



This mod is available in the cuttingedge stream only.
This element is an osu!-specific mod.

This mod does not have an image in-game.
This mod does not show up in the mod selection or leaderboards.
Indicator for plays with certain mods and combinations.
- Does not show up if only ‘Score V2’, ‘Auto’, ‘Double Time’, ‘Nightcore’, or ‘Half Time’ by itself is used, combinations with other mods including them will show the mod.

This mod does not have an image in-game.
This mod does not show up in the mod selection.
Indicator for plays done using a touchscreen.
- The client uses a background algorithm to calculate if a play is done with a touchscreen, if too many cursor warps occur it might be applied to a play.

Cursor
By default, this element will rotate and expand (on click).
skin.ini commands:
- To disable cursor expand (on click), set
CursorExpand
to0
. - To disable cursor rotate, set
CursorRotate
to0
.
- To disable cursor expand (on click), set

This element does not rotate nor expand (on click).
This element is above the
cursor.png
element.

This element is used when the player presses the smoke key.
- By default, the smoke key is bound to
C
.
- By default, the smoke key is bound to

This element is underneath the
cursor.png
elementIf
cursormiddle.png
is present, a longer trail is used.By default, this element does not rotate.
skin.ini command:
- To enable cursortrail rotate, set
CursorTrailRotate
to1
.
- To enable cursortrail rotate, set

This element is used when the player presses the Left-Click key or Right-Click key on their keyboard or mouse.
- By default, the Left-Click key is bound to
Z
. - By default, the Right-Click key is bound to
X
.
- By default, the Left-Click key is bound to

Countdown
This should either say “1” or “3”.

This should say “2”.

This should either say “3” or “1”.

This should say “Go!”.

This should say “Are You Ready?” or “Ready?”.

Game Mode Indicators
This element flashes in the centre of the song select screen in respect of the song’s BPM.
Select osu! for this to be visible.

This element flashes in the centre of the song select screen in respect of the song’s BPM.
Select osu!taiko for this to be visible.

This element flashes in the centre of the song select screen in respect of the song’s BPM.
Select osu!catch for this to be visible.

This element flashes in the centre of the song select screen in respect of the song’s BPM.
Select osu!mania for this to be visible.

This element is used inside the game mode selection dropdown menu.
Click on
selection-mode.png
to see.

This element is used inside the game mode selection dropdown menu.
Click on
selection-mode.png
to see.

This element is used inside the game mode selection dropdown menu.
Click on
selection-mode.png
to see.

This element is used inside the game mode selection dropdown menu.
Click on
selection-mode.png
to see.

This element is on top of the
selection-mode.png
element.Select osu! for this to be visible.
If the
menu-snow.png
element is not skinned, this element will be used if it is selected.

This element is on top of the
selection-mode.png
element.Select osu!taiko for this to be visible.
If the
menu-snow.png
element is not skinned, this element will be used if it is selected.

This element is on top of the
selection-mode.png
element.Select osu!catch for this to be visible.
If the
menu-snow.png
element is not skinned, this element will be used if it is selected.

This element is on top of the
selection-mode.png
element.Select osu!mania for this to be visible.
If the
menu-snow.png
element is not skinned, this element will be used if it is selected.

Grade Letters
Positioning varies:
- 192px away from right screenborder
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screenborder
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Positioning varies:
- 192px away from right screen border
- v1.0: at 272px height
- v2.0+: at 320px height

Origin varies:
- Break: Centre
- Song Select panel: Left
- User scores: Centre

Key Counter
This element is positioned at 320px height.
Since the image is rotated, the origin on the image itself is Top Left.
This element is rotated 90 degrees clockwise and stretched by 1.05x in-game.
Must be enabled in the options to see.

Positioning varies for each key:
- 24px away from screenborder
- K1/L: at 350px height
- K2/R: at 398px height
- M1/D: at 446px height
- M2: at 492px height
Toggleable in the options.
Shrinks briefly when the keys are pressed.
Tinting varies by button location and state:
- White, if key is not pressed.
- Yellow, if the key is pressed and located on the top half.
- Purple, if the key is pressed and located on the bottom half.

Leaderboard
This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards and input overlay.
- For input overlay, the initial button labels are not skinnable.
Tinting depends on use:
- Score: white
- Combo: cyan
- Input overlay: use
InputOverlayText
value from skin.ini or black, if not defined
Origin varies on use:
- Score: Top Left
- Combo: Top Right
- Rank: Top Right
- Input overlay: Top

This element is used for the in-game leaderboards.
This element is used as the decimal separator.
- Usage depends on your selected language.
Tinting depends on use:
- Score: white
- Combo: cyan
Origin varies on use:
- Score: Top Left
- Combo: Top Right

This element is used for the in-game leaderboards.
This element is used as the decimal separator.
- Usage depends on your selected language.
Tinted white.

This element is used for the in-game leaderboards.
This element is used in Multi games when the win condition is set to Accuracy.
Tinted white.

This element is used for the in-game leaderboards.
This element is used as the multiplier symbol.
Tinted cyan.

Main Menu
osu!supporter required.
This element appears upon starting the client.
This element folds out and expands, then fades out.

Used in the offset wizard.
Stretched to fit screen height.
Tinting varies by tick state.

Pause Screen
When the game is paused, the playfield will be dimmed and this file will overlay on top of it.
This element will not stretch to fit.
Full image height is 768px.
Smaller images are shown with transparent borders while larger images are partially shown.
This can also be a
.jpg
file (and can have the.jpg
extension).- osu! prefers
.png
over.jpg
.
- osu! prefers

When the player has failed, the playfield will be dimmed and this file will overlay on top of it.
This element will stretch to fit.
This can also be a
.jpg
file (and can have the.jpg
extension).- osu! prefers
.png
over.jpg
.
- osu! prefers

This element is positioned at 576px height.
This element is seen in the fail and pause screens.

This element is positioned at 224px height.
This element is seen in the pause screen.

This element appears on the ranking screen (after finishing a map or viewing a score).
This element is positioned at 672px height or at 576px height, if
pause-retry.png
is not available.

Positioning varies:
- pause or fail screen:
- Centre, positioned at 400px height
- ranking screen:
- Right, positioned at 576px height
- pause or fail screen:
This element appears on the ranking screen after finishing a map and on the pause and fail screens.

Playfield
To have multiple combobursts, use:
comboburst-{n}.png
.- One of the images in the set will be appear when a combo milestone is met.
For v2.2-, this is osu! and osu!catch’s combobursts.
For v2.3+, this is osu!’s combobursts.
This can be disabled in the options.
This should face towards the right.

Animation name:
play-skip-{n}.png

This element is used for song selection (the stars that fly from right to left), cursor, kiai time, combobursts.

This element is shown when using mods that disable score submission.

Beatmap skinnable status is suspected to be a bug.
Tinting varies by version.
- pause screen:
- all versions: tinted blue
- exiting breaks:
- v1.0: tinted white
- v2.0+: tinted red
- pause screen:

Beatmap skinnable status is suspected to be a bug.
If skinned, this element overrides
play-warningarrow.png
.This element is used in the pause and fail screens.
Not tinted.

Beatmap skinnable status is suspected to be a bug.
If skinned, this element overrides
play-warningarrow.png
.Used for the end break warning.
Not tinted.

This element is seen when the player has a low amount of HP, about less than 50%, during a long enough break.

This element is seen when the player has a high amount of HP, about more than 50%, during a long enough break.

This element is used in multi games, seen next to the player’s score (on the sides) when the player votes to skip the intro of a beatmap.

Used when playing with 4:3 storyboards on widescreen.
While beatmapping, disable
Widescreen support
in song setup for this to appear.This element is stretched to fit the needed area.
The right pillar is flipped horizontally.

This element is only used in the beatmap editor.
Should be a circle.

Ranking Panel
Can be animated, but only the zeroth frame will be used.
- Animation name:
ranking-accuracy-{n}.png
- Animation name:
Positioning varies:
- v1.0: (291,500)
- v2.0+: (291,480)

Suggested SD size:
- v1.0: min: 308x156
- v2.0+: min: 308x148
Positioning varies:
- v1.0: (256,576)
- v2.0+: (256,608)
The box itself is 301x141.
The first 7 pixels at the top and at the left should be transparent.
- In v1 it’s shifted down by 8px.

Can be animated, but only the zeroth frame will be used.
- Animation name:
ranking-maxcombo-{n}.png
- Animation name:
Positioning varies:
- v1.0: (8,500)
- v2.0+: (8,480)

Suggested SD size:
- v1.0: max height: 694px
- v2.0+: max height: 666px
Positioning varies:
- v1.0: (0,74)
- v2.0+: (0,102)

Can be animated, but only the zeroth frame will be used.
- Animation name:
ranking-perfect-{n}.png
- Animation name:
Positioning varies:
- v1.0: (320,688)
- v2.0+: (416,688)

x-position 32px away from the right side

Position varies:
- at 672px height.
- at 576px height, if retry is not available.

Positioned at 576px height.
If skinned, this element overrides
pause-retry.png
.

Scorebar
This element has no size restrictions.
When used in osu!mania, this element is rotated 90 degrees anti-clockwise, scaled to 0.7x size, and placed at the bottom right of stage.

Animation name:
scorebar-colour-{n}.png
.Blend mode varies:
- Multiplicative, if
scorebar-marker.png
is used.- Tinted black over time when near critical zone and tinted red in the critical zone.
- Multiplicative, if
Normal, otherwise.
Positioning varies:
- If a marker is used, positioned at (12,12).
- Otherwise, positioned at (5,16).
When used in osu!mania, this element is rotated 90 degrees anti-clockwise, scaled to 0.7x size, and placed at the bottom right of stage.

scorebar-marker.png
has higher priority.This element represents the “passing” zone.
This element is not used in osu!mania.
Y-position at 16; x-position is placed at the end of the cropped
scorebar-colour.png
A
scorebar-colour.png
is required for this element to appear.

scorebar-marker.png
has higher priority.this element represents the “warning” zone
This element is not used in osu!mania
Y-position at 16; x-position is placed at the end of the cropped
scorebar-colour.png
A
scorebar-colour.png
is required for this element to appear.

scorebar-marker.png
has higher priority.This element represents the “critical” zone.
This element is not used in osu!mania
Y-position at 16; x-position is placed at the end of the cropped
scorebar-colour.png
A
scorebar-colour.png
is required for this element to appear.

If skinned, this element overrides the
scorebar-ki.png
,scorebar-kidanger.png
, andscorebar-kidanger2.png
elements.The marker fades out if the player reaches the critical zone.
This element is not used in osu!mania.
Y-position at 16; x-position is placed at the end of the cropped
scorebar-colour.png
.

Score Numbers
By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- Results screen
This element is for the accuracy.
The usage is dependent on your selected language.

By default, this is also used for the combo numbers.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- Total Score: x1.3 in V2+
- In-game
- Score: x0.96
- Accuracy: x0.57
- Results screen
This element is for the accuracy.
The usage is dependent on your selected language.

This element is for the accuracy.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- In-game
- Accuracy: x0.57
- Results screen

This element is for the combo, only used in osu!.
Custom pathing possible by using
ScorePrefix
ComboPrefix
(only for combo counters)
Different scaling depending on usage:
- Results screen
- All counters: x1.1
- In-game
- osu!standard Combo: x1.3 (x1.8 fully expanded)
- Results screen
Blend mode varies:
- If used for combo counter:
- Additive for the expanding after images.
- If used for combo counter:

Song Selection Buttons
Any pixels outside of the 25x25 square will be cut off.

In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 92x87
- v2.0+: 92x90

Hover over
selection-mode.png
to see.In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 92x87
- v2.0+: 92x90

In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

Hover over
selection-mods.png
to see.In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

Hover over
selection-random.png
to see.In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

Hover over
selection-options.png
to see.In v1.0, positioning is 87px away from the bottom.
Suggested SD size:
- v1.0: 77x87
- v2.0+: 77x87

Depending on the client’s window size, 4 to 5 tabs will be displayed.

Song Selection
Stretches to 100% of screen width.
Making this element too tall will prevent mouse clicks from interacting with elements below it.

Rightmost few pixels repeat from a certain point
Repetitions are layered below the initial asset
Their starting point varies depending on user’s in-game resolution

Song Selection Carousel
This element is used for difficulty star ratings (seen in song selection).
- v2.2+ will scale down the last star, if necessary
- v2.1- will crop the last star, if necessary
Tinting depends on the state of
menu-button-background.png

This element is used for song selection (the stars that fly from right to left), cursor, kiai time, combobursts.

Standard
Hitbursts
Animation name:
hit0-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Animation name:
hit50-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Animation name:
hit100-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Default skin shows 喝 (Katsu)
- Shows after finishing a combo with a 100
Animation name:
hit100k-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Animation name:
hit300-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Default skin shows 激 (Geki)
- Shows after finishing a combo with only 300s
Animation name:
hit300g-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

Default skin shows 喝 (Katsu)
- Shows after finishing a combo with a 300, while having 1 or more 100
Animation name:
hit300k-{n}.png
Animation rate is fixed to 60 FPS. With a total length of 1.1s
If animation is used:
- animation does not loop, but the last frame persists until it fades out.
- results screen uses 0th frame
- static sprites are used (if included)
- single frame behaviour is not used.
Animation timing: (frame:opacity)
0-7 : 0% -> 100%
8-30 : 100%
30-66 : 100% -> 0%

hit50.png
must be skinned.

hit100.png
must be skinned.This element is used for
hit100.png
andhit100k.png
.

hit300.png
must be skinned.This element is used for
hit300
,hit300g
, andhit300k
.

Hitcircle
Tinting depends on the hit circle’s combo colour.
This element shrinks over time.
Should be a circle.

Image used for osu! combo burst
This element fades in before getting tapped and expands when tapped or missed.
- If Hidden mod is enabled, this will fade in before getting tapped and only fade out.
Tinting depends on the hit circle’s combo colour.
Also used for
sliderstartcircle
and/orsliderendcircle
if not skinned.Should be a circle.

This element fades in before getting tapped and expands when tapped or missed.
- If Hidden mod is enabled, this will fade in before getting tapped and only fade out.
This can either overlay or underlay the combo number, by default this will always overlay.
- To make this underlay the combo number, set
HitCircleOverlayAboveNumber
to0
.
- To make this underlay the combo number, set
Should be a circle.
This element was animatable in the past. For full details, see skinning history.
The overlay’s visibility on sliders depends on slider circle elements:
- If
sliderstartcircle
/sliderendcircle
exists in a skin withoutsliderstartcircleoverlay
/sliderendcircleoverlay
, thenhitcircleoverlay
isn’t displayed at all on slider starts or ends. - If
sliderstartcircle
/sliderendcircle
does not exist, thenhitcircleoverlay
is used as the overlay sprite for slider starts or ends.
- If

Animation name:
followpoint-{n}.png
If an arrow-like figure is used, it should point towards the right.
This stays on the screen for 1.2 seconds (1200ms).

This can be disabled in the options.
Tinting depends on the hit circle’s combo colour.
Used during kiai time:
- Coloured afterimage as part of hitburst explosion.
- Glowing behind hit circles during kiai time.
In v2.0+, the expanding animation is smaller.

Overrides
hitcircle.png
for the start of the slider, if skinned.This element is the hit circle for the start of the slider.
This element fades in before getting tapped and expands when tapped or missed.
- If Hidden mod is enabled, this will fade in before getting tapped and only fade out.
Should be a circle.

This element fades in before getting tapped and expands when tapped or missed.
- If Hidden mod is enabled, this will fade in before getting tapped and only fade out.
This can either overlay or underlay the combo number, by default this will always overlay.
- To make this underlay the combo number, set
HitCircleOverlayAboveNumber
to0
.
- To make this underlay the combo number, set
Overrides the
hitcircle.png
image for the start of the slider.sliderstartcircle.png
is required for this to work.Should be a circle.
This element was animatable in the past. For full details, see skinning history.

Overrides
hitcircle.png
for the end of the slider, if skinned.This element is the hitcircle for the end of the slider.
This element fades in before completing and expands when completed.
- If Hidden mod is enabled, this will fade in before completing and only fade out.
Should be a circle.

This element fades in before completing and expands when completed.
- If Hidden mod is enabled, this will fade in before completing and only fade out.
This can either overlay or underlay the combo number, by default this will always overlay.
- To make this underlay the combo number, set
HitCircleOverlayAboveNumber
to0
.
- To make this underlay the combo number, set
Overrides the
hitcircleoverlay.png
image for the end of the slider.sliderendcircle.png
is required for this to work.Should be a circle.
This element was animatable in the past. For full details, see skinning history.

osu! will rotate this element to line up with the slider’s path.
This element will pulse at the bpm.
If an arrow-like figure is used, it should point towards the right.

Hitcircle Numbers
In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

In v1.0, these expanded then fades out with the hit circle.
- If Hidden mod is enabled, this will only fade out.
In v2.0+, these fade out.
Custom pathing possible by using
HitCirclePrefix
This element is downscaled by 0.8x

Slider
Animation name:
sliderfollowcircle-{n}.png
Max size: 308x308 (hitbox)
This element expands briefly when collecting a slider tick.

Animation name:
sliderb{n}.png
(no hyphen (-
))Tinting depends on the hit circle’s combo colour.
By default, the sliderball flips upon hitting the reverse arrow.
- To disable this, set
sliderballflip
to0
.
- To disable this, set

Ignored if
sliderb.png
is skinned.- Beatmap skinnable if the player skin does not have
sliderb.png
skinned.
- Beatmap skinnable if the player skin does not have
Tinted black.
This element is the background layer of the default slider ball.

Ignored if
sliderb.png
is skinned.- Beatmap skinnable if the player skin does not have
sliderb.png
skinned.
- Beatmap skinnable if the player skin does not have
This element is the top layer of the ball that stays in a static position (does not flip nor rotate).

Beatmap Skinnable if the player skin is using v1.0.
Used when the player collects a slider tick.
Should say “10”.

Beatmap Skinnable if the player skin is using v1.0.
Used when the player starts a slider and/or when they hit the reverse arrow.
Should say “30”.

This element is the slider tick.
If this element is overlapping the slider start or end, it will not be rendered.
This element is also used in osu!taiko.

Spinner
This element is positioned around 397px vertically.
Applied to both styles.
Shrinks over time, like
approachcircle.png
Usage is forced when
spinner-circle.png
orspinner-top.png
is skinned.This element is also used for osu!taiko.

RPM is short for “Revolutions Per Minute”
This element is positioned at 139px to the left from the middle of the screen and at 712px height
- (373,712) at 1024x768
- (544,712) at 1366x768

This element is positioned around 230px vertically.
This appears when the player has fulfilled the spinner.

This element is positioned around 582px vertically.
This appears at the start of a spinner.

Spinner (Old)
osu! is watching for this element. If found, it will force the old styled spinners on v2.0+ (all elements in this section).
Using the suggested SD size will help alignment with
spinner-metre.png
.By default, tinted grey.
- To change this, use the
SpinnerBackground
command.
- To change this, use the

This element is positioned around 397px vertically.
This element is the rotating part of the spinner.
This element is also used for osu!taiko.
- If using the new spinner style, you can still skin this for osu!taiko.

Positioned 46px away from top and 512px to the left from the middle axis.
- (0,46) at 1024x768 and (171,46) at 1366x768.
This element is the progression bars
The highest part of the bar will blink when bonus points are awarded.
- Blinking can be disabled by setting
SpinnerNoBlink
to1
in the skin.ini
- Blinking can be disabled by setting

Beatmap Skinnable if the player skin is using v1.0.
This appears after the spinner fades out.

Spinner (New)
This element is positioned around 397px vertically.
Tinted cyan, blinks white when bonus points are awarded
This blinks when awarding bonus points.
This element is the lowest layer.

This element is positioned around 397px vertically.
This rotates the slowest.
This element is the second lowest layer.

This element is positioned around 397px vertically.
This rotates the second fastest (slower than
spinner-middle2.png
).This element is the middle layer.

This element is positioned around 397px vertically.
Tinted red over time (this is the time indicator).
This element is the highest layer.

This element is positioned around 397px vertically.
This rotates the fastest.
This element is the second highest layer.

Catch the Beat
Catcher & Interface
Animation name:
fruit-catcher-idle-{n}.png
This element is the catcher state when doing nothing or catching objects
This should face towards the right.
The first 16 pixels at the top should be transparent.
The width should cover two fruits at a Circle Size of 0.

Animation name:
fruit-catcher-fail-{n}.png
This element is the “missed” catcher state.
This overrides
fruit-catcher-kiai.png
if a fruit or drop/droplet is missed during kiai time.This should face towards the right.

Animation name:
fruit-catcher-kiai-{n}.png
This element is the catcher state during kiai time.
fruit-catcher-fail.png
will override this if a fruit or drop/droplet is missed during kiai time.This should face towards the right.

Beatmap Skinnable if the player skin is using v2.2-.
Animation name:
fruit-ryuuta-{n}.png
This should face towards the right.

To have multiple combobursts, use:
comboburst-fruits-{n}.png
.- One of the images in the set will be appear when a combo milestone is met.
On v2.2-,
comboburst.png
will be used instead.osu!catch-specific combobursts
This can be disabled in the options.
This should face towards the right.

Fruits
This element is shown first.
This element is used for the hyperdash outline.
Tinting depends on the fruit’s combo colour.

This element is shown first; overlaying
fruit-pear.png
.

This element is shown second.
This element is used for the hyperdash outline.
Tinting depends on the fruit’s combo colour.

This element is shown second; overlaying
fruit-grapes.png
.

This element is shown third.
This element is used for the hyperdash outline.
Tinting depends on the fruit’s combo colour.

This element is shown third; overlaying
fruit-apple.png
.

Can be animated, but only the zeroth frame will be used.
- Animation name:
fruit-orange-{n}.png
- Animation name:
This element is shown fourth (last).
This element is used for the hyperdash outline.
Tinting depends on the fruit’s combo colour.
- On the ranking screen:
- Tinted orange for collected fruit
- Tinted light grey for missed fruit.
- On the ranking screen:

Can be animated, but only the zeroth frame will be used.
- Animation name:
fruit-orange-overlay-{n}.png
- Animation name:
This element is shown fourth (last); overlaying
fruit-orange.png
.

Tinted yellow.
This element is shown during a “spinner”.
This element is used for the hyperdash outline.

This element is shown during a spinner; overlaying
fruit-bananas.png
.

Can be animated, but only the zeroth frame will be used.
- Animation name:
fruit-drop-{n}.png
- Animation name:
This element is shown during a “slider”.
Tinting depends on the fruit’s combo colour.

This element is not used in the ranking screen.
This element is shown during a “slider”; overlaying
fruit-drop.png

Taiko
Drum Bar
Beatmap skinnable status is suspected to be a bug.
Positioned at (0,216).
This element is where the drum goes.

Beatmap skinnable status is suspected to be a bug.
Position varies by skin version:
- v1–v2.0: (29,266) (and (86,266) when mirrored)
- v2.1+: (0,216) (and (90,216) when mirrored)

Beatmap skinnable status is suspected to be a bug.
Position varies by skin version:
- v1–v2.0: (29,266) (and (86,266) when mirrored)
- v2.1+: (0,216) (and (90,216) when mirrored)
Suggested SD size:
- v1.0–v2.0: Max width: 56px
- v2.1+: 90x200

Beatmap skinnable status is suspected to be a bug.
Position varies by skin version:
- v1–v2.0: (85,253) ((13,253) when mirrored)
- v2.1+: (90,216) (and (0,216) when mirrored)
Suggested SD size:
- v1.0–v2.0: Max width: 72px
- v2.1+: 90x200

Beatmap skinnable status is suspected to be a bug.
This element will get stretched to fit screen width.
This element is the normal state of the scrolling bar.
Position varies by skin version:
- v1.0–v2.0: (181,216)
- v2.1+: (0,216)
Suggested SD size:
- v1.0–v2.0: 843x200
- v2.1+: 1024x200

Beatmap skinnable status is suspected to be a bug.
This element will get stretched to fit screen width.
This element is the kiai state of the scrolling bar.
This element overlays
taiko-bar-right
.Position varies by skin version:
- v1.0–v2.0: (181,216)
- v2.1+: (0,216)
Suggested SD size:
- v1.0–v2.0: 843x200
- v2.1+: 1024x200

This image is displayed on the playfield at the start of each measure in the song (unless omitted by a timing point).

Drumroll
The SD image width must be exactly 1px wide.
This element is the track of the roll where the
sliderscorepoint.png
are placed on.Tinting shifts from yellow to red.

This element is the end part of a roll.
Tinting shifts from yellow to red.

This element is also used in osu!.
This are the ticks of the roll.

Hitbursts
Default skin shows 不可 (Bad)
Animation name:
taiko-hit0-{n}.png
.If animated, default effect from static images will not be disabled.

Default skin shows 可 (OK)
Animation name:
taiko-hit100-{n}.png
.If animated, default effect from static images will not be disabled.

Default skin shows 良 (Good)
Animation name:
taiko-hit100k-{n}.png
.If animated, default effect from static images will not be disabled.

Animation name:
taiko-hit300-{n}.png
.If animated, default effect from static images will not be disabled.

Animation name:
taiko-hit300k-{n}.png
.If animated, default effect from static images will not be disabled.

Can be animated, but only the zeroth frame will be used.
Animation name:
taiko-hit300g-{n}.png
This image is only used on the ranking screen (instead of
taiko-hit300k.png
).

Notes
This element is used for finisher/big notes.
- This element is upscaled automatically.
This element is also used on the hit position.
Tinted red for “Don” (235,69,44)
Tinted blue for “Katsu” (68,141,171)
Tinted yellow for drumroll starting circle (252,83,6)

Animation name:
taikobigcircleoverlay-{n}.png
.- 2 frames only (
0
and1
) - animation speed depends on BPM
- animation starts at combo 50
- speeds up at combo 150
- 2 frames only (
This element is upscaled automatically.

Tinted red for “Don” (235,69,44)
Tinted blue for “Katsu” (68,141,171)
Tinted yellow for drumroll starting circle (252,83,6)

Animation name:
taikohitcircleoverlay-{n}.png
.- 2 frames only (
0
and1
) - animation speed depends on BPM
- animation starts at 50 combo
- speeds up at 150 combo
- 2 frames only (

This element is used on the hit position as a border.
This element is also used in osu!.

Beatmap skinnable status is suspected to be a bug.
Tinted yellow.
This element is behind the hit position during kiai time, expands when notes are hit.

Tinted orange-red.
There isn’t a need to skin this element for osu!taiko.
- This element is only visible when using a transparent taiko bar.
This pulsates behind the scrolling bar on the hit position during kiai time.

Pippidon
Animation name:
pippidonclear{n}.png
.- You can only skin up 7 frames (from 0 to 6).
- If animated, it is recommended to animate all 7 frames. (If not, the last frame will persist for the missing frames in the frame order as stated below.)
- The animation frame order is
0 1 2 3 4 5 6 5 6 5 4 3 2 1 0
.
The animation rate is BPM dependent.
This animation only plays once when the player hits a combo milestone; then goes back to the idle or kiai state.

Animation name:
pippidonfail{n}.png
.The animation rate is BPM dependent.
This animation plays when the player misses a note or does not have enough health during a break.
This overrides
pippidonkiai
if the player misses a note during kiai time.

Animation name:
pippidonidle{n}.png
.The animation rate is BPM dependent.
This animation plays when doing nothing (during breaks or waiting for the player to hit the next note)

Animation name:
pippidonkiai{n}.png
.The animation rate is BPM dependent.
This animation plays during kiai time.
pippidonfail.png
overrides this if the player misses a note during kiai time.

Slider Bar
These are like combobursts.
To have multiple combobursts, use:
taiko-flower-group-{n}.png
.- One of the images in the set will be appear when a combo milestone is met.
This image expands and fades in from behind pippidon when it changes to clear state.

Beatmap skinnable status is suspected to be a bug.
This scrolls in a seamless loop, from the right side towards the left.
This element is disabled if the beatmap has a storyboard.
Gets upscaled by 1.4x in-game.

This appears when the player misses a note or if the health bar isn’t filled up to 50% during a break.
Beatmap skinnable status is suspected to be a bug.
This scrolls in a seamless loop, from the right side towards the left.
This element is disabled if the beatmap has a storyboard.
Gets upscaled by 1.4x in-game.

Spinner
This element is an indicator for the spinner.

Beatmap skinnable status is suspected to be a bug.
This element is also used in osu!.
For each hit in the spinner happens, the circle rotates anti-clockwise.

Beatmap skinnable status is suspected to be a bug.
This element is also used in osu!.
This element is the duration indicator of the spinner.
- This shrinks over time.

Mania
Hitbursts
Animation name:
mania-hit0-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Animation name:
mania-hit50-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Animation name:
mania-hit100-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Animation name:
mania-hit200-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Animation name:
mania-hit300-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Animation name:
mania-hit300g-{n}.png
.This element has a fixed looped animation of 60 FPS.
If a custom path is used, the ranking screen will use the file in the root directory instead of the pathed skinning element.

Keys
This is the idle state.
This element gets stretched or compressed to fit the column width.

This is the pressed state.
This element gets stretched or compressed to fit the column width.

This is the idle state.
This element gets stretched or compressed to fit the column width.

This is the pressed state.
This element gets stretched or compressed to fit the column width.

This is the idle state.
This element gets stretched or compressed to fit the column width.

This is the pressed state.
This element gets stretched or compressed to fit the column width.

Notes
Animation name:
mania-note1-{n}.png
.These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note2-{n}.png
.These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-noteS-{n}.png
.These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note1H-{n}.png
.By default, this is also the tail part.
- When used for the tail part, this element is flipped by default for v2.5+.
- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
.
- This behaviour can be disabled by setting
This element is scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Long notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note2H-{n}.png
.By default, this is also the tail part.
- When used for the tail part, this element is flipped by default for v2.5+.
- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
.
- This behaviour can be disabled by setting
This element is scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Long notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-noteSH-{n}.png
.By default, this is also the tail part.
- When used for the tail part, this element is flipped by default for v2.5+.
- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
.
- This behaviour can be disabled by setting
This element is scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Long notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note1L-{n}.png
.The animation starts when the long note is pressed and stops if released.
The
NoteBodyStyle
changes the behaviour of these elements.Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note2L-{n}.png
.The animation starts when the long note is pressed and stops if released.
The
NoteBodyStyle
changes the behaviour of these elements.Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-noteSL-{n}.png
.The animation starts when the long note is pressed and stops if released.
The
NoteBodyStyle
changes the behaviour of these elements.Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note1T-{n}.png
.These elements are the tail part of the hold note.
By default, the head notes are used instead.
By default, these elements are flipped for skin versions
2.5
and up.- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
- This behaviour can be disabled by setting
These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-note2T-{n}.png
.These elements are the tail part of the hold note.
By default, the head notes are used instead.
By default, these elements are flipped for skin versions
2.5
and up.- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
- This behaviour can be disabled by setting
These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Animation name:
mania-noteST-{n}.png
.These elements are the tail part of the hold note.
By default, the head notes are used instead.
By default, these elements are flipped for skin versions
2.5
and up.- This behaviour can be disabled by setting
NoteFlipWhenUpsideDownT
to0
- This behaviour can be disabled by setting
These elements are scaled to fit the individual columns.
- If the columns’ widths differ: the smallest one is scaled correctly and the others are compressed to match its height.
Notes can be manually stretched or compressed via the
WidthForNoteHeightScale
command in the skin.ini file.

Stage
To have multiple combobursts, use:
comboburst-mania-{n}.png
.- One of the images in the set will appear when a combo milestone is met.
osu!mania-specific combobursts
This can be disabled in the options.
Unlike osu! and osu!catch’s combobursts, all edges of this imageset should not be clipped.

This element is shown on the left side of the stage(s).
This element is stretched to fit the stage height (allows for shorter images).

This element is shown on the right side of the stage(s).
This element is stretched to fit the stage height (allows for shorter images).

This element is 0.625x smaller than the stage width.
Animation name:
mania-stage-bottom-{n}.png
.Shown on the bottom (or top, if the stage is upside down) of the stage(s).
This element will not be stretched to fit the stage width!
This element should be skinned for a 480px playfield height.
This element overlays the entire stage, including the notes.

Animation name:
mania-stage-light-{n}.png
.This element is the lighting for the columns when the key is pressed.
This element is placed underneath the notes.
By default, tinted white.
Use
ColourLight
to change this.Positioning is set by the skin.ini
Use
LightPosition
.

This element is the graphical representation of the judgement line.
The judgement line is drawn in the centre of the image.
This element is drawn for the entire stage width, not individual columns.
This element is stretched to fit the stage width (allowing for narrower images).

This element should point downwards.
- This image is automatically flipped horizontally if the stage is upside down.
This element is always seen before the map starts, if there is enough time.

Animation name:
lightingL-{n}.png
.This element is the lighting for the long notes.
This image is flipped horizontally if the stage is upside down.
This element is positioned where the centre of the judgement line crosses the centre of a lane.

Animation name:
lightingN-{n}.png
.This element is the lighting for the single notes (and tail notes).
This image is flipped horizontally if the stage is upside down.
This element is positioned where the centre of the judgement line crosses the centre of a lane.

Sounds
Gameplay Countdown
This replaces the
count{n}s
sounds (if one sound is wanted).This is also the metronome for the Target Practice mod.
Gameplay Game Screens
The sound is played on the ranking screen after clearing a map.
Should be formatted as
.mp3
or.ogg
in beatmaps aiming for rank.
The sound is played when the game is paused.
This sound is looped.
Fades out when the client loses focus.
Gameplay Playfield
Achieving a combo milestone
For multiple sounds, use
comboburst-{n}.wav
.In the skin.ini, if
CustomComboBurstSounds
is set to1
,comboburst-{n}.wav
must be used.
Breaking a combo of 20 or more
Failing a map at any point
Not intended to last longer than the fail animation (about 5 seconds).
Using a long audio track will impact the game client’s performance, as it is loaded each time you play a beatmap, even if you never fail. It isn’t supposed to be bigger than a few kilobytes.
Halfway through a break with high HP remaining
Halfway through a break with low HP remaining
Hitsounds - Drum
These sounds are mapped as
D:C1
on beatmap skins:
These sounds are mapped as
D:C1
on beatmap skins:
These sounds are mapped as
D:C1
on beatmap skins:
These sounds are mapped as
D:C1
on beatmap skins:
These sounds are mapped as
D:C1
on beatmap skins:
These sounds are mapped as
D:C1
on beatmap skins:Looped
These sounds are mapped as
D:C1
on beatmap skins:Looped
Hitsounds - Nightcore
These sounds play on top of the song when the Nightcore mod is enabled. In 4/4 time:
is played on beats 1 and 3
These sounds play on top of the song when the Nightcore mod is enabled. In 4/4 time:
is played on beats 2 and 4
These sounds play on top of the song when the Nightcore mod is enabled. In 4/4 time:
is played on every odd quaver, but only if the slider tick rate of the beatmap is a multiple of 2
These sounds play on top of the song when the Nightcore mod is enabled. In 4/4 time:
is played on the first beat of every 4 measures, unless that barline is omitted by a timing point
Hitsounds - Normal
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:Looped
These sounds are mapped as
N:C1
on beatmap skins:Looped
Hitsounds - Soft
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:Looped
These sounds are mapped as
S:C1
on beatmap skins:Looped
Hitsounds - Spinner
This sound is looped.
This sound could modulate from ~500 hz to 80000 hz.
- To disable this, set
SpinnerFrequencyModulate
to0
.
- To disable this, set
Plays everytime you get 1000 bonus points from spinning.
In the Lazer client, this sound plays instead of
spinnerbonus.wav
if the maximum score has already been achieved on the spinner. It has no effect in osu!stable.
Hitsounds - Taiko Drum
These sounds are mapped as
D:C1
on beatmap skins, and they are only played when mapped and included:
These sounds are mapped as
D:C1
on beatmap skins, and they are only played when mapped and included:
These sounds are mapped as
D:C1
on beatmap skins, and they are only played when mapped and included:
These sounds are mapped as
D:C1
on beatmap skins, and they are only played when mapped and included:
Hitsounds - Taiko Normal
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
These sounds are mapped as
N:C1
on beatmap skins:
Hitsounds - Taiko Soft
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
These sounds are mapped as
S:C1
on beatmap skins:
Interface Clicks
Clicking on the back button
Enabling a checkbox or a mod
Disabling a checkbox or a mod
Closing a chat tab
Clicking to confirm a button or dropdown option, opening or closing chat, switching between chat tabs, or switching groups
Clicking Back to Menu
in the pause menu
Clicking Continue
in the pause menu
Clicking Retry
in the pause menu
Switching into song selection, selecting a beatmap, opening dropdown boxes, opening chat tabs
Selecting a difficulty of a beatmap
Taking a screenshot
Interface Drag
Changing the options via a slider
Disabled as of now
Interface Hover
Hovering above the back button
Hovering above all selectable boxes except beatmaps or main screen buttons
Hovering over Back to Menu
in pause menu
Hovering over Continue
in pause menu
Hovering over Retry
in pause menu
Interface Keys
Sending a message in chat
Deleting text in chat
Changing the text cursor position
Pressing a key for chat, search, edit, etc. (n = 1/2/3/4)
Interface Main Menu
When the cursor hovers over the osu! cookie in the main menu
Closing the osu! client
For
seeya.wav
andwelcome.wav
:osu!supporter is required to modify.
This can be disabled by unchecking
osu! music theme
in the options.
Starting the osu! client
For
seeya.wav
andwelcome.wav
:- osu!supporter is required to modify.
- This can be disabled by unchecking
osu! music theme
in the options.
Interface Metronome
In the beatmap editor, this plays for the small white ticks; however, the beatmap editor will only use the default sounds.
Despite the above, this can be skinned for the offset wizard and the bananas in osu!catch (pitch goes up per caught banana).
Interface Multiplayer
All players are ready
A player joins a room
A player leaves a room
A player revoked his ready signal
A player is ready to start
The match is starting. Also the chat highlight sound
skin.ini
Versions
Original 2007 - 2013 skin
If your
skin.ini
does not specify aVersion
, it will default to this version.- Hit circle numbers are part of hitburst explosions.
- Large expansion of hitlighting (
lighting.png
). - Old styled spinner (
spinner-circle.png
,spinner-background.png
, andspinner-metre.png
). - Segmented countdown image build-up.
- Smaller selection bar images (87px height max).
- Uncoloured play-warningarrow during end of breaks.
- Version exclusive ranking screen buttons (
ranking-replay.png
andranking-retry.png
). - Version exclusive sliderpoints display (
sliderpoint10.png
andsliderpoint30.png
).
UI: positioning changes / osu!: visibility update (reduced clutter).
- High definition skins
- Use the suffix
@2x.png
in the skinning element to let osu! know that the skinning element is higher in quality.
- Use the suffix
- New style spinner (
spinner-middle.png
,spinner-middle2.png
,spinner-top.png
,spinner-bottom.png
, andspinner-glow.png
). - Countdown sequence instead of segmented image.
- Countdowns are now centred.
- Hitcircle numbers are no longer part of hitburst explosions.
- Red coloured play-warningarrow during end of breaks.
- Smaller expansion of
lighting.png
. - Anchor changes of selectionbar images.
- Positioning changes of ranking screen images (generally, it is shifted down).
- High definition skins
osu!taiko positioning changes
taiko-bar-right.png
andtaiko-bar-right-glow.png
directly sits undertaiko-bar-left.png
.- Taiko drum postion changes (allows larger areas).
interface/UI changes
osu!catch changes
fruit-ryuuta.png
will no longer work from this point forward.- New catcher states (and images).
- New osu!catch specific combobursts (
comboburst-fruits.png
).- osu! combobursts will no longer be used for osu!catch.
osu!mania stage scaling adjustments
- Downscale combo counter and hitbursts.
- Column lines are drawn on both sides of the column when columns are spaced.
- Introduction of hold note tails on release (works for all versions).
osu!mania column and upscroll adjustments
- New commands:
KeyFlipWhenUpsideDown
andNoteFlipWhenUpsideDown
NoteBodyStyle
(stretch, cascade from top, cascade from bottom)LightingNWidth
andLightingLWidth
- New commands:
Allow per-type skinning of arrows
- Adds
arrow-generic.png
,arrow-warning.png
andarrow-pause.png
. - Deprecates
play-warningarrow.png
in favor of the above.
- Adds
osu!mania specific combobursts
- Adds
comboburst-mania.png
.- Displays on the right side of the stage.
- Adds
Always the newest version
If your skin folder does not contain a
skin.ini
file, it will default to this version.- Never use this when distributing skins! (if a new skin version releases, a skin with its version set to
latest
might break). - Always uses the latest version the game supports.
- Never use this when distributing skins! (if a new skin version releases, a skin with its version set to
This is not a version, but a special skin folder that is created when the default skin is modified, e.g. by dragging in a custom menu background into the game window (with osu!supporter) or when attempting to modify osu!mania keybinds for the default skin from the options.
A skin in a folder named
User
will always use the latest skin version, regardless of any speification inskin.ini
or otherwise.
[General]
After exporting the skin, the filename is
<Name>.osk
.- In osu!(lazer), the filename is
<Name> (<Author>).osk
.
- In osu!(lazer), the filename is
The skin selector uses folder names, not the names given by this option.
- In osu!(lazer), the skin selector options are in the format
<Name> (<Author>)
, or<Name> [<.osk filename>] (<Author>)
if the name inskin.ini
differs from the name of the.osk
file.
- In osu!(lazer), the skin selector options are in the format
Unknown
In osu!(lazer), after exporting the skin, the filename is
<Name> (<Author>).osk
.- In osu!(lazer), the skin selector options are in the format
<Name> (<Author>)
, or<Name> [<.osk filename>] (<Author>)
if the name inskin.ini
differs from the name of the.osk
file.
- In osu!(lazer), the skin selector options are in the format
(empty)
If the
skin.ini
file is not present,latest
will be used.If the
skin.ini
file is present, but does not use theVersion
command,1.0
will be used (legacy support).
This will set the framerate of most animations.
Exceptions: circleoverlays, sliderball, pippidon, osu!mania notes and lighting
-1
The default sliderball will always get tinted, if enabled in options.
0
0
= top-left corner1
= centred
1
1
1
1
This is not for osu!taiko.
This only affects the combo burst sounds, not the milestones.
(empty)
This is for osu! only.
Old command:
HitCircleOverlayAboveNumer
(with typo) still works for legacy support
1
Should the spinner add black bars during spins?
0
Should the spinnerspin sound pitch up the longer the spinner goes?
1
Should the highest bar of the metre stay visible all the time?
0
[Colours]
This is used if beatmap skin is disabled or uses default colours.
This appears last.
255,192,0
This is used if beatmap skin is disabled or uses default colours.
This appears first.
0,202,0
This is used if beatmap skin is disabled or uses default colours.
This appears second, if defined.
18,124,255
This is used if beatmap skin is disabled or uses default colours.
This appears third, if defined.
242,24,57
This is used if beatmap skin is disabled or uses default colours.
This appears fourth, if defined.
(empty)
This is used if beatmap skin is disabled or uses default colours.
This appears fifth, if defined.
(empty)
This is used if beatmap skin is disabled or uses default colours.
This appears sixth, if defined.
(empty)
This is used if beatmap skin is disabled or uses default colours.
This appears seventh, if defined.
(empty)
0,0,0
2,170,255
This is for osu! only.
Using this will make all slider track colours the same.
use current combo colour
0,0,0
255,255,255
100,100,100
colour of
star2
during breaks
255,182,193
[Fonts]
You can use a custom path
default
Negative integers will add a gap.
-2
score
Negative integers will add a gap.
0
score
Negative integers will add a gap.
0
[CatchTheBeat]
osu! will use a default alpha value.
This is the colour of the catcher itself.
255,0,0
osu! will use a default alpha value.
This is the colour outlining the fruit.
use HyperDash
osu! will use a default alpha value.
This is the colour of the images following the catcher after obtaining the hyperdash fruit.
use HyperDash
[Mania]
This is required per key set
136
19
This is the spacing between the columns
The gap will be transparent.
0
It is suggested to keep this thin if high keycounts or wide keys are used.
30
2
1.2
(empty)
(empty)
If not defined, the height scale of the smallest column width is used
402
The hitbursts will be vertically centred on the stage.
The combo counter will be vertically centred on the stage.
This is the hint for when the keys should be pressed.
unknown
0
= none1
= (left (SP) or outer (DP) lane)2
= (right (SP) or inner (DP) lane)For even keycounts, more than 4.
For DP, the centre between the stages is used for determining positions.
0
0
=Left
1
=Right
2
=Both
(random)You can use the words or values, both are accepted.
Combobursts will be flipped on the right stage half.
1
This value is forced, if defined.
0
= no splitting / forced SPEach keycount higher than 1 can be split (or merged, if count is higher than 9).
The distance between the two stages, if split.
40
0
= shows on both stages at the same time1
= shows when hit on specific stageFor DP, each stage gets shown its own judgement or of both stages
1
should be used depending on note and key designs.
0
Act like DDR/StepMania?
0
Requires skin version
2.5
or higher.This applies for all columns.
1
Requires skin version
2.5
or higher.This applies for the specified column.
Replace
#
with a valid column index (from 0 to 17).
Requires skin version
2.5
or higher.This applies for all columns.
1
Requires skin version
2.5
or higher.This applies for the specified column’s pressed key state.
Requires skin version
2.5
or higher.Column specific (for notes)
Requires skin version
2.5
or higher.Column specific (for head parts)
Requires skin version
2.5
or higher.Column specific (for length parts)
Requires skin version
2.5
or higher.Column specific (for tail parts)
Requires skin version
2.5
or higher.All columns.
1
Requires skin version
2.5
or higher.Column specific (for notes)
For the specific column’s background.
#
starts at1
0,0,0,255
Column specific (StageLight).
#
starts at1
55,255,255
These are the lines that separate the columns.
255,255,255,255
A bar is one full measure.
255,255,255,255
255,255,255
This is the colour of the keybindings check before the game starts
0,0,0
This is the colour of the combo counter during holds.
255,191,51,255
This is the colour of combo counter during a combobreak.
255,0,0
This is for the specific column’s idle key image.
This is for the specific column’s pressed key image.
This is for the specific column’s note image.
This is for the specific column’s hold note head image.
This is for the specific column’s hold note body image.
This is for the specific column’s hold note tail image.
This is the left border.
This is the right border.
This will not be stretched to fit
This is the graphical judgement line.
This is the column lighting.
This appears three barlines before the map starts, if there is enough time.