Skip to content

Mirrors

github-actions[bot] edited this page Aug 3, 2026 · 5 revisions

Mirrors

Downloads rotate across every enabled mirror.

Built-in mirrors

Mirror Host Default Notes
osu!direct osu.direct on
Nerinyan api.nerinyan.moe on
Sayobot dl.sayobot.cn on
Nekoha mirror.nekoha.moe on Serves the size estimates for find results
Beatconnect beatconnect.io on
osu!dl osudl.org on Covers ranked / approved / loved sets only; rotation backfills the rest
catboy.best catboy.best on
Hinamizawa mirror.hinamizawa.ai off Races the other mirrors server-side, enable if you're hitting rate limits
nzbasic CDN direct.nzbasic.com off A solo developer's free instance; coverage is what its backend has cached
osu! official osu.ppy.sh off Needs osu! login (below)

Managing mirrors

The config tab is the mirror editor: toggle each built-in on or off, reorder the try-order with ⇧+↑/↓, or press r to re-probe latency (shown per mirror next to each row). The get maps tab shows the enabled count with the latency range.

Rate-limit handling

  • Requests to each mirror are spaced out; the spacing widens when a mirror pushes back, then decays once it calms down.
  • A throttled mirror sits out its cooldown while the rest keep downloading. Per-map countdowns show in the open run.
  • A throttled map goes back in the queue rather than getting dropped; one that stays throttled past the auto-defer delay (60s of actual waiting by default, download.rate_limit_skip_secs) re-queues on its own.
  • In an open run, s defers the currently stuck maps yourself; S drops them for the rest of the run.

Custom mirrors

Add your own on the config tab: each URL template must contain the {id} placeholder (for example https://example.com/d/{id}). A new empty row appears as you type; clearing a row removes it. Custom mirrors are tried after the built-ins, in list order. The matching config key is mirror.urls (Configuration).

Logging in with your osu! account

Logging in is optional. It enables the osu! official mirror, plus the supporter-only find filters when the account carries osu!supporter (Finding maps). The account row on the config tab opens a login panel docked on the right, where you enter your osu! username and password (masked). It closes on esc or a tab switch.

Once logged in the account row reads logged in, with · supporter appended when the account has it. The status is re-checked in the background each launch, so gaining or losing supporter shows up without logging out.

The login goes through osu!lazer's first-party client, the only client allowed to request beatmap-download privilege. If osu! needs to verify a new device, the panel prompts for the emailed code. Your password is sent only to osu.ppy.sh and never stored; only the resulting token lives in a local auth.json.

Warning

osu!lazer's first-party login is an unofficial grey area. The osu! official mirror is rate-limited (roughly 10 to 20 downloads per hour) and stays off by default; keep it as a last resort. Requests to osu! are throttled automatically (about one per second, shared across all download threads), but the hourly download cap still applies and shows up as a temporary rate-limit when reached.

Clone this wiki locally