Coin Flip
Result: Heads
How to use Coin Flip
Click Flip coin to toss. The coin spins in 3D and lands on heads or tails. Your recent flips appear below with running statistics for this session.
Is a virtual coin flip really 50/50?
This flip is - and it's arguably fairer than a physical coin. The result comes from your browser's cryptographic random number generator (crypto.getRandomValues), the same source used for generating encryption keys, so neither side is favored and no pattern can be predicted.
Physical coin tosses, by contrast, carry a small bias: research by Stanford's Persi Diaconis showed a caught coin lands on the side it started on about 51% of the time, because of the physics of precession during the toss.
When to flip a coin
- Settle a two-way decision quickly when both options seem equal.
- Break a tie in games, contests, or who-goes-first disputes.
- The decision trick: flip, and notice how you feel about the result - your disappointment or relief reveals what you actually wanted.
- Teach probability: flip 50 times and compare your heads/tails split to the expected 50/50.
Probability of streaks
Streaks feel surprising but are normal: in 100 flips there's roughly a 97% chance of seeing at least five heads or five tails in a row. Each individual flip remains exactly 50/50 regardless of what came before - believing otherwise is the gambler's fallacy.
| Streak | Probability |
|---|---|
| 2 heads in a row | 25% |
| 3 heads in a row | 12.5% |
| 5 heads in a row | 3.1% |
| 10 heads in a row | 0.1% |
Features
- 3D animated coin flip
- Heads or tails with clear labels
- Session flip history
- Heads vs tails statistics
- Cryptographic randomness when supported
- 100% client-side
Frequently Asked Questions
Is the coin flip fair?
Yes. Each flip is 50/50 using crypto.getRandomValues() when available. Nothing is sent to a server.
What do heads and tails mean?
Heads is typically the face or emblem side; tails is the opposite. Both outcomes are labeled after each flip.
Is history saved?
Only for your current session in the browser. Refreshing the page clears it.