All about provably fair


What is “provably fair”?

Many gamblers are wary of online casinos because when playing, you cannot be 100% sure that the game is fair. In real casinos, you can watch all the croupier movements. But on gambling sites, you just can’t do that.

Therefore, most players try to choose only trusted sites for winning. But things have changed a lot when Provably Fair technology was introduced. Today, it may have many names such as hash, signatures, secrets, algorithms, etc., but the point is still the same.

Provably fair is an integrated gambling site system that provides the highest possible fair winnings, as it allows you to check each roll result using a specific mathematical algorithm.

The easiest way to get to the “truth” is to use our Provably Fair verifiers. Everything you should do is to fill in the information on any of these sites and check the roll results!

Here are our verifiers:

Of course, to feel as secure as possible, you should understand how such a system works. Here we will try to explain it in simple language.

How does provably fair work?

We hasten to add that there are several ways to implement the Provably fair method, but here we will consider the most popular one that is widely used in most platforms for games of chance. In order to check if the game results are fair, they use the following variables:

  • Server seed — a random number sequence generated by the gambling site’s server;
  • Client seed — a series of numbers provided by your browser or adjusted by you;
  • Client nonce — the total number of bids.This number increases with each bet you make;
  • Server nonce — a unique identifier which will be generated per each action for user

The player gets an encrypted hash of the server seed before he starts using the site. Since he has it beforehand, the gaming website is unable to change it after. But you should keep in mind that the hash is encrypted, so you won’t be able to calculate your roll results in advance (you can do that only afterward if you receive the unhashed server seed).

You will get an encrypted Server nonce before executing an action (for example before executing a bet or roll) Since you get it in advance, the site cannot change it later. However it is encrypted, so you cannot calculate your own roll results in advance (only afterwards if you get the unhashed server seed.)

Now, you should adjust the client seed before starting the game. This will allow you to make sure that the gambling site system won’t find out this value before the game. If you skip this step, the browser you use will generate a random value.

Thus, the player can influence the results of the game by changing the client seed. If both seeds are generated independently of each other, then the number that comes up is really random and, therefore, unpredictable, so you can be sure that the game results are fair. But as soon as one of the parties knows the seed of the other party, it can easily choose its own seed in such a way as to get a favorable result for itself.

Now, when you place your bets, the nonce value will change, increasing by 1 with each new bet. After the first bet, it will be either 0 or 1, depending on the site.

Calculating the roll result

To calculate the roll result, consider an example where the site uses four variables (server seed, client seed, client nonce and server nonce). Next, we will better show you the circuit with an example using the picture below. Let’s say we have the following values:

So this is:


Server seed unhashed:

Server seed hashed:


Client nonce: 52

Server nonce unhashed: 4ff9da0d-d33d-41ff-b5e1-ab9a873f353f

Server nonce hashed: 9481755e28f7f41de258bfff5ee67fbdb7efd324ed422c07f7ee0d7d5ba075ad92e0d1649c76be4f315fc2e80a17c8b5a3219ab9b7961253fb7c9e170610c387


First you need to calculate the HMAC hash with these variables. It will be: hmac-sha512(server_seed, server_nonce, client_seed, client_nonce)

So in our case this becomes:

hmac-sha512(5d67db3e-e506-407f-a070-8e29c56b74f3, 4ff9da0d-d33d-41ff-b5e1-ab9a873f353f, ZYVMZJY3WTTSKRBOVWPR7T6ST, 52)

You could use a online tool like to calculate the outcome of that, like this:



Calculated outcome:




At this stage, the first five characters (3836e) are being taken and converted from hexadecimal to decimal values. You can use online tools such as to do that.


If this number is over 999,999 than the next 5 characters (22e3a) would be used. But in our case it’s 230254 so this will be used.
The final result is: 230254

Verifying your results

Of course, no gambling website will allow you to get the unhashed server seed in advance, because that would allow you to generate all the rolls and beat the house! But you can generate the next hashed server seed after the gaming session ends. This will reveal your previous unhashed server seed that was used for the session.

Follow these steps to make sure that there is no cheating in the game:

Step 1

The first thing you should do is to check if the hashed server seed you’ve received is actually the hash of the unhashed server seed. Elseways, the website could have provided you a random hash and created fake outcomes anyway. Let’s have a closer look at the previous server seed:

Server seed unhashed:


Server seed hashed:


And here again, you may need a reliable online tool like, which will help you generate SHA512 hash of the unhashed serve rseed:

As you can see, the hash we got before we started to gamble, is really the server seed that was used for the roll outcomes.

Step 2

Step 2 is used to compare your result with the ranges provided by the website. The range is generated even before your bet. Accordingly, it cannot be changed after the roll.

This is basically the same as what we did in the “Calculating of Roll Result” section. Once you know the result of your throw, go to the site and look at the ranges.

Using our result example (230254), the range was 182564-230493. Luckily, everything fits together, and I know that I was not deceived during the game.

Please note that the ranges change every 24 or 48 hours depending on the site, so be sure to select the correct range.