The short version
You earn XP for almost everything you do on the platform - playing tracks, liking songs, uploading submissions, finishing challenges. XP accumulates over time and pushes your level up. Levels are cosmetic but visible everywhere, so they're a public record of how engaged a producer is.
The level cap is L100. Reaching it is a multi-year grind even for very active producers - calibrate accordingly.
What earns XP
Every action below is awarded once and never refunded. Unliking a track does not take XP back.
| Action | XP | Limit |
|---|---|---|
| Play a song | 1 | Once per song / day per recipient |
| Like a song | 2 | Once per song you like |
| Get a like on your song | 5 | Once per liker |
| Submit a track | 500 | First submission only - replacements no-op |
| Finish a challenge | 2,000 | Once per challenge |
| Clean hardcore finish | +5,000 | On top of finish XP - once per challenge |
Note: a clean hardcore finish is 7,000 XP total - 2,000 for the finish plus 5,000 for keeping every deadline. Broken-hardcore finishes get the standard 2,000.
The level curve
The curve is cubic. The XP needed to reach level n is:
cumulative_xp(n) = floor(6.5 × (n − 1)³)
Which works out to:
| Level | Cumulative XP | Roughly |
|---|---|---|
| 1 | 0 | Sign up |
| 5 | 416 | ~1 submission |
| 10 | 4,738 | ~2 finishes |
| 25 | 89,856 | ~30 finishes |
| 50 | 764,557 | Serious veteran |
| 100 | 6,306,943 | ~40 fully-engaged years |
Each level costs more than the last. The jump from L1 → L2 is trivial; L99 → L100 asks for about 1.9 million XP on its own.
How XP differs from the leaderboard
XP is your personal score - it never goes down. The leaderboard uses a different formula that weights engagement (likes received, finishes) higher than passive activity (plays, likes given). You can have very high XP and a middling leaderboard rank, or vice versa.
Level-up notifications
The first time you cross a level threshold you'll get a notification in the bell. That's the only time it fires - re-crossing the same level via an admin XP adjustment doesn't re-trigger.