The advice about 2048 is remarkably consistent across the internet. Pick a corner. Keep your bottom row ordered. Almost never press up. We repeat it ourselves on our own 2048 page, and in the guide on how to win 2048. What none of us do — including, until this week, us — is say how much any of it is worth.
So I measured it. I ported the exact engine that runs on this site into a headless script, verified the port against the real page, and played 100,000 games under each of four decision policies. This is what came back.
The headline: the advice is right, and weaker than it sounds
Show the numbers
| Strategy | Median score |
|---|---|
| Random moves | 1,052 |
| Corner priority | 2,440 |
| Corner + tidy | 5,364 |
| Corner + tidy + no up | 7,288 |
Following the corner rule literally — press down, then left, then right, and press up only when nothing else moves — produces a median score of 2,440 against 1,052 for a bot pressing random legal keys. That is 2.3× better from a rule you can state in one sentence and follow without thinking.
Then the second chart arrives and spoils the mood.
Show the numbers
| Strategy | 64 or less | 128 | 256 | 512 | 1024 | 2048 |
|---|---|---|---|---|---|---|
| Random moves | 44.5% | 47.6% | 7.9% | 0.0% | 0.0% | 0.0% |
| Corner priority | 9.7% | 39.2% | 46.4% | 4.6% | 0.0% | 0.0% |
| Corner + tidy | 0.4% | 10.9% | 34.5% | 34.5% | 18.8% | 0.8% |
| Corner + tidy + no up | 0.1% | 3.5% | 22.6% | 43.9% | 27.4% | 2.4% |
In 100,000 games, the literal corner rule never once reached 1024. Not rarely. Never. Its ceiling is the 512 tile, which it reaches in 4.6% of games, and it finishes with a 256 more often than anything else.
This is the part the advice leaves out. A fixed key priority keeps your big tile in the corner, and that alone doubles your score — but keeping the tile in the corner is not the same as building anything useful next to it. Without the ordered row feeding the anchor, the corner is just a place where a large number sits while the rest of the board silently jams.
Isolating the rule against pressing up
The interesting question is not whether the whole strategy works. It is which part of it is doing the work. So the third and fourth policies are identical bots with exactly one difference.
Both score every legal move by how tidy it leaves the board — empty cells, a big tile in the bottom-left, rows and columns that read in one direction, neighbouring tiles close enough in value to eventually merge. Both then play the highest-scoring move. The only difference is that one applies a fixed penalty to up and the other does not.
That single rule is worth 36% on the median score — 5,364 to 7,288 — and it changes how often the bot reaches 2048 at all, from 0.8% to 2.4%. That is 3× as many wins from one line of policy.
It also shows up in the shape of the run. The up-averse bot plays a median of 505 moves per game against 379: it is not scoring faster, it is surviving longer. Which is what the advice always claimed, stated as a number for the first time.
What this does not show
Three things, and they matter enough to say plainly.
These are bots, not people. The best of them reaches 2048 in 2.4% of games. A serious expectimax solver with a tuned evaluation function reaches it in well over 90%. The gap is my evaluation function, not the strategy — I built a bot good enough to compare policies against each other, not one good enough to represent a skilled human. Read the chart as "this rule beats that rule under identical conditions", never as "you will reach 2048 2.4% of the time".
The comparison is within-engine. Different 2048 implementations differ in ways that move these numbers — some spawn a 4 more often, some traverse the board in a different order and resolve a row of four equal tiles differently. Everything here describes the 2048 on this site.
A median is not a promise. The spread is enormous. The tidy bot's 90th-percentile score is 15,976 and its best single game was 37,220, against a median of 7,288. Any individual run tells you almost nothing.
How it was done, in enough detail to check
The engine is a direct port of assets/games/2048.js: same 4×4 board, same 90/10 split between spawning a 2 and a 4, same row-major traversal reversed for down and right, same rule that a tile which has already merged this move cannot merge again.
A port is worthless if it quietly plays a different game, so it is checked against the real thing rather than assumed. A script drives the actual game page in a browser, presses keys, reads the board out of the DOM after every press, and requires that the page's board equals the engine's board plus exactly one newly spawned tile. The running score is compared on every move too, since the score is the merge rule stated another way. Across 2,027 board states there were no mismatches in either.
The spawn rule is checked separately and statistically, because the page and the port draw from Math.random in a different order and forcing them into lockstep would only prove they are wired alike. Over 2,027 spawns the page produced a 2 90.33% of the time against the 90% the code specifies, and picked uniformly among the free cells.
That check found one bug, and it was in the test rather than the game. The first version scored spawn position as k/n, the rank of the chosen cell among the n free ones, and compared it against 0.5. Uniform sampling actually gives k/n a mean of (n−1)/2n — with two free cells left it averages 0.25, not 0.5 — so late-game spawns, where n is small, dragged the average down and the test reported a bias of about 0.39 that did not exist. Scoring (k + 0.5)/n instead gives a mean of 0.5 for every n, and the measured value is 0.4951. The generator was correct the entire time; the yardstick was bent.
Run it yourself
Both scripts ship with the site: tools/sim-2048.js plays the games and tools/verify-2048.js checks the port against the page. The raw output behind every number and both charts is in src/data/sim-2048.json, and each figure above has the full table under "Show the numbers".
So what should you actually do
The three-line version, with the numbers attached:
- Commit to a corner. Worth roughly 2.3× your score over pressing whatever looks good, and it costs no thought at all.
- Build the ordered row. This is the part that separates 512 from 2048, and the part the popular one-line version of the advice omits. The corner rule alone has a hard ceiling.
- Keep refusing to press up. 36% on the median and 3× the win rate, from one habit, on top of everything else you are doing.
The last one is the one to internalise, because it is the one that costs something in the moment. Pressing right into a slightly worse board rather than up into a slightly better one feels wrong every single time. The data says do it anyway.