Method and data
Read the full methodology: data, rules and a step-by-step explanation of every mode.
Building blocks. 33,585 ZIP Code Tabulation Areas (the Census Bureau's land-area version of ZIP codes) with 2020 Census population. ZIPs are never split, with one exception: state lines come first, so the 137 ZIPs that a state line runs through are split at that line, one piece per state, each with its own Census population.
Seats and targets. Each state keeps its 2020 apportionment. The national average is 761,169 people per seat, but districts cannot cross state lines, so the target is the state's population divided by its seats (Montana ≈ 542,000 per district, Delaware ≈ 990,000 for its single seat).
Modes. Listed from most to least defensible as a neutral rule: the fewer choices a person could tune, the higher the rank (why this order). Fixed rule modes follow one mechanical rule. Start point modes grow districts outward from an anchor. Pick by rule modes choose among many possible maps using a rule set before any map was drawn, so nobody can keep redrawing until they like the result.
Same finish for every mode. After a mode draws its first version, a balancing pass trades border ZIPs between neighboring districts to even out population, keeping every district in one piece and its borders smooth.
Random seed. The random modes take their seed from a number published before any map existed: . Anyone can rerun the code and get identical maps.
Counties split counts counties whose ZIP areas fall in more than one district. Each ZIP area is assigned to the county holding most of its land.
Neighbors. ZIPs are neighbors when their boundaries touch, when they face each other across unpopulated land within 25 km, or across water when that is the only link (islands).
Grey areas are land with no ZIP code area (national forests, deserts, parks). They have no residents and belong to no district.
Sources. U.S. Census Bureau: 2020 DHC Table P1 by ZCTA; 2020 cartographic boundaries (cb_2020_us_zcta520_500k, county and state 500k); 2020 apportionment.