osu!(lazer) is the next major update to the game. It is the culmination of several years of work behind the scenes to painstakingly reimplement the game.
While this version brings many new features not found in osu!(stable), there are still some features unique to each client. In the meantime, the players can choose what version they'd like to play, and they will dictate for how long we will continue to support the previous release.
"lazer" is a codename and will eventually be dropped as it becomes the primary release of the game. The rest of this document will refer to osu!(lazer) as "lazer" and osu!(stable) as "stable" for simplicity.
The following is a comprehensive list of the current state of lazer in comparison to stable. Note that this is a moving target — the end goal is to implement all the features that players care about over time.
| Feature | stable | lazer |
|---|---|---|
| Windows 8.0 and lower | ![]() |
![]() |
| macOS / Linux | 1 |
![]() |
| DirectX / Metal | 2 |
![]() |
| Mobile support | ![]() |
![]() |
| Multithreaded architecture | ![]() |
![]() |
| Hardware-accelerated video | ![]() |
![]() |
| UI scaling | ![]() |
![]() |
| Custom rulesets (game modes) | ![]() |
3 |
| De-duped file store | ![]() |
4 |
| Tablet area adjustment | ![]() |
![]() |
| Support for many aspect ratios | ![]() |
![]() |
| Feature | stable | lazer |
|---|---|---|
| Skin support | ![]() |
5 |
| Song select grouping modes | ![]() |
![]() |
| In-game skin / UI layout editing | ![]() |
![]() |
| Dynamic customisable skinning components | ![]() |
![]() |
| Feature | stable | lazer |
|---|---|---|
| Storyboards in main menu | ![]() |
6 |
| Hiding difficulties | ![]() |
![]() |
| First-run setup wizard | ![]() |
![]() |
| Soft deletion | ![]() |
7 |
| Immediate setting changes during gameplay | ![]() |
![]() |
| Feature | stable | lazer |
|---|---|---|
| Accurate performance point display | 8 |
![]() |
| Difficulty adjustment | ![]() |
9 |
| Mod presets | ![]() |
![]() |
| Per-mod settings | ![]() |
![]() |
| New "fun" mods | ![]() |
![]() |
| Combo colour normalisation10 | ![]() |
![]() |
| Hold for HUD | ![]() |
11 |
| Per-beatmap offset calibration | 12 |
13 |
| osu! sliders "snake" while dragging | ![]() |
14 |
| osu! player-friendly "note lock" | ![]() |
15 |
| osu!mania and osu! timing-based note colouring | ![]() |
![]() |
| Replay seeking | ![]() |
![]() |
| Niconico-style scrolling replay comments | ![]() |
![]() |
| Feature | stable | lazer |
|---|---|---|
| Score submission | ![]() |
![]() |
| Beatmap leaderboards | ![]() |
![]() |
| Profile statistics | ![]() |
![]() |
| Medals | 16 |
17 |
| Performance points | ![]() |
![]() |
| Real-time chat | 18 |
![]() |
| Wiki / news / changelog / rankings | ![]() |
19 |
| User profiles | ![]() |
![]() |
| Beatmap listing | 20 |
![]() |
| Unlimited multiplayer room size | 21 |
![]() |
| Multiplayer spectating | ![]() |
![]() |
| Countdown timers | 22 |
23 |
| Queue modes | ![]() |
24 |
| Multiplayer freestyle | ![]() |
25 |
| Multiplayer commands | ![]() |
![]() |
| Tag co-op | ![]() |
![]() |
| Playlists (user-curated leaderboards) | ![]() |
![]() |
| Updating beatmaps with online changes | 26 |
27 |
| Feature | stable | lazer |
|---|---|---|
| osu! editor | ![]() |
![]() |
| osu!taiko editor | ![]() |
![]() |
| osu!catch editor | ![]() |
![]() |
| osu!mania editor | ![]() |
![]() |
| Open difficulty as reference | ![]() |
![]() |
| Per-object SV / volume | ![]() |
![]() |
| Per-segment slider curve types | ![]() |
![]() |
| Slider splitting and merging | ![]() |
![]() |
| Pattern rotation | ![]() |
![]() |
| Pattern resizing | ![]() |
![]() |
| Beatmap submission | ![]() |
![]() |
| Storyboard editor | ![]() |
![]() |
| Cross-compatibility | ![]() |
![]() |
Instead of pausing gameplay while filling up the health bar, health is restored immediately.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
In stable, the accuracy (and judgement) requirements for each grade are as follows:
| Grade | osu! / osu!taiko | osu!catch | osu!mania |
|---|---|---|---|
| SS | 100% | 100% | 100% |
| S | >90% GREATs/300s (≤1% MEHs/50s, no misses) | >98% | >95% |
| A | >80% GREATs/300s (no misses) or >90% GREATs/300s | >94% | >90% |
| B | >70% GREATs/300s (no misses) or >80% GREATs/300s | >90% | >80% |
| C | >60% GREATs/300s | >85% | >70% |
Meanwhile, osu!(lazer) has these accuracy cutoffs now:
| Grade | osu! / osu!taiko | osu!catch | osu!mania |
|---|---|---|---|
| SS | 100% | 100% | all judgements GREAT or PERFECT |
| S | ≥95% (no misses) | ≥98% | ≥95% |
| A | ≥90% | ≥94% | ≥90% |
| B | ≥80% | ≥90% | ≥80% |
| C | ≥70% | ≥85% | ≥70% |
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Scoring in lazer will use a system similar to ScoreV2, with all ScoreV1 scores converted into the new system.
There are two interchangeable display modes for scores: standardised and classic. Standardised scoring limits score to a maximum of 1,000,000 points + bonus and score multipliers (similarly to ScoreV2), while classic scoring is the same as standardised, but scaled quadratically with the amount of hit objects in a beatmap (similar to ScoreV1). These can be selected from the settings, with all places where score is displayed in-game changing accordingly.
There are also some differences in how much score each hit object and each judgement is responsible for relative to each other.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Some storyboards feature elements that react to player input or health.


Recovering from a miss in dense patterns has been made easier.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |

Until lazer, sliders have only required the accuracy of a 50/MEH judgement to reward a perfect score. This was done for historic reasons, but feels bad for a rhythm game. Going forward, sliders will require hit accuracy for their initial click.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
When clicking a slider early, the follow circle will now immediately start in a tracking state even if the cursor leaves the slider ball before the slider starts.

Additionally, when clicking a slider late, any ticks or repeats that have already passed will be judged as completed.

See this YouTube video for a detailed explanation.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
On very fast sliders, you now only need to be tracking somewhere in the last 36 ms, rather than at the point 36 ms before the slider end.
See this YouTube video for a detailed explanation.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Missing a slider head (either by not hitting it or hitting it during its miss window) would previously break combo but not cause a MISS judgement, and a judgement could still be received for the missed slider by completing the rest of it. This allowed players to get scores with low max combo while technically having no misses.
In lazer, not hitting the slider head will give a MISS judgement for the whole slider. After missing a slider head, combo, score, and accuracy can still be gained from slider ticks, repeats, and ends.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
In stable, slider ends would play their hitsounds even if they were missed, as long as any part of the slider was hit. This has been changed such that hitsounds match inputs 1:1.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Instead of a speed cap, spinners now have a score cap determined by the total amount of rotations that can be achieved by spinning the entire spinner at a certain RPM depending on OD.
This means that the maximum score can be obtained early by spinning faster, with no more points awarded afterwards for the rest of the spinner duration.
The RPM required to get the maximum score is as follows:
| OD | RPM |
|---|---|
| 0 | 250 |
| 5 | 380 |
| 10 | 430 |
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |

Some adventurous beatmaps exploit glitches in the stable client that allowed for very weird slider mechanics. These range from zero-length sliders acting as invisible circles, to cross-screen stretched and squished sliders.
More discussion and consideration will be needed for how much of Aspire beatmaps will be compatible going forward. For example, invisible circles might become a properly supported feature in the future.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Some gimmick maps make use of notes that overlap swells.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
In stable, drumrolls could not be hit too quickly or too slowly. This restriction has been lifted, just like in ScoreV2.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
In stable, the Flashlight centre is offset a bit down and to the right, making more hit objects visible.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
This may lead to inaccurate judgements in replays and increased difficulty.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
This may lead to inaccurate judgements in replays.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
This functions similarly to ScoreV2 in stable.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
In stable, hold notes give combo every 100 ms, while in lazer "hold note ticks" gave combo every tick interval.
None of those exist in lazer, meaning hold notes only give combo for the start and the end. However, just like in stable, combos break immediately when letting go of sliders.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
Some beatmaps with SV gimmicks like teleports or stops do not look as intended, but are otherwise playable.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
This used to be a constant ±16 ms regardless of overall difficulty.
| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |

| Breaks backwards compatibility | ![]() |
| Revertable using the Classic mod | ![]() |
| Intentionally changed | ![]() |
| Needs further consideration | ![]() |
So you've decided you want to give lazer a shot? Great!
You can find it for download here. In the near future, you will be able to switch to lazer from stable (from the Release stream setting).
Stable will continue to be maintained as long as users are using it. At very least, it will be maintained for several years.
Currently, beatmaps, skins, scores, replays and collections can be imported into lazer. Of note, settings are not yet imported so you will need to set them up from scratch.
If you have both lazer and stable on the same drive, hard links are used to avoid using extra disk space.
In all other cases, importing beatmaps will use double the disk space.
No.
No.
Yes, lazer always installs alongside stable. Unless you choose to delete one or the other, both will be accessible.
No. This will not be supported.
That said, individual scores and beatmaps can be exported from lazer and manually imported into stable for now.
Yes, but it won't show in "best performance" with "lazer mode" turned off on the website.
It additionally not show in "first place ranks" regardless for now.
Yes.
It uses a scoring system based on it with some adjustments.
You can actually change the Score display mode setting to Classic to get back the explosive style of scoring game-wide! It won't be a perfect match, but will give you the same feel of classic scoring and be applied everywhere you'd expect it to be.
Global score leaderboards will also use classic scoring.
While we will try to preserve as many scores as possible, we offer no guarantee that scores will remain indefinitely. At any point we may choose to wipe a subset of scores in order to preserve game balance, such as when exploits or foul play are discovered.
Yes.
Not at the moment.
Scores of all mod combinations appear on leaderboards.
However, only the following mods will award performance points for now:
Adjust pitch is allowed)Restart on fail is allowed)Restart on fail is allowed)Adjust pitch is allowed)Only the default configuration of customisation options is eligible for performance points, unless otherwise noted above.
Please try applying the "Classic" mod, which will restore much of the old behaviour that you are used to. Also make sure to check the settings offered by the Classic mod, as it will let you further customise your experience and also understand what changes are being applied (as they are all listed there).
Please run the setup wizard at the top of settings and go through the settings on the Behaviour screen. A lot of the common settings which have defaults changed are listed here. There's also a single button you can press to apply the old behaviours as a starting point for your lazer journey.
We'll do our best to bring back as much of this as we can without blocking new functionality. This will come later on.
We will likely bring back support for this in the future due to popular demand.
Above a certain threshold there is no reason to run at higher frame rates. Lazer employs various new technologies to ensure the lowest latency is achievable without requiring high frame rates. This will continue to improve going forward as we still have a few improvements left to implement.
Lazer polls for input at 1,000 Hz regardless of FPS limiter, which is why the maximum limiter setting will also limit to 1,000 FPS.
If you are curious about how this affects input latency and test your own perception, please run the built-in "latency certifier" at the bottom of settings.
You can also read this technical document explaining the path we are taking along with rationale behind it.
The operating system will still poll at the higher rate, although benefits are proven to be negligible. Polling at such high rates can have unforeseen overheads, and we recommend limiting devices to 1,000 Hz for system stability.
While on most modern hardware we see lazer outperform stable, there are always edge cases when each user has a different hardware configuration. In our short-term roadmap, we are looking to support DirectX (aka "compatibility mode" on stable) and Vulkan, which both have better driver support than OpenGL across all hardware. Once this is implemented, performance on hardware like Intel integrated chipsets will improve greatly.
There's a very high chance we are already aware of this and tracking it for future implementation! Please search the issue tracker and discussions page. If you can't find any matching threads, feel free to open a discussion.
Do note that we are already tracking over 1,000 issues of varying priorities, and it may take us some time to fix issues that only affect a small number of users.
What is sharper than cutting-edge?
While osu! may seem like a simple game, there are hundreds on hundreds of features and systems that users have come to rely on. Depending on who you ask, lazer may have been in a fully playable state for years now, or it may be missing countless features.
Another area which has taken a huge amount of effort is historical preservation — making sure that beatmaps behave exactly as they should, including edge cases that weren't originally planned for. osu! is a vibrant ecosystem and users have taken liberty to extend the game far beyond its planned extents, and we are trying our best to embrace and support this going forward.
Finally, unlike the last iteration, we are putting in the time and diligence to ensure the code base will serve us well into the future. We have done the groundwork to allow new features to come online at blazing speed going forward. This will include new UI components, new ways to skin the game, new multiplayer systems and let's not forget the ability to load and play all your existing beatmaps on completely new game modes (a.k.a. rulesets)!
We have a huge backlog of user-requested features and improvements that we will continue to push out at the speed of light. For those that have joined us recently and haven't experienced the momentum of osu! development, prepare to be in for a surprise.
There is no songs folder in lazer! This allows us to do cool things like not require pressing F5 at song select to refresh beatmaps (because beatmaps are always in a good state) and reduce the disk space used by beatmaps by 20–40%. You can read more about the way lazer stores files.
If you need to make changes to a beatmap, please use the editor. Going forward we will introduce a mode in the editor which makes a beatmap's folder temporarily accessible for external editing. This will allow you to use external tools on a beatmap during the creation process.
Some filters in the beatmap listing are still supporter-only.
There are also some additional benefits already:
We do intend to look into new benefits in the future, but our focus is currently on feature parity with stable so please use your supporter tag purchase as a way to... support the game's development!
Yes.
The same way you usually would.
You're likely thinking of another game.
Using Wine. ↑
DirectX via compatibility mode. ↑
Manually via .dll files. ↑
Gameplay only. ↑
osu!supporter-only. ↑
Restore deleted beatmaps and other data from the settings. Deletions only become permanent upon restart. ↑
Via online retrieval. ↑
Change CS/AR/OD/HP of a beatmap directly from song select via the Difficulty Adjust mod. ↑
This brings beatmap custom combo colours to the same brightness level. ↑
Hold Ctrl to view the HUD momentarily while it's hidden. ↑
Adjustable manually via key bindings. ↑
When retrying a beatmap, you can calibrate the offset based on your last play. ↑
Can be disabled. ↑
Still exists, but should not interfere. ↑
Certain medals are lazer-exclusive. ↑
Some Hush-Hush medals are not yet obtainable. ↑
Messages can take up to 15 seconds to arrive. ↑
Native access to most online content. ↑
Via osu!direct, osu!supporter-only. ↑
16 players max. ↑
Set a countdown using a command, no automatic start. ↑
Set a countdown from the game UI to automatically start the match. ↑
Turn on to allow anyone in a lobby to queue new beatmaps, a.k.a. "host rotate". ↑
Turn on in song select to allow players to select any difficulty of the current beatmap. ↑
Map only. ↑
All files. ↑