
Today I shipped Tessera Hard, a 5x5 version of the daily word puzzle. It runs side by side with the original 4x4, and both modes now grade on a new ratio-based tier system.
If you've never played
Tessera is a daily word puzzle. You start with a scrambled grid of letters. Tap two tiles to swap them. Keep going until every row spells a word, and every column too. One puzzle a day, the same one for everyone.
The classic version is a 4x4 grid with 8 hidden words. Hard is a 5x5 grid with 10. Same mechanic, more constraints to satisfy at once. Try the classic first at tesserapuzzle.com, and Hard at tesserapuzzle.com/hard when you're ready.
If you already play
A few things to know.
Two separate games now. Classic 4x4 stays at the home page. Hard 5x5 lives at /hard. Stats are separate per mode. Streaks are separate per mode. Playing Hard does not preserve your Classic streak, and vice versa. They're really two different games sharing one mechanic.
Your tier on past solves may read differently. The grading scale changed (see below). On most past solves it's the same or close. On easy days where you solved in 12 moves, you may have dropped from Genius to Wordsmith. On hard days where you solved in 18, you may have moved up. The old grading was systematically generous on easy days and harsh on hard ones. The new bands are fairer, but they're a recalibration, not a buff.
There's a Classic/Hard toggle on the history modal. Click the clock icon at the bottom of the board, then switch tabs to see your record per game.
Why two modes, not one
I considered four options before shipping:
- Drop the 4x4 and replace it with the 5x5.
- Ship 5x5 as the only mode, behind a "play harder" toggle.
- Ship 5x5 as a separate mode at /hard, with separate streaks. (Chose this.)
- Ship a sliding difficulty (4, 5, 6, 7-letter modes), pick your tile size.
Option 1 was tempting and clean. The reason I rejected it: the 4x4 is where new players start. It's the version that gets shared on Twitter and into group chats, and it's the version a new player picks up in 30 seconds. Replacing the entry point with the harder version on day one would lose the players who arrive via someone else's share link.
Option 2 confused two things. A difficulty toggle implies "the same game, harder," but a 5x5 isn't really the 4x4 with more rows. It's enough constraint shift that it reads as a different puzzle. Players who beat the 4x4 daily wouldn't necessarily want to play a 5x5 daily, and players who love 5x5 wouldn't want their 4x4 streak to rely on it. Two distinct games, two streaks.
Option 4 was over-engineering for a question I don't have data to answer yet. If 5x5 settles in well, a 6x6 might follow. I'd rather see how Hard plays for a few months before adding sliders.
Two clearly distinct games is friendlier than one game with a difficulty knob. Each can have its own rituals, scores, and audience without one undermining the other.
How the tier system got reworked
Tessera grades you on the number of swaps it took to solve. The old tiers were absolute thresholds: 10 or fewer was Legendary, 20 Genius, then Wordsmith, Persistent, Tenacious. That worked OK while there was one grid size and intrinsic difficulty was roughly constant. Two things broke it.
Different puzzles need different minimums. Some 4x4 puzzles minimum-solve in 5 swaps. Others need 11. The same 10-move Legendary band gives one player a tier almost trivially, while another, who took 12 moves on an 11-swap puzzle, gets dropped a tier despite playing better. Move count alone doesn't tell you how close someone got to optimum.
A 5x5 needs more swaps. A typical 5x5 minimum-solves in 8 to 12. Even Legendary play would land at 14 to 18 moves, blowing past the old 10-move Legendary band on every puzzle. I'd have needed a separate tier system for Hard.
So tiers are now ratio-based. Your score is moves / minimum-swaps-for-this-puzzle. The bands are 1.5, 2.5, 4.5, 7.0. Legendary means "at most 50% above optimum." The same calibration covers both grid sizes, because the ratio normalises out grid size automatically. Bands were calibrated against a few hundred real production solves, not pulled from a hat.
≤ 1.5×
Legendary
≤ 2.5×
Genius
≤ 4.5×
Wordsmith
≤ 7.0×
Persistent
Computing min-swaps is fun. The naive instinct is "treat each tile as having a single home cell, count cycles in the permutation." That's wrong when there are duplicate letters. If two tiles both have the letter A and either could end up in either A-position, you have multiple valid permutations and you want the one that maximises cycle count. Min-swaps for a permutation with K cycles on N cells is N − K.
The exact algorithm: per letter, group source-cell indices and target-cell indices. Enumerate every bijection from sources to targets within each letter. Combine across letters into a global permutation, count cycles, take max. Combinatorics are bounded by the product of letter-count factorials, capped at 50M assignments. For typical English word grids you're looking at hundreds to thousands of assignments to check, so it runs in milliseconds.
If anything ever exceeds the cap (it hasn't on real puzzles), a greedy fallback prefers two-cycles. Slight overestimate, but monotonic, so a player can never improve their tier by accidentally tripping the cap.
What's next
Both modes share the same daily schedule. Puzzles roll at UTC midnight. Dictionaries are pulled from common-word lists, filtered to 4 and 5 letters respectively.
A few things I'm deferring:
- Curated 5-letter answer list. Hard currently pulls from a frequency-ranked subset of common words. It works, but a hand-vetted list would weed out the occasional obscure entry. I want player feedback first.
- Hard-mode demo. The idle-swap onboarding animation on Classic is screen-recorded for the 4x4. The Hard route just shows the daily.
- Mode-aware band recalibration. The current ratio bands cover both grid sizes uniformly. If 5x5 player skill clusters at very different ratios after a month of data, mode-specific bands may follow.
Try it: tesserapuzzle.com/hard.
From the Catalogue