Skip to content
CheckMyPull

Verify your CSGORoll roll

Verified: reproduces real results

CSGORoll publishes runnable code rather than a prose description. Its case opening is confirmed here against its own published example, roll 90,455,280.

Live verifier
0 network requests

Step 1Where did you play?

Using HypeDrop / CSGORoll unboxing engine: HMAC-SHA256 (combined seed as key, empty message) over key = GAME-serverSeed-clientSeed-noncedetails

The combined string GAME-serverSeed-clientSeed-nonce (hyphen separators, game prefix such as BOXES or PVP_BOX) is used as the HMAC-SHA256 key over an empty message. The first 13 hex characters of the digest divide by 2^52 and multiply by the outcome count (floored). HypeDrop and CSGORoll publish byte-identical code for this engine.

Where to find your numbers on CSGORoll:

  1. The server seed hash is shown before play; the unhashed seed is revealed when you update your client seed.
  2. Roll history and seeds are on the Roll Provably Fair page.
  3. PvP seeds and nonces are in the Provably Fair modal on the PvP Duel page.

Source: CSGORoll'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 CSGORoll

  1. 1

    The server seed hash is shown before play; the unhashed seed is revealed when you update your client seed.

  2. 2

    Roll history and seeds are on the Roll Provably Fair page.

  3. 3

    PvP seeds and nonces are in the Provably Fair modal on the PvP Duel page.

What CSGORoll publishes

CSGORoll's provably fair page links out to runnable code for each game mode rather than describing the algorithm in words. That is the useful kind of documentation: it removes the guesswork that prose always leaves behind.

We took the case-opening code from that source and ran it independently. Our implementation reproduces its output exactly, including the roll 90,455,280 that CSGORoll's own published example produces. That is what allows the verifier above to accept CSGORoll pulls rather than showing an awaiting-confirmation notice.

The formula, precisely

combined = BOXES-serverSeed-clientSeed-nonce      (hyphen separators)

HMAC-SHA256( key = combined, message = EMPTY )
        |
        v
  first 13 hex characters of the digest
        |
        v
  ( value / 2^52 ) x 100,000,000, rounded down  =  your roll

The second line is the part that matters, and it is easy to read past. The combined string is used as the HMAC key, and the message is empty. CSGORoll's published code builds the HMAC from the seed string and then never feeds it any data.

That is not the same as hashing the combined string with plain SHA-256, and it is not the conventional arrangement where the server seed keys an HMAC over the client seed and nonce. Both alternatives produce entirely different digests. A verifier written for almost any other platform will return a number that looks completely reasonable and is wrong, which is the most common reason a CSGORoll check appears to fail.

The BOXES prefix at the front of the string is literal and must be included.

The sister-platform detail that catches people

CSGORoll and HypeDrop run the same engine. The published code is byte-identical, which is unsurprising once you notice how similar the two sites are.

They do not share parameters.

CSGORoll caseHypeDrop unboxHypeDrop battle
EngineHMAC-SHA256, empty messageIdenticalIdentical
Game prefixBOXESBOXESPVP_BOX
Final multiplier100,000,00099,999,999100,000,000
Value we reproduced90,455,28019,569,99335,864,249

CSGORoll's case opening multiplies by 100,000,000. HypeDrop's unboxing multiplies by 99,999,999. The gap is one unit, and because that value is the final multiplier before rounding down, using the wrong one shifts the result by an amount small enough to look like a rounding quirk and large enough to be a different item.

If you are checking a CSGORoll pull with a tool built for HypeDrop, this is almost certainly why it disagrees.

What is confirmed, and what is not

Case opening is confirmed. Dice and quick upgrade are not, and the distinction is deliberate.

Why dice is held back

The dice engine is a different algorithm: HMAC-SHA512 keyed with the server seed, read in five-character chunks, skipping any chunk at or above 1,000,000, with the first accepted chunk reduced to a value from 0 to 9,999. We have implemented it, and we have confirmed that implementation against HypeDrop's identical published code. What we do not have is a CSGORoll-native result to check it against.

That is why the table above shows dice as awaiting confirmation rather than verified. The engine is almost certainly right, given the platforms publish the same code. "Almost certainly" is not the standard we ship, so we say so rather than rounding it up.

Games before October 2022

CSGORoll changed its random number generation on 19 October 2022, with separate cutoff IDs per game mode. Anything played before those cutoffs ran on legacy code that this tool does not implement.

We have not built the legacy path because we cannot confirm it against a published result, and shipping an unverified implementation would mean handing you an answer we cannot stand behind. If an old result will not reproduce, the cutoff is the likely explanation.

Where to find your seeds

The hashed server seed is shown before you play. The unhashed seed is revealed when you update your client seed, so rotating is what makes your past rounds checkable. Roll history and the seeds themselves live on the Roll Provably Fair page, and for PvP the seeds and nonce are in the Provably Fair modal on the PvP Duel page.

What a passing check settles

A match proves the round you are checking came from values committed before you played, and that CSGORoll did not alter it afterwards. Given the engine's unusual construction, reproducing a CSGORoll roll from outside the site is a real confirmation rather than a formality.

It settles nothing beyond that one round. Whether a withdrawal completes, how support responds, or what any given case contains are separate questions that a fairness check cannot answer, and we keep what verification cannot prove as a standing page for that reason.

What we can check on CSGORoll

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

GameAlgorithmStatus
Case openingHMAC-SHA256 (combined seed as key, empty message)Verified

Reproduces the output of CSGORoll's own published StackBlitz (roll 90,455,280).

Dice / quick upgradeHMAC-SHA512Awaiting confirmation

Engine verified against HypeDrop's identical published code; no CSGORoll-native vector yet.

RNG updated 2022-10-19 with per-mode cutoff IDs; older games used legacy code.

Common questions

Is CSGORoll provably fair?

Yes, and it publishes runnable code rather than a written description, which is what makes an outside check possible. Our implementation reproduces the output of CSGORoll's own published example exactly, including roll 90,455,280, so any case opening you have already made can be recomputed here on your own device.

How does CSGORoll's algorithm work?

It builds the string BOXES-serverSeed-clientSeed-nonce and uses that whole string as an HMAC-SHA256 key over an empty message. The first 13 hex characters of the digest divide by 2 to the power of 52, multiply by 100,000,000, and round down to give the roll.

Why does my CSGORoll check give a different number?

Most likely because your tool passes the seeds as the HMAC message. CSGORoll uses the combined string as the key and passes nothing as the message. A verifier built for another platform returns a plausible but wrong roll rather than an error.

Are CSGORoll and HypeDrop the same?

They publish byte-identical code for the unboxing engine, but their parameters differ. CSGORoll's case opening multiplies by 100,000,000 and HypeDrop's unboxing multiplies by 99,999,999. Using one platform's tool on the other's data shifts the result by a small amount that is easy to miss and still wrong.

Can I verify CSGORoll dice results?

The dice engine is implemented but marked awaiting confirmation. We have matched it against HypeDrop's identical published code, but we have no CSGORoll-native result to confirm it against, so we do not describe it as verified. The dice nonce also starts at 0 rather than 1.

Why does CSGORoll multiply by 100,000,000 and HypeDrop by 99,999,999?

Because the two sister platforms ship the same engine with different parameters. The multiplier is the last step before rounding down, so a one-unit difference shifts the result by an amount small enough to look like a rounding quirk and large enough to land on a different item.

Sources

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

The honest fine print

A passing check proves a specific outcome came from numbers fixed before you played. It does not prove CSGORoll 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.