osuskins.org / make a skin
Making an osu! skin
A skin is a folder of PNGs and WAVs plus a skin.ini, zipped
and renamed to .osk. There is no editor to install and no format to learn
beyond file names — osu! looks for elements by name, and any it cannot find it takes from
the default skin.
What a real skin actually contains
osu! recognises around 800 element names. Almost nobody ships all of them. We opened 561 archives and counted what is really in there — the top of that table is the shortlist for a first skin:
| Element | Ships it |
|---|---|
cursor | 100% |
hit judgements (hit300, hit100, …) | 99.8% |
sliderb | 99.8% |
hitcircle + hitcircleoverlay | 99.6% / 98.7% |
cursortrail | 99.6% |
approachcircle | 98%+ |
default-0…9 (combo font) | 96% |
reversearrow, sliderfollowcircle | 98% |
The two rules that catch everyone
@2x means double. A file named hitcircle@2x.png is
drawn at 256px and displayed at 128. Ship the @2x version — 93% of inspected archives
do — or your skin goes soft on any modern display.
osu! tints some elements and not others.
hitcircle.png and approachcircle.png are multiplied by the
combo colour, so draw them near-white and let the colour come from
skin.ini. hitcircleoverlay.png and the combo digits are never
tinted, so whatever colour you draw them is the colour they stay. Getting this backwards
is why a first skin comes out grey.
Three skins to take apart
We generate our own skins from primitives — every sprite drawn in code, every hitsound synthesised — partly to prove the element list above is complete enough to build from. It was not, and the gaps are documented. They are yours to open, copy and edit: no attribution needed, nothing in them belongs to anyone else.
Once you have something, export it with Options → Skin →
Export as .osk and send it to us — we will index it
with your name on it.