Schelling's segregation model, playableA Third Is Enough
Give everyone on this grid the mildest preference imaginable — "I don't mind being a minority; I just don't want to be outnumbered worse than two-to-one" — and a perfectly mixed city sorts itself into hard, single-colour blocks that nobody asked for. Not because anyone is a bigot. Because everyone is a little bit choosy, and choices compound. This is a random-relocation variant of Thomas Schelling's 1971 model. His nearest-satisfactory-vacancy rule gave only slight segregation at about a third; the strong sorting here is measured under the rule below.1 Here it is, running, with the gap between what people want and what they get measured live.
Two kinds of people share a grid — call them gold and teal — with some cells left empty. Each person looks at their up-to-eight neighbours and is content as long as at least a fraction τ of the neighbours they can see are their own kind. Anyone who isn't content picks up and moves to a random empty cell. That's the entire model. Nobody wants a segregated city; the sharpest preference on offer here is "please don't leave me almost alone." Watch what a whole grid of that mild wish produces.
The grid — set the wish, then press play
Press play. Each person only wants a third of their neighbours to match — but watch where the grid settles.
Press play at the default setting — τ = 1/3 — and the salt-and-pepper mix unmixes. Within a dozen-odd rounds the churn stops: the grid has broken into broad territories of one colour, veined with the empty cells people fled through. Now read the two numbers. The grid started with each person having about 50% same-kind neighbours — exactly what a random mix gives. It ends at about 76%.
Everyone asked for a third. Everyone got three-quarters.
That is the whole paradox in one line, and it is worth sitting with. No individual on the grid wants a segregated world. Each would be perfectly content in a neighbourhood that is two-thirds other. Yet the arrangement these moves reach leaves them all content, with the average person surrounded overwhelmingly by their own kind. A mixed arrangement can also leave everyone content. The preference is mild and the outcome is extreme, and nothing bridges the two except the fact that one person's move makes a neighbour a little more outnumbered, who then moves, and nudges someone else. Segregation here is not anyone's goal. It is a fixed point these moves reach.
And here is the part that should unsettle you: everyone is happy
Look at the second number when the motion stops: zero people still want to move. The segregated grid is not a tragedy anyone is trapped in — it is an equilibrium everyone accepts. You cannot fix it by asking people to be content, because they already are. You cannot point to the culprit, because there isn't one. A social outcome that no member of the society wanted, and that no member is unhappy with, is the specific thing Schelling built this toy to make visible. The prize committee discussed the segregation model among his other contributions when he shared the 2005 Nobel Prize in economics.1
What you ask for, versus what you get
Slide the preference up and down and the endpoint moves with it — but never to where you pointed. This curve is the summary: for each value of τ, the height of the gold line is where the grid ends, after settling or reaching the 400-round cap (averaged over seeds 1 to 24; every point recomputed offline). The pale diagonal is the honest expectation — if the world gave you exactly the mix you asked for, it would sit on that line. It never does. The whole region between the two is the paradox.
The tipping curve
The gap between the two lines is segregation nobody chose. Run the grid above and a dot marks where your run landed.
Two features of that curve are real discoveries, not decoration. First, the settled points sit above the diagonal: even a whisper of preference (τ = 0.15) leaves the grid measurably more sorted than chance. That holds for the mild settings plotted here; at τ = 1/8, the same experiment ends near the mixed baseline, at about 0.51. Second, follow the line to the right and it doesn't just keep rising — just past τ = 0.75 it falls off a cliff, crashing back down to the mixed baseline.
The cliff and the local threshold
Past that point the random moves fail to find an arrangement that contents everyone within the 400-round cap, and the grid remains roughly as mixed as it started. That is a measured outcome, not a proof that no contented arrangement exists or that the motion lasts forever. With eight occupied neighbours, wanting "≥ 75% the same" means 6 of 8. Above 75%, within the slider's range, the requirement becomes 7 of 8. That local threshold is arithmetic; it does not prove the global cliff. Two solid groups separated by empty space can content everyone even at τ = 1, with this grid's same 1,125 gold, 1,125 teal and 250 empty cells. The wish is possible. The sampled runs above 0.75 do not settle within 400 rounds.
Don't take the numbers on trust — reproduce one
This grid runs a seeded pseudo-random generator, so a given seed produces the identical run here and in the offline verifier. Press the button: it loads seed 12345 at τ = 0.30, runs it to the end, and should land on the number the verifier prints.
Expected (from research/schelling/verify.mjs): start 0.5010 → end 0.7638, settled in 18 rounds, 0 unhappy.
What this does and doesn't say
It is tempting to walk away from this grid believing it has explained the segregated city outside your window. It hasn't, and pretending otherwise would betray the one thing the model is good for. Here is the honest reading, which is more interesting than the lazy one.
The model proves a sufficiency, not a cause. It shows that mild same-kind preference is enough, all by itself, to produce stark segregation — you don't need hatred, money, or law to get there. That is a genuine and counterintuitive result: it means observing a segregated city tells you less about people's inner attitudes than you'd think, because even tolerant people generate it. But "sufficient" is not "actual." Real-world residential segregation is over-determined — driven by income and housing cost, by explicit discrimination, by lending and zoning and school catchments, by history this toy contains none of. Schelling's grid removes all of that on purpose, to isolate one mechanism, and its lesson is precisely about that one mechanism, not the whole phenomenon.2
Two more caveats the honest version keeps in view. The grid is perfectly symmetric — the two groups are identical, equally numerous, with identical preferences and no difference in power or wealth. Real segregation is none of those things, and the symmetry is a limitation, not a neutrality. And the exact number — 76% at τ = 1/3 — depends on the rules stated here (eight neighbours, a bounded grid, moves to a random empty cell). Change the neighbourhood or the moving rule and both the number and the tendency to sort can change; some variants lack segregation patterns.3 Here, the strong sorting persists across the grid sizes and vacancy fractions tested below. The decimal is ours, and you can check it.
The check — every number here is recomputed, not quoted
- The grid you play IS the verifier. The simulation on this page (makeGrid / step / likeFraction) is an equivalent port of research/schelling/sim.mjs, driven by the same seeded PRNG (mulberry32). A named seed produces a bit-identical run in your browser and on the command line.
- The headline, reproduced. 50×50 grid, 10% empty, τ = 1/3, averaged over seeds 1–40: mean start like-fraction 0.4994 → end 0.7568, and every run settles with 0 unhappy. Preference 0.333, outcome 0.757 — a gap of 0.42.
- The single run you can watch and check. Seed 12345, τ = 0.30: 0.5010 → 0.7638 in exactly 18 rounds, 0 unhappy. (The button above runs it live.)
- The sampled rise and the drop at the cap are verified. Mean segregation is non-decreasing at the seven tested thresholds from τ = 0.20 to 0.75 (0.576 → 0.999); at τ = 0.76, none of 40 seeds settles within 400 rounds, and the endpoint mean is 0.51. The local threshold is checked from the rule: 6-of-8 is content at 0.75 but not at 0.76.
- Robust across the grid sizes and vacancy fractions tested. The τ = 1/3 outcome stays in 0.75–0.76 across grid sizes 30–80 and vacancy 5–30% — it's the mechanism, not a tuned instance.
- Self-tests: an all-one-colour patch scores like-fraction exactly 1; a checkerboard scores below 0.5 (anti-clustered). Offline verifier: 24/24 checks pass.
Corrections
Corrected 2026-10-01: The page credited the strong sorting at one-third to Schelling's 1971 proof. His nearest-satisfactory-vacancy rule gave only slight segregation at about one-third. The roughly 76% result here is measured in this page's random-relocation variant; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The search title said mild preference creates total segregation. The measured mean at one-third is about 76% same-type neighbours, so the title now says strong segregation; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page said segregation was the only arrangement that left everyone content, and called it the fixed point. A mixed checkerboard with the same population and vacancy has about 49.16% same-type neighbours, zero unhappy agents and zero moves at one-third. The runs reach a segregated fixed point, not the only one; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page called this model the reason for Schelling's 2005 prize and the emblem of the cited work. The prize recognised analysis of conflict and cooperation through game theory; the committee discussed segregation among his other contributions; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page called capped runs settled or endlessly churning, said high thresholds were impossible to satisfy, and treated the cliff as proved by local arithmetic. The cap is 400 rounds. Separated groups with the same counts can content everyone even at a threshold of 1; the 6-of-8 to 7-of-8 step alone proves no global impossibility. A run with 5% empty cells, seed 12345 and a threshold of 0.75 settles at round 411; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page and curve description said the gold line lay above the diagonal everywhere. The four rightmost plotted points lie below it, and their runs have not settled within 400 rounds; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page said strong sorting persisted across every variant and arbitrary choice. The cited research includes variants without segregation patterns. This verifier tests persistence across grid size and vacancy, with the neighbourhood and move rule held fixed; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The page said the browser simulation was copied byte-for-byte from sim.mjs. It is an equivalent port with different source text; the named seed still produces identical cells and figures; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The markdown and code comment pointed to a companion sweep in research/schelling/. That directory holds the simulation and verifier, with no separate sweep file. The 25 plotted points are stored in this page and reproduce from sim.mjs over seeds 1 to 24 with a 400-round cap; found by the assay line, 2026-10-01.
Corrected 2026-10-01: The unhappy counter kept the old threshold's value when the slider moved. On the initial grid it showed 407 after a change to 0.85, although 2,146 agents were unhappy. It now recalculates on slider input; found by the assay line, 2026-10-01.
Updated 2026-10-01: The original check was recorded on 2026-07-06. The claims were re-read and the verifier rerun on 2026-10-01.
Updated 2026-10-01: The modification date was 2026-07-06 when the page was first written; dateModified now records this revision, 2026-10-01.