Skip to content

Pack keys

Last updated September 22, 2026

A pack key is a short piece of text that holds a whole mappool: the pack name and which beatmap goes in which slot. Paste it into packs and you get the same pool back, anywhere, without an account. Keys start with pk1..

Sharing a pack

  • On the builder, use Copy key or Copy share link.
  • A share link looks like https://packs.haruhime.moe/k#pk1.…. Everything after /k# is the key. Browsers never send that part to our server.
  • To open a key, paste it (or a message containing it) into the box on the home page.

A key holds IDs only. Titles, difficulty names, and stats are looked up again when the key is opened, so a key never goes stale, but a map that was updated on osu! shows its current version.

What's inside

A key is pk1. followed by base64url text (letters, digits, - and _, no padding). Decoded, the bytes are:

  1. Version: one byte, 1.
  2. Name length: a varint (unsigned LEB128), then the name as UTF-8. Names are 1 to 64 characters.
  3. Slot count: a varint, at most 64.
  4. Each slot: one byte for the mod bucket, then the slot number as a varint, then the beatmap (difficulty) ID as a varint. Bucket bytes are 0 to 5 for NM, HD, HR, DT, FM, TB, in that order.
  5. Checksum: two bytes, CRC-16/CCITT-FALSE of everything before it, high byte first.

Slots are always written in bucket order and then slot number, so the same pool always makes the same key. A key that was cut off or mistyped fails the checksum, and packs tells you it's damaged instead of opening the wrong pool.