Skip to content
CheckMyPull

Verify your Skin.club roll

Verified: reproduces real results

Skin.club publishes no formula on its site. We confirmed its inverted HMAC-SHA512 against a real revealed roll from its own tool: nonce 259, giving roll 66,748.

Live verifier
0 network requests

Step 1Where did you play?

Using Skin.club roll: HMAC-SHA512 (inverted key/message) over key = clientSeed-nonce, message = serverSeeddetails

HMAC-SHA512 where the secret key is clientSeed-nonce (dash separator) and the message is the server seed (the reverse of the usual convention, as published by Skin.club). The first 15 hex characters convert to an integer; roll = (integer mod 100,000) + 1, giving [1, 100,000] for case openings.

Where to find your numbers on Skin.club:

  1. Your roll history and seed-change history are available in your account; other players' results are also visible.
  2. The server seed hash (SHA-256) is shown before play.

Source: Skin.club'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 Skin.club

  1. 1

    Your roll history and seed-change history are available in your account; other players' results are also visible.

  2. 2

    The server seed hash (SHA-256) is shown before play.

The documentation gap, and how we closed it

Skin.club's provably fair page explains what the system does without saying how. It tells you outcomes are random and unaltered, that your roll history is complete, that seed-change history is visible. It contains no formula.

The formula is published, just somewhere else: Skin.club's official Medium explainer. That document is written in prose rather than code, and prose leaves gaps. Three of them matter enough to produce a wrong answer with no error message.

So we did not rely on the prose. On 22 July 2026 we took a real revealed roll from Skin.club's own Check Roll tool and worked backwards until our implementation reproduced it exactly:

Value
Server seed1862b99dc42ce8a0c05bc458b250bd20
Client seedcce4eedfa71787e499c44552981ca48a
Nonce259
Roll66,748

That is an operator-produced outcome, not a self-computed example, which makes it a genuine end-to-end confirmation rather than a code cross-check.

The formula, precisely

key     = clientSeed-nonce          (your seed, dash separator)
message = serverSeed                (the site's secret)
        |
        v
   HMAC-SHA512          <-- key and message are the reverse of normal
        |
        v
  first 15 hex characters as an integer
        |
        v
  ( integer mod 100,000 ) + 1  =  roll from 1 to 100,000

The three things the prose left ambiguous

Each of these was settled by the real roll, and each produces a plausible wrong number rather than an obvious failure.

Wrong assumptionRoll it returnsCorrect answer
Conventional key and message21,72166,748
Underscore separator5,53366,748
Salt included in the rollWrong number66,748

Every one of those is a valid-looking roll in range. That is the whole difficulty: nothing signals which is right except a real outcome to check against.

The HMAC is inverted

Nearly every provably fair system keys the HMAC with the server seed and passes the client seed and nonce as the message. Skin.club does the opposite. Running the conventional way round on the seeds above returns 21,721 instead of 66,748.

The separator is a dash

The key is clientSeed-nonce. Using an underscore instead returns 5,533. Again, a perfectly plausible number.

The salt is not in the roll

Skin.club exposes a secret salt alongside the seeds, and the obvious assumption is that it feeds the calculation. It does not. The salt exists only to key the commitment, and including it in the roll gives the wrong answer.

The commitment is not a plain hash

The public hash Skin.club shows before you play is HMAC-SHA256 keyed with the salt over the server seed. It is not a plain SHA-256 of the server seed, and it is not SHA-256 of the server seed concatenated with the salt. We tested both; neither reproduces the published hash.

This matters because the commitment check is the half of provably fair that proves the site did not swap its seed after seeing your play. If you check it the ordinary way it will fail, and the natural reading of that failure is that Skin.club cheated. It did not. The commitment simply uses a construction most tools do not try.

The verifier above knows this and runs the correct check automatically.

Fifteen hex characters, and why that is awkward

The slice is the first 15 hex characters of the digest, which is 60 bits of information. That is more than a standard JavaScript number can hold exactly, since ordinary floating-point integers stop being reliable above 53 bits.

A verifier that converts that slice using normal arithmetic will be silently wrong for a portion of rolls: correct most of the time, quietly off in the cases where the top bits matter. Ours runs the conversion through arbitrary-precision integers so the result is exact for every possible digest.

What this page confirms

The case opening and upgrade mode share one engine, and that engine is confirmed against the real roll above. The maximum roll number is 100,000 for case opening; other mechanics on the site may use a different ceiling, which is why the verifier exposes it as an adjustable value rather than assuming.

Skin.club's public reception is polarised, and its Trustpilot profile carries roughly 1,755 reviews including recurring accusations that results are rigged, which Skin.club has responded to by pointing at its provably fair system. That is exactly the situation an independent check is for. Rather than taking either side's word, you can now recompute the roll yourself, on your own device, and see what the math says.

What a match proves is narrow and real: that specific roll came from values fixed before you played. It says nothing about withdrawals, support, or the odds attached to any case, and we are explicit about what verification cannot prove.

What we can check on Skin.club

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

GameAlgorithmStatus
Case opening / upgradeHMAC-SHA512 (inverted key/message)Verified

Verified against a real Skin.club UPGRADE roll (server 1862b99d…, client cce4eed…, nonce 259 -> roll 66,748) from their Check Roll tool, 2026-07-22, which confirms the whole roll engine: inverted HMAC-SHA512, dash separator, first-15-hex slice, +1, salt not in the roll. Case opening uses this identical engine with the same MaxRollNumber (100,000) per Skin.club's published explainer; a real case-opening roll would confirm that mode with live data too.

Common questions

Is Skin.club provably fair?

Yes, and we have confirmed it against a real outcome rather than only against its documentation. A revealed roll from Skin.club's own Check Roll tool, server seed 1862b99d with nonce 259, produces roll 66,748, and our implementation reproduces that exactly.

What is Skin.club's provably fair formula?

HMAC-SHA512 with the key and message reversed from the usual convention: the key is your client seed and nonce joined by a dash, and the message is the server seed. The first 15 hex characters become an integer, and the roll is that value modulo 100,000 plus 1.

Why does my Skin.club roll not match?

Three causes account for nearly all mismatches. Running the HMAC the conventional way round returns 21,721 instead of 66,748 on the reference roll. Using an underscore instead of a dash returns 5,533. And the secret salt must be left out of the roll entirely, since it only keys the commitment.

How does Skin.club's public hash work?

It is HMAC-SHA256 keyed with the salt over the server seed, not a plain SHA-256 of the server seed and not SHA-256 of the two concatenated. Neither of those reproduces the published hash. A commitment check done the ordinary way fails here even when nothing is wrong.

Where do I find my Skin.club seeds?

Your roll history and seed-change history are in your account, and other players' results are visible too. The SHA-256 keyed server-seed fingerprint is shown before play. Skin.club's own Check Roll tool looks up an existing roll by its id, so a roll has to have happened before it can be checked.

What is the Skin.club secret salt for?

It keys the commitment, not the roll. Skin.club exposes a secret salt alongside your seeds and the natural assumption is that it feeds the outcome calculation. It does not, and including it there produces a plausible but wrong roll. You need both the revealed server seed and the salt to check the commitment.

Sources

Algorithm details on this page are checked against Skin.club'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 Skin.club 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.