Flip a Coin
Real randomness, and a running tally so you can check it.
Runs locallyPress Flip. Every flip uses your operating system’s cryptographic random source.
Every flip so far — check it yourself
Runs entirely in your browser — open DevTools and check the Network tab
Press the button and get heads or tails. The interesting question is not whether a web page can show you a random word — it is whether the coin is actually fair, and whether you have any way of finding out. This page keeps every flip and shows you the statistics as they build, so the answer stops depending on trust.
Where the randomness comes from, exactly
Each flip reads one bit from your browser’s crypto.getRandomValues, which is a cryptographically secure pseudorandom number generator seeded and reseeded by your operating system from hardware entropy sources — timing jitter, interrupt patterns, and on most modern processors a dedicated instruction that samples thermal noise.
The everyday alternative is Math.random. In V8, the JavaScript engine inside Chrome and Edge, Math.random is an xorshift128+ generator. It is fast and statistically respectable for graphics and games, but it is not unpredictable: from a modest run of consecutive outputs it is possible to recover the internal state and then compute every future value. For a coin flip that decides who pays for dinner, nobody cares. For a coin flip that decides who goes first in a tournament, or which of two people gets a limited slot, that difference is the whole point.
There is no seed field on this page, and that is deliberate rather than an omission. A cryptographic source has no reproducible seed by design — the entropy is mixed in continuously and never exposed. A seed you could inspect would be a seed somebody else could guess, which is precisely the property you do not want when fairness matters.
How to tell whether a coin is fair
Not by looking at the ratio. This is the single most common mistake people make when they try to audit a random source. Twenty flips landing 13 to 7 feels wrong, and it is completely ordinary: for a fair coin the number of heads in n flips has a standard deviation of the square root of n divided by two, so twenty flips wobble by about 2.2 either side of ten as a matter of routine.
The right question is how many standard deviations away the result sits. The statistics panel on this page works that out for you as the flips accumulate. Under roughly two standard deviations there is nothing to explain. A source that landed on exactly fifty per cent every time would be the suspicious one, because that is not what randomness looks like — that is what a counter looks like.
The other thing worth watching is the longest run. People consistently underestimate how long streaks get. In a hundred fair flips, a run of six or seven of the same face is unremarkable, and a run of five is close to certain. If a source never produced streaks, it would be failing to be random rather than succeeding at being fair.
What a coin flip is actually good for
A coin flip is the cleanest tie-breaker there is, because both parties can see that neither of them influenced it. That transparency is doing the real work — the fairness of the coin matters far less than the fact that neither side chose the outcome. This is why the running tally on this page is more than decoration: it is the part that makes the process auditable rather than merely asserted.
It is a bad tool for anything with more than two outcomes, or where the outcomes should not be equally likely. Flipping repeatedly to narrow down four choices works but distorts the odds if you stop early. For picking from a range, or for several draws at once, use a number generator instead so every option gets exactly the same probability.
Flipping several coins at once, which this page supports, answers a different question from flipping one coin several times over. Ten coins in one throw is a snapshot of a distribution; the running total across many throws is the distribution itself. Both are shown, and they are not interchangeable.
Nothing about your flips leaves this page
There is no request when you press the button. The bit comes from your own machine, the tally lives in this tab’s memory, and it is gone when you close it. No result is recorded on a server, which also means no result can be produced later as evidence of anything.
That is verifiable in about ten seconds rather than something you have to take on faith. Open your browser developer tools, switch to the Network tab, and flip as many times as you like. The list stays empty. This site also sends a Content-Security-Policy that restricts network connections to its own origin, and your browser enforces it regardless of what our code does.
Frequently asked questions
Is this coin actually fair, or just close enough?
It is fair in the strict sense: each flip reads one bit from your operating system’s cryptographic random source, and both outcomes are exactly equally likely. There is no rounding step and no modulo operation where a bias could creep in. The running statistics are there so you can confirm it instead of believing it.
Why does it not land on 50/50?
Because a fair coin does not. The number of heads in n flips varies by roughly the square root of n divided by two, so short runs swing widely and long runs converge slowly. The statistics panel converts your result into standard deviations, which is the number that actually tells you whether something is off.
Can I see or set the seed?
No, and that is the point. Cryptographic random sources have no reproducible seed — entropy is mixed in continuously and never exposed. A visible seed would be a predictable seed. If you need reproducible pseudo-randomness for a simulation, that is a different tool with different requirements.
Why not just use Math.random?
Because its internal state can be recovered from a short run of outputs, which makes future results predictable. That is irrelevant for a game and disqualifying for anything where someone has an incentive to know the answer in advance.
Is my flip history stored anywhere?
Only in this tab’s memory, and only until you close or reload the page. Nothing is sent to a server and nothing is written to disk.
Does it work offline?
Yes, after the first visit. The page is cached by your browser, and the randomness comes from your operating system rather than the network, so there is nothing to be offline from.