We ran Cards4’s offline solvers on 96 deals on 25 October 2026 and replayed every solution they reported through the game engine. The results below describe that experiment. They are not a measurement of human win rates or the proportion of all random deals that can be won.
The complete machine-readable snapshot includes each seed, outcome, solution length where available, timing, software versions, and SHA-256 hashes of the game source files and shipped seed libraries. These are original Cards4 measurements, separate from the published studies discussed in our solitaire odds guide.
The experiment
For each of Klondike Turn 1, Klondike Turn 3 and Spider 1 Suit, we used the consecutive integer seeds 0 through 31, inclusive. Each solver received 250 milliseconds per deal. Calls ran sequentially, rather than competing with one another. We used the current server rules and the normal offline solver for each variant.
The seed selection was fixed in advance. Consecutive small integers make the experiment easy to repeat, but this is a convenience sample of 32 deals per variant, not a random statistical sample. The short time budget measures what these solvers find quickly. It deliberately leaves many questions unresolved.
| Variant | Deals | Replayed wins | Timeouts | Exhausted searches |
|---|---|---|---|---|
| Klondike Turn 1 | 32 | 15 | 17 | 0 |
| Klondike Turn 3 | 32 | 11 | 19 | 2 |
| Spider 1 Suit | 32 | 0 | 32 | 0 |
A replayed win means that every returned move was legal in the server engine and that the final state satisfied its win condition. A timeout means the time budget expired before the solver returned a solution. An exhausted search means the solver returned without a solution under its own search rules. Neither unsuccessful outcome establishes that the deal is impossible.
Spider’s zero in this table is particularly easy to misread. All 32 searches timed out. It says the solver found no complete solution within this experiment’s small budget; it does not say Spider 1 Suit is unwinnable. Our shipped library contains 1,000 selected Spider 1 Suit seeds, generated separately with a larger search allowance.
What ships in the seed library
Each binary file contains a flat sequence of unsigned 64-bit little-endian integers, eight bytes per seed. We counted the entries and distinct integers directly from the checked-in files. This inventory contains 4,900 entries across nine files, with no repeated integer within any individual file.
| Library file | Entries | Distinct seeds |
|---|---|---|
| freecell-default.bin | 100 | 100 |
| klondike-turn-1.bin | 1,000 | 1,000 |
| klondike-turn-3.bin | 50 | 50 |
| pyramid-default.bin | 50 | 50 |
| spider-1-suit.bin | 1,000 | 1,000 |
| spider-2-suit.bin | 1,000 | 1,000 |
| spider-4-suit.bin | 500 | 500 |
| tripeaks-default.bin | 1,000 | 1,000 |
| yukon-default.bin | 200 | 200 |
These files contain selected deals for which the offline tooling found winning lines. They are not the 96-deal test sample above. We have not retained the original number of generation attempts for each library, so dividing the library size by an invented attempt count would produce an unsupported success rate. The stored binaries contain seeds, not archived move sequences.
A count also does not certify the contents forever. A future change to a shuffle or rule could change what a seed means. The snapshot’s file and source hashes identify the exact inputs we measured. Our seed documentation explains why reproduction requires a matching game variant and shuffle implementation, as well as the seed itself.
Reproduce and interpret the results
From this checkout, run mix run --no-start scripts/solver_audit.exs. It writes the public JSON snapshot and leaves the solvable seed files unchanged. Every reported solution is replayed before the script accepts it. Timing and timeout outcomes can vary across machines or when the host is busy; the recorded Elixir and OTP versions help identify that difference.
The snapshot includes the complete seed list. You can investigate a particular deal with the shuffle verifier, while keeping its purpose clear: showing the same starting cards proves reproducibility. It does not establish that the seed was selected without bias, that a solver is complete, or that a person will win the deal.
For practice, Solvable Mode removes the uncertainty about whether a selected seed has a known winning line. Random mode asks a different question. The daily challenge guide explains how shared daily seeds and scoring work. We will label future measurements with their own method and date, rather than silently treating this small benchmark as a site-wide win-rate statistic.
FAQ
What is the measured player win rate on Cards4?
This experiment did not collect player results, so it cannot answer that question. Its 15 and 11 completed Klondike deals are solver successes under a 250-millisecond budget, not human win rates.
Does a timeout mean the deal cannot be won?
No. It means the solver did not finish within its allowance. Search limits, move ordering and implementation choices can prevent a solver from finding a winning continuation that exists.
Why publish file hashes?
They let someone check whether their library and source files match this snapshot. A matching filename or a later deployment date alone does not establish identical input data.