North Carolina
District workspace
Historical election comparison · 2020 population
Map details
No selection
Historical election comparison · 2020 population
No selection
STATE SENATE · 50 SEATS
Select a county group to see its counties, population, seats and combined votes. Drag to pan · pinch or scroll to zoom.
Each checkbox controls a complete statewide arrangement. Uncheck one to exclude it from automatic exploration. Enter locks the arrangement currently shown above.
Browse actual NCSBE precinct-sorted returns, including primaries, municipal races and statewide contests. These are original election-vintage precincts.
2023 and 2025 were primarily local elections: an absent race or precinct is not a zero-vote result. May 14, 2024 precinct results are unavailable to protect ballot secrecy. December 6, 2022 and March 7, 2023 have ordinary returns only; these remain separate from geographic modeling.
Precinct-sort totals contain official privacy noise and can differ from certified totals. Bladen’s 2024 presidential sort differs from ordinary returns by 448 Democratic and 427 Republican votes; the cause is unverified, and the source values are retained.
Data vintages and modeling choices are part of every result. Updated November 7, 2026.
Target mode jointly redraws two or three neighboring districts, testing connected concentrations of opposition votes and distributions that create additional wins. After reaching the requested D/R split, it prioritizes the weakest favored seats and reduces the variance of their winning margins. The party with more requested seats is favored; an equal split protects both parties. The one-narrow-win setting excludes the weakest favored seat from the margin-balancing calculation.
Population repair retains the seat split. Compact mode also limits perimeter and spatial spread; county interiors and locked districts remain constraints. These priorities can conflict, so the result reports actual seats, population deviation, margin range and standard deviation. This is a heuristic search over historical results, not a proof of optimality or a forecast. Drawing one seat permanently at a time can strand the remaining population; regional proposals are therefore accepted only with their connected remainder.
Recombination research · Geographic constraints on packing and cracking
The map uses NCSBE’s August 24, 2026 statewide precinct boundaries. The 2020 Census supplies population, race, Hispanic origin, adult population, housing and group quarters. All 236,638 blocks are assigned using their official internal point; this is a geographic allocation, not a claim that 2026 precincts existed in 2020.
Every populated block falls within a source precinct. Seven zero-population blocks required a within-county nearest-geometry fallback. Source geometry is unsimplified for adjacency; display geometry repairs narrow unassigned source gaps, uses shared edges and is simplified to 20 metres and clipped to a Census 2025 cartographic land outline. Water territory still participates in connectivity calculations.
Display topology and gap-repair provenance ↓ · Road sources ↓ · Boundary provenance & hashes ↓25 ACS tables provide 361 measures at block-group or tract level, with 90% margins of error. Precinct estimates use 2020 population weights for persons, occupied housing weights for household measures, total housing weights for all-housing-unit measures, and VAP weights for CVAP. Medians remain source-geography values and are never summed into a district median.
District MOEs first combine weights for each source geography, then use root-sum-of-squares. They exclude allocation error and covariance between different source geographies. CVAP also includes official statistical privacy noise.
Demographic provenance & hashes ↓2022–2025 results remain in their original precincts in the election archive. Election baselines, including the added 2020 presidential and governor races, are allocated from historical polygons onto 2026 precincts using 2020 adult-population shares. This assumes uniform candidate support inside each original precinct. It does not recover individual ballots or exact votes in newly drawn precincts.
Exact IDs are preferred, followed by unique normalized codes or names within the same county. Unmatched records stay visible and are excluded from modeled vote totals. Other-party votes are preserved but the seat model compares D and R only.
Scenarios, joins & unmatched records ↓Dragging clears the unlocked map and gathers a live, connected blob of actual precincts near the pointer. Its population stays near the district target and its color uses the combined totals for the selected political or demographic layer. On release, that exact set of precincts stays fixed while the remaining districts rebuild. Locks retain exact membership and nested children stay inside their parents. Selection uses population and geography, not political data. Undo restores the previous map.
The blended baseline averages four precinct two-party shares equally (2020/2024 President and Governor), then weights district aggregation by mean turnout. Optional uniform swing changes margin points with precinct shares capped at 0–100%. These produce comparison weights, not actual vote totals.
The designer recursively partitions randomized spanning trees, then moves boundary precincts while checking both affected districts for connectivity. Population deviations are heavily penalized. Compact mode penalizes cut adjacency edges. Winding mode allows connected corridors and balanced precinct exchanges in pursuit of the selected objective; it does not reward extra jagged edges. Blind mode strips election votes before passing data to the generator. County preservation penalizes unnecessary county fragments, while allowing large counties to span multiple districts. Neither is a guarantee of a global optimum.
Proportional balance targets a Democratic seat share near the chosen statewide two-party vote share. Toss-up districts have an absolute two-party margin under 5 percentage points. The optional yellow view marks those districts. Seat-target and proportional searches prioritize the party goal over soft county and shape preferences after population balance; they test connected regional repartitions as well as local exchanges. Population error now ranks first, followed by a dedicated connected exchange pass that keeps reducing differences, even below the chosen target. Seat targets are search goals; unmet goals are reported. Approximate Polsby–Popper scores use source polygon perimeters, include water territory, and are analytical measures only.
Each page load and new generation uses a fresh random seed by default. Connected, population-aware growth regions are reserved before one random starting precinct in each expands. That flood fill becomes the actual starting plan for optimization. The completed regions carry straight into connected boundary exchanges, neighboring-region refinements and population repair; a separate initializer does not replace the displayed map. County-aware starting cuts and stronger county penalties reduce unnecessary fragmentation. These remain search preferences; large counties may require multiple districts. A fixed seed helps reproduce the search path, but time-limited runs can differ by device speed. Exported assignments are the authoritative way to reproduce a result.
The larger requested seat count determines the favored party. An equal split protects wins for both parties. The search pursues the requested count, then gives diminishing returns to larger margins so strengthening vulnerable seats is worth more than adding votes to already strong seats. “Allow one narrow win” excludes the weakest favored seat from margin scoring while still requiring it to remain a win. Five margin points is the existing toss-up display threshold, not a forecast or a guarantee of winning. The current historical baseline and uniform swing feed both the seat target and margin objective. Population, contiguity, locks and nested containment remain constraints.
Nested generation draws State House districts first. It then searches connected groups of the requested number of State House districts per State Senate district, followed by connected groups of State Senate districts per U.S. House district. Merge swaps pursue the selected generation mode while keeping the required child counts exact. Descendants never move outside their parent. All three levels are checked for polygon connectivity and containment; population deviation is reported against each level’s statewide ideal. The example 14 → 42 → 168 hierarchy is hypothetical.
Geographic overlays include 17 NCDEQ river basins, 43 named USGS major-river features and 125 named water polygons. The View menu also includes official Census 2025 interstate and major-highway layers. City labels are placed with screen-space collision checks. These selected small-scale features do not include every stream, mountain ridge or local obstacle.
“Follow major rivers” penalizes joining adjacent precincts across a river-aligned shared boundary: at least 500 metres and 25% of that boundary must lie within 250 metres of a selected river centerline. “Keep river basins together” discourages separating neighboring precincts assigned to the same dominant-area basin. These are approximations and soft preferences; the tool does not remove geographic connections, assume rivers are impassable, or guarantee that a district follows a river. Precincts that straddle a basin or river remain whole.
The seat diagram follows the US-style arch concept in Parliament Diagrams. It uses the reference election graphic’s 14, 50 and 120 seat placements and original rendering code. Map-derived seats reflect the selected historical two-party scenario; custom diagrams may also include independent and vacant seats.
Physical-geography provenance & hashes ↓Demographic views support civil-rights review and representation analysis. This tool does not optimize dilution of a racial or ethnic group’s voting power, and it does not equate maximizing the number of majority-minority districts with maximizing electoral opportunity. Racially polarized voting and current legal requirements require further analysis.
The optional strict NC Senate mode explores all 16 optimal grouping arrangements identified by the 2020 Census county/population analysis. Each has 26 groups covering all 100 counties and allocating 50 seats. Seventeen groups are fixed; four regions each have two alternatives. A seed determines the exploration order, or you can select a specific arrangement. The adopted 2023 arrangement remains available, and saved plans record the exact grouping used. It checks group containment, seat counts, minimum traversals, district and county-piece connectivity, and population within ±5% of the statewide ideal. Invalid results are rejected rather than displayed as compliant. Neutral mode uses only population and geography. Favor Democrats or Favor Republicans searches for more seats under the selected election comparison while keeping compact shapes and all strict rules. Manual redrawing requires turning strict mode off. The other modes retain soft county preferences. Grouping data and official sources. Grouping validation does not certify compliance with the Voting Rights Act or all other legal requirements. Congressional population equality generally requires block-level splitting, beyond this whole-precinct tool. A connected plan with a favorable metric is still an experimental plan.