Beatmap Discussion Tools for osu! — browser extension

Privacy policy

Last updated 9 October 2026

This policy covers the Beatmap Discussion Tools for osu!browser extension (“the extension”). The extension is a free, non-commercial tool made by Nostril, a member of the osu!taiko mapping community. It is not affiliated with, endorsed by or sponsored by ppy Pty Ltd or by s-ul.eu. “osu!” is a trademark of ppy Pty Ltd.

In short

Where the extension runs

Its scripts run only on osu! beatmap discussion pages (https://osu.ppy.sh/beatmapsets/…) and, for the timestamp hand-off, on n.ot.e (https://note.nostril.io). It does not read or change any other website.

What it stores on your device

The extension keeps the following in its own extension storage, which your browser deletes when you uninstall it:

The popup’s Reset draft sync data button deletes the draft-bridge state; its Reset button clears the settings.

What it reads on the osu! page

All of this is processed on your device:

Uploads to s-ul.eu

When you drag, drop or paste a file into a discussion box while the uploader is on, the extension sends that file, together with your s-ul.eu API key, to s-ul.eu’s upload API. The file is stored in your s-ul.eu account and s-ul.eu returns a public link, which the extension inserts into your post. What s-ul.eu does with uploaded files is governed by s-ul.eu’s own terms and privacy policy. The extension uploads only what you drop or paste yourself, and only to s-ul.eu.

The draft bridge

The bridge is off until you save a pairing code. When it is on, each osu! discussion tab joins a private drafts roomshared by the devices you paired: your n.ot.e sessions and your other browsers running this extension. The room is named after your osu! user id plus a hash of your pairing code, and the code is the room’s password. Anyone who has the code can join your room, so treat it as a secret: the popup masks it, and a pairing link contains it.

What travels through the room:

How it travels: paired devices connect to each other directly over WebRTC, which is encrypted end to end between them. To find each other they use the signaling server n.ot.e uses (wss://y-webrtc-signaling.fly.dev), which sees your IP address, the room name (which includes your osu! user id) and signaling messages encrypted with your pairing code; it never receives your drafts. WebRTC also contacts public STUN servers to learn your public IP address. No server stores anything from the room; the copies live only on the paired devices.

Hand-off to n.ot.e

Open in n.ot.e opens note.nostril.io with the beatmapset, difficulty and timestamp in the address. If a n.ot.e tab is already open, the extension asks that tab to seek there instead of opening a new one, and hovering a posted timestamp tells open n.ot.e tabs which timestamp you are hovering. Nothing else is exchanged with n.ot.e; what n.ot.e itself stores is described by n.ot.e, not by this policy.

What the extension does not do

Permissions, explained

Changes

Changes to this policy are posted on this page, with the date above updated. A change to what the extension sends anywhere is also noted in that version’s store listing.

Contact

Nostril, on osu!: osu.ppy.sh/users/11479122.