Running official osu!lazer alongside DeltaLazer, Ez2Lazer, g0v0, and classic osu!stable splits your beatmaps and settings across separate folders. Importing a 30 GB song folder into five clients eats 150 GB of disk space. Copying client.realm by hand strips custom fork columns, mixes private server IDs with Bancho IDs, or triggers a database reset when schema versions differ.
LZSync connects all your installed osu! clients to a single local hub. Download a beatmap, build a collection, or change your key bindings in one client, click Sync, and play in every other client with zero duplicate files on disk.
- Five clients, one disk footprint. LZSync stores every audio track, background image,
.osuchart, skin element, and.osrreplay once in a SHA-256 content-addressed store. Each client holds native hardlinks or symlinks to that store, so five clients use the disk space of one. - Sync across lazer forks and osu!stable. Move beatmap sets, collections, and skins both ways between Realm-based lazer clients and classic osu!stable
Songs/,Skins/, andcollection.dbfolders in the same run. - Eight data categories. Sync beatmap sets with all difficulties, collections, user skins, local scores with replays, key bindings, ruleset settings, mod presets, and shared
game.inioptions. Toggle each category on or off on the home screen. - Three-way change tracking. LZSync remembers what each client had at the end of the last sync. If you add maps to a collection or rebind a key in one client, that update propagates to the others. If two clients change the same item in different ways, LZSync pauses that item and lets you choose which client wins or keep both versions separate.
- Deletions stay deleted. Removing a beatmap inside a client records a per-client deletion marker. Future syncs will not bring deleted beatmaps back unless you restore them from the Deleted view.
- Client-aware translation. LZSync adapts records for each target client before writing. It keeps Ez2Lazer's 10 custom columns intact, isolates
g0v0.topprivate server IDs from Bancho, warns before DeltaLazer gimmick charts go to editors that drop gimmick sections, and filters out unsupported rulesets or mods. - Built-in database protection. LZSync never alters a client's
client.realmschema version and never writes toosu!.db. Before every write, it verifies that the game is closed, saves a timestamped database backup that you can restore in two clicks, and checks the database structure before committing.
| Client | Synced categories | Storage format | Client-specific handling |
|---|---|---|---|
| osu!lazer | All 8 categories | client.realm v52 |
Official Bancho baseline |
| DeltaLazer | All 8 categories | client.realm v51 |
Detects gimmick chart sections and filters editor key ranges |
| Ez2Lazer | All 8 categories | client_52011.realm v52011 |
Preserves 10 custom columns and skips BMS or external sets on export |
| g0v0 | All 8 categories | client.realm v52 |
Isolates g0v0.top online IDs and skips market rulesets |
| osu!stable | Beatmap sets, collections, skins | osu!.db, collection.db, Songs/, Skins/ |
Links song folders and updates collection.db via temp-file rename without touching osu!.db |
- Connect your clients once. Launch LZSync to scan default data folders on Windows, macOS, and Linux, or drag any client folder into the window. Each client connects to the hub through a Pull track on top and a Write track on the bottom.
- Click Sync. LZSync reads changes from your enabled clients, displays exact item counts on each client's write track, and switches the main button to Write N items. Click a second time to write.
- Decide only when needed. Unambiguous additions and edits flow on their own. When two clients edit the same setting or a beatmap has a newer version, a card appears under Pending so you can pick a client's version, update to the new beatmap version, or click Keep difference.
- Browse your unified library. Open Beatmap Sets, Collections, Skins, or Scores in the sidebar to search across every client at once. Colored dots on each row show which clients have the item, which will receive it on the next sync, and where conflicts exist.
Sync console. Every connected client on one screen: each client pulls from and writes to a single local hub, with per-category switches and one Sync button.
Settings. Language, baseline fork, storage paths, link mode, and the game process guard that holds writes while a client is still running.
Get the latest prebuilt release for your platform on the GitHub Releases page:
| Platform | Packages | Notes |
|---|---|---|
| Windows x64 | LZSync Setup *.exe, portable .zip |
Includes required runtime libraries |
| macOS Universal | .dmg for Apple Silicon and Intel |
Ad-hoc signed; right-click and choose Open on first launch |
| Linux x86_64 | .deb, .rpm, .AppImage, .tar.gz + install.sh |
Requires GTK 3 and WebKitGTK 4.1 or 4.0 |
LZSync includes full English and Simplified Chinese interfaces. It matches your system language on first launch, and you can switch languages at any time in Settings.
Architecture details, sync decision rules, database safety invariants, and source build instructions live in separate docs:

