- Genre
- Puzzle · sliding-tile / brain teaser
- Platform
- Any modern web browser (desktop, tablet, phone, foldable)
- Field
- 4 × 4 grid of integer tiles (powers of two; 0 = empty)
- Modes
- Classic single-player run with global leaderboard
- Controls
- Keyboard WASD / arrow keys · swipe gestures · on-screen four-arrow d-pad
- Price
- Free
Merge numbers. Reach the top. Beat your best.
TGL 2048 is a free, no-install, browser-based take on the classic sliding-tile puzzle by Gabriele Cirulli. Slide the board one of four directions to merge equal-rank tiles into bigger ones, chasing the 2048 tile (and beyond — runs continue until the board is locked). Plays on every modern browser; no signup, no ads, no in-app purchases.
Classic game. Endless challenge.
Simple to Learn
Four moves, one rule: matching adjacent tiles fuse into one of double value. You'll know how to play in 30 seconds.
Hard to Master
The 2048 tile is just the beginning. 4096, 8192, 16 384 are all reachable — but each requires increasingly disciplined merges.
Sharpen Your Mind
Every move forces a tradeoff between immediate score and the board state you're leaving for the next move. Slow play wins.
Chase Your Best
Server-validated leaderboard. The next 2× run is always one decision away.
Tile ladder
Rules
- 4×4 grid of integer tiles (powers of two; 0 = empty). Two starter tiles spawn from the seeded PRNG before move one.
- Each move slides the entire board one of four directions: U / D / L / R.
- Within each row/column along the move direction:
- Compress: drop empties, keeping order.
- Merge equal adjacent pairs into one tile of doubled value (
v + v → 2v). At most one merge per tile per move ([2,2,2,2] → [4,4], never[8]). - Compress again; pad with empties.
- If anything changed, one new tile spawns — 90% chance 2, 10% chance 4 — in a uniformly random empty cell.
- Score = sum of values produced by every merge in the run.
- Game over when no move in any direction changes the board.
Determinism + replay
Mulberry32 PRNG, bit-identical between the JS client and the PHP
validator. The seed is issued by /api/run/start
inside a signed run token. Each tile spawn consumes the PRNG
twice in this exact order:
- Value:
nextU32() % 10 === 0 ? 4 : 2 - Cell:
nextInt(emptyCount)over empty cells enumerated row-major (y outer, x inner).
Reverse the order or change the cell-enumeration scheme and the first spawn diverges. Both sides agree byte-for-byte on score, max tile, and merge count across thousands of cross-checked runs.
Anti-cheat
- HMAC-signed run tokens; single-use, tied to a server-issued seed.
- Server replays the full move log against the seed; client score is overridden by the simulator's recomputed value.
- Score bounds:
[0, 5,000,000]— a 65 536 tile is around 3.9M, leaving headroom for legendary play. - Client-server score mismatch →
validated='pending'for review.
Controls
- Keyboard: WASD or arrow keys.
- Swipe: drag in the desired direction; diagonals resolve to the dominant axis.
- D-pad: on-screen four-arrow pad for thumb input.
Each input source (key / swipe /
dpad) is tracked separately for stats — the
drawer's stats panel shows your move-by-source breakdown.
Privacy / signup
No account required. Guests get an auto-generated username on first visit; rename anytime. No tracking pixels, no analytics SDK, no third-party scripts, no payment processor anywhere on the site.
Play TGL 2048 → All games