Everything here is checked against the wiki, and some of it is still going to be wrong. Tell me what and I will fix it — a number that disagrees with the game, a skill that does not exist any more, an item in the wrong place.
Sent: the three boxes above, and the time the server received it. Nothing else — no account, no page history, no browser fingerprint. Nobody but the site owner can read these.
Searches inside the text, not only names: item descriptions and unlocks, the interactable tables with their costs, and the run guides. Item results also say which build cards want it.
Nothing here has been read off your game yet: every switch below starts on, because most groups have most of these. Turn off the ones nobody in your group has — by hand, or by importing your save — and they disappear from every card, every tier list and every build you compose, because an item that cannot drop is not advice. The switches are the 48 items behind a challenge; every other unlock in the game is listed under them with what it asks of you.
AnyUserHasUnlockable, and the run's own check returns
unlockablesUnlockedByAnyUser. So only switch something off when
nobody in the group has it.Read it off your save file
Steam keeps your unlocks in one XML file on this machine. Point the page at it and the switches below set themselves. The file is read here in the browser and never uploaded — only the unlock flags are kept, in this browser's own storage.
C:\Program Files (x86)\Steam\userdata\<your id>\632360\remote\UserProfiles
632360 is Risk of Rain 2's Steam app id. The folder
holds one .xml named with a long random id, plus
config.cfg; pick the .xml. The page reads the
unlock list out of it and ignores the rest of the file, including your
name. Steam keeps userdata in a different place on every
system and the tail is the same on all of them —
userdata/ under
C:\Program Files (x86)\Steam on Windows,
~/Library/Application Support/Steam on macOS,
~/.steam/steam on Linux, and
~/.local/share/Steam on a Steam Deck, which you reach from
Desktop Mode. The game ships for Windows only, so on Linux and on the
Deck it runs under Proton; the profile normally still lands in Steam's
own userdata folder rather than inside the Proton prefix. If it is not
there, search for a folder named UserProfiles — the
picker does not care where you found the file.
Chasing one unlock this run?
Pick what you are going for. When the run ends, say whether you got it — a web page cannot watch a running game, so this is the one honest button. A miss changes nothing except the attempt count.
Build references for Risk of Rain 2, verified against the game wiki rather than copied from tier lists. Pick a survivor and an intent; the item order adapts to your difficulty, run length, party size and artifacts.
The game is running. Set these now and RoRain is ready when you press play.
Not a simulation — your real inventory. RoRainBridge, a small BepInEx
plugin, serves your live run over 127.0.0.1 while the game is open, and
serves this same page beside it. Items, level, stage, difficulty and run totals land
once a second, and every number recomputes against what you are actually holding.
Loopback only: the plugin writes no files and contacts no network.
This hosted copy cannot reach it — a public page is not allowed to open a
connection to your own machine — so the live run runs from the page the plugin
serves, at http://127.0.0.1:11420/.
Each card is a distinct playstyle, not a difficulty setting. Two builds for the same survivor can want opposite items.
Minutes of survival bought by five more copies — a rate, not a target. One copy rarely moves a clock sampled in whole minutes.
Every number here is computed from the wiki's own formulas, not estimated. Where the wiki publishes no figure, the lab says so instead of filling the gap.
Looking for the game…
Three items only pay out against a target in a particular state — Crowbar against enemies still above 90% health, Focus Crystal within 13m, Armor-Piercing Rounds against bosses. If you add any of them, a switch appears here so you can ask "what is my damage while that is true". Those three start off, so the headline numbers are what you get in an average fight. Delicate Watch is the exception: it needs no target and is live from pickup until it breaks, so it starts on — flip it off to see what you are worth after it goes.
Combine as many as you like — a long run can be glass cannon, mobile and sustained at once. Where two presets want the same item, the larger stack wins. Anything you change by hand stays put.
Type a name and press Save to keep the survivor, level, skills, conditional switches, equipment, difficulty, any proc rates you typed and which presets are lit — along with every item you added or removed by hand. The projection controls beside the chart — party size, enemy and pace — are not part of a saved build. Click a saved name to load it back; saving under a name you have used before overwrites that build instead of adding a second copy. Loading rebuilds the item list from those presets and hand edits rather than replaying a stored list, so a loaded build is always one the sheet can recompute from scratch. These live in this browser only, so they survive a reload but do not leave this device.
The four stacking formulas say how much an item gives. They say nothing about how often it triggers — that is the proc coefficient, the trigger chance and the internal cooldown, and it is the half that decides whether an on-hit item earns its slot.
Listed per item, not totalled. The game publishes two different things under the name "heal" — a multiplier on healing received (Rejuvenation Rack, Corpsebloom) and an amount healed (Medkit, Leeching Seed). Adding them together would be meaningless.
What your items do with the procs your skills throw. An item that triggers 10% of the time is worth very different amounts on a fast primary and a long-cooldown special.
Add everyone who's playing. Names are just labels — pick each person's survivor and build, then share the link.
What the squad brings as a group. These measure contribution to the team, not personal survivability — a build that heals only itself scores zero here.
Click any player to open their build sheet.
A lobby that updates for everyone at once needs somewhere to keep the shared state. This build was packaged without a database URL, so lobbies are off. Squad link works with no setup at all — use that if you don't want to bother.
{
"rules": {
"rorain": { "lobbies": { ".read": true, ".write": true } },
"$other": { ".read": false, ".write": false }
}
}assets/firebase_config.json:
{ "databaseURL": "https://YOUR-PROJECT-default-rtdb.firebaseio.com" }py -3 scripts/build_app.py out/rorain.htmlOne person opens a lobby and sends the code or the link. Everyone else joins and picks their own survivor. Settings are shared — anyone can change them and everyone sees it.
What joining a lobby shares. The name you type, the survivor and card you pick, which DLC you own, and a short code for which gated items you have not unlocked — that last one is how the group's item pool is worked out, since an item nobody has unlocked cannot drop. It does not share your save file, an account, or anything else about your machine. Anyone who has the lobby code can read what is in it, so the code is the only thing keeping it private.
Anyone with the code is in the same room.
Your row is highlighted — pick your own survivor and build. Everyone else's row updates as they choose. Two people calling the same role get flagged; that's a warning, not a rule.
Recomputed every time somebody changes their pick. These measure contribution to the team — a build that heals only itself scores zero here.
Cards open with the lobby's difficulty, run length and artifacts already applied.
Item picks follow from this. If a stat reads dead here, items that grant it are dead too.
Items that read good for this build and actively hurt it.
Every survivor, whether or not a pre-made card exists for them.
Type it however you'd say it to a friend — "glass cannon crit", "tanky bruiser", "proc chain on-hit", "boss killer", "kiting healer". Or start from a preset below and adjust.
Click once to want it, again to want it a lot, again to avoid it.
Only skills verified for this survivor. Different picks genuinely change which items are worth taking.
Community builds for this survivor. These are intents, not verified cards — they rebuild against current data every time they open.
Written for someone who has never launched the game, and arranged so an experienced player can jump straight to the bit they need. Everything here is checked against the game wiki.
RoRain is an unofficial fan project. It is not affiliated with, endorsed by, or sponsored by Gearbox Publishing or Hopoo Games. Risk of Rain 2 and all item and character art belong to their respective owners and appear here only so you can recognise what you just picked up. Item data checked against riskofrain2.wiki.gg. Free, no accounts, no tracking.