Skip to content
CheckMyPull

Verify your Ripster.gg roll

Verified: reproduces real results

Ripster.gg returns a roll from 0 to 100, not a ticket number. Its published example at nonce 7 gives 52.5587, and the verifier above reproduces it.

Live verifier
0 network requests

Step 1Where did you play?

Using Ripster box / upgrade: HMAC-SHA256 over clientSeed:noncedetails

HMAC-SHA256 keyed with the server seed over clientSeed:nonce. The first 8 hex characters become a 32-bit integer, divided by 2^32 and multiplied by 100 for a roll in [0, 100). Items are sorted by item ID and selected by cumulative probability: the first item whose cumulative probability is at least the roll wins.

Where to find your numbers on Ripster.gg:

  1. Before rolling, copy the Server Seed Hash from the Provably Fair modal (also recorded per roll in Account History).
  2. After the roll, open the Provably Fair modal to copy the Server Seed, Client Seed and Nonce.
  3. Change your Client Seed anytime in Account Settings; doing so reveals the current Server Seed so all past rolls become verifiable.

Source: Ripster.gg's own fairness page

Step 2Paste your numbers

Runs entirely on your device via your browser's built-in cryptography. Don't take our word for it: open DevTools → Network, click the button, and watch: zero requests.

Where to find your seeds on Ripster.gg

  1. 1

    Before rolling, copy the Server Seed Hash from the Provably Fair modal (also recorded per roll in Account History).

  2. 2

    After the roll, open the Provably Fair modal to copy the Server Seed, Client Seed and Nonce.

  3. 3

    Change your Client Seed anytime in Account Settings; doing so reveals the current Server Seed so all past rolls become verifiable.

Does Ripster.gg use ticket numbers?

No. Ripster.gg's engine returns a percentage, a float from 0 up to but never reaching 100, and the verifier above shows it to four decimal places. That is worth pinning down before anything else, because a reader arriving from PackDraw or Clash.gg expects a whole number in the hundreds of thousands and will assume something has gone wrong when a decimal comes back.

Both designs do the same job. A ticket engine cuts the range into a fixed block per item; a percentage engine cuts it into a percentage band per item. The difference is presentational until you try to check a result, at which point it decides what a correct answer looks like.

PlatformWhat the engine returnsHow the item is chosen
Ripster.ggRoll 0 to 100, four decimalsItems sorted by item ID, cumulative probability walked
PackDrawTicket 1 to 1,000,000Each item holds a fixed block of tickets
Clash.gg and RustClashTicket 0 to 99,999A contiguous block sized to the stated chance
Skin.clubRoll 1 to 100,000A published range per item
JemLitRoll 0 to 100, four decimalsEach item publishes a win range
HypeDrop and CSGORollRoll from the first 13 hex charactersOutcome count set per game

JemLit lands on the same 0 to 100 scale by a different route, converting its entire 64-character digest rather than a short slice, so a matching scale does not mean a matching formula.

How does the box formula work?

Ripster keys an HMAC-SHA256 with the secret server seed and passes your client seed and nonce as the message, joined by a colon. It then reads the first 8 hex characters, which is 32 bits, and scales them onto the percentage range.

message = clientSeed + ":" + nonce
hmacHex = HMAC_SHA256(key = serverSeed, message)
subHash = first 8 hex characters of hmacHex
roll    = (parseInt(subHash, 16) / 4294967296) * 100

The worked example on Ripster's own fairness page runs all the way through. Server seed testserverseed123, client seed testclientseed456 and nonce 7 build the message testclientseed456:7, which hashes to 868cded7466e671542c8486e57576efb78eea7f4514558b35d1466fa4d61ca91. The first 8 characters, 868cded7, are 2,257,379,031 in decimal, and dividing by 2^32 then multiplying by 100 gives 52.5587.

Paste those three values into the verifier above and the same number comes back. That is the cheapest way to confirm the tool and Ripster agree before you check a result you actually care about.

The commitment is separate and simpler: the hash shown before you play is a plain SHA-256 of the server seed. No salt, no keying, none of the constructions that trip people up elsewhere.

Why does the roll not name your item?

Because a roll of 52.5587 is only half the calculation. Ripster does not publish a fixed ticket block per item the way PackDraw does. It builds the mapping at open time from the box's own item list, and the order of that list changes the answer.

Items are sorted by ID, not by rarity or price

The published rule is that a box's items are sorted by item ID, alphabetically ascending, before anything else happens. Sorting the same items by price, by listed chance, or by the order they appear on the box page produces a different sequence and therefore a different item for the same roll.

The walk stops at the first item that covers the roll

With the list sorted, the probabilities are normalised to sum to exactly 100 and then accumulated. The first item whose running total reaches or passes the roll is the result. A roll of 52.5587 goes to whichever item carries the range that 52.5587 falls inside once the list is walked in ID order.

So reproducing the number is one step and reproducing the item is a second one, and the second needs that box's item table. The roll is what the verifier above settles; the item mapping needs the odds Ripster displays on the box itself.

How are upgrades checked?

Upgrades run the same roll through the same formula, then compare it against a success threshold rather than an item table. The published rule is:

successChance = (inputValue / targetPrice) * 100 * 0.90
success       = roll <= successChance

The 0.90 is part of the published formula, not a rounding artifact, and an upgrade will not reproduce without it. Everything before the comparison is identical to a box open, so a roll that checks out above is already most of the work.

Why do battles need different inputs?

Because a battle round is not keyed on your play count. Several players open in the same round, so a shared server seed with a per-player nonce has to come from somewhere other than the usual counter. Ripster derives it from the seating instead.

Box open and upgradeBattle round
MessageclientSeed:noncebattle:v2|battleId|roundIndex|seatIndex|nonce|clientSeed
NonceYour play count, up one per openDerived: roundIndex × maxPlayers + seatIndex
HashHMAC-SHA256 keyed with the server seedHMAC-SHA256 keyed with the server seed
Status hereConfirmed at roll 52.5587Implemented, not yet confirmed

The battle jackpot is different again. It uses a plain SHA-256, not an HMAC, over the server seed joined to jackpot:winner|, the battle ID, and every player's client seed joined with colons, with players sorted by seat index and then by user ID. The first 8 hex characters scale onto 0 to 100 as usual, and the winner is the player whose range covers it, with ranges sized in proportion to each player's total prize value.

What is actually confirmed?

The box and upgrade engine, cross-checked on 8 July 2026 against Ripster's own in-browser verifier at roll 52.5587, with an independent implementation of the published algorithm producing the same value. That is a cross-check rather than a captured operator roll, so the outstanding item is a real unboxing with its seeds and the item received, which would close the mapping end to end.

One nonce detail stays open. Ripster shows the nonce in its provably fair modal and it increments every roll, but whether the counter starts at 0 or at 1 is not stated on the fairness page, and we have not confirmed it. Use the nonce the modal shows you rather than counting your own opens.

Worth knowing about the source: Ripster's fairness page publishes the full scheme with runnable Node.js and Python code, and it is not indexed by search engines. That is why no third-party write-up of this algorithm exists, and why the values on this page come from the page itself rather than from anyone's summary of it.

The bottom line

Ripster.gg publishes enough to reproduce a box open completely: the hash function, the exact message string with its colon separator, the slice length, the conversion, and the item-selection rule. Three of those are the minimum a check needs, and most platforms stop short of all three. The worked example above reproduces exactly, so the formula on the fairness page is the formula the site runs.

Two limits stand. Battle rounds are implemented but unconfirmed, and the nonce start value is not published. Neither affects a standard box open, which is what the verifier above is set to by default. Recompute your roll, compare it against the item you received and the hash you saved before playing, and remember that a match settles that specific result and nothing wider. What that boundary covers is set out in what provably fair does not prove.

What we can check on Ripster.gg

Per-game status. "Verified" means our implementation reproduced a real, documented result for that game. We never list a game on trust.

GameAlgorithmStatus
Box open / upgradeHMAC-SHA256Verified

Cross-checked against Ripster's own verifier, 2026-07-08 (roll 52.5587 vector).

Battle round (RNG v2)HMAC-SHA256Awaiting confirmation

Published formula implemented; no real battle vector yet.

Common questions

Is Ripster.gg provably fair?

Yes for box opens and upgrades, which run HMAC-SHA256 keyed with the server seed and are confirmed against Ripster's own in-browser verifier at roll 52.5587. Battle rounds are built from the published formula but no real battle result has been reproduced against them yet.

How do I verify a Ripster.gg box opening?

Take the revealed server seed, your client seed and the nonce from the provably fair modal, then paste all three into the verifier above. It rebuilds the message as clientSeed:nonce, runs the HMAC on your own device, and returns your roll to four decimal places.

Why is my Ripster.gg roll a decimal instead of a ticket number?

Because Ripster scales its outcome onto a percentage rather than a ticket space. The first 8 hex characters of the digest become a 32-bit integer, which is divided by 2^32 and multiplied by 100, giving a roll from 0 up to but never reaching 100.

Why does my Ripster.gg roll not match the item I received?

The roll alone does not name the item. Ripster sorts that box's items by item ID, normalises their probabilities to sum to 100, then walks the running total and awards the first item that reaches your roll. Sorting by price or rarity instead gives the wrong item.

How are Ripster.gg battles different from box opens?

The message changes completely. A battle round hashes six pipe-separated fields including the battle ID, round and seat, and the nonce is derived as roundIndex times maxPlayers plus seatIndex rather than taken from your play count. The jackpot draw uses a plain SHA-256 instead of an HMAC.

Does the Ripster.gg nonce start at 0 or 1?

That is not stated on Ripster's fairness page and it is not confirmed here. The modal shows the nonce that a given roll used, so read it from there rather than counting your own opens. Using the wrong starting value produces a valid-looking roll that is simply the wrong one.

Sources

Algorithm details on this page are checked against Ripster.gg's own published material before publication, and our implementation is confirmed against a real result before a game is marked verified.

Asking a different question?

This page is for checking a result you already have. If what you actually want to know is whether Ripster.gg is worth using at all, who runs it and what players report about getting paid, that is a separate piece: is Ripster.gg legit?

The honest fine print

A passing check proves a specific outcome came from numbers fixed before you played. It does not prove Ripster.gg will honour a withdrawal, or say anything about the site beyond this one result. Fair math and a trustworthy business are different things: how we verify and what it means.

More tools: compare every platform's algorithm · batch-verify a nonce range · check your luck vs the odds · all platforms

The verifier never sends your data anywhere. Analytics cookies are separate and let us see aggregate traffic. Nothing loads unless you allow it. See our Privacy Policy.