US Voters Rejected Data Centers 45 to 1: What Buyers Learn

US Voters Rejected Data Centers 45 to 1: What Buyers Learn

US Voters Rejected Data Centers 45 to 1: What Buyers Learn

Short answer (checked 2026-11-05): On 3 November 2026, 47 local ballot measures about data centers went to voters in 10 US states. By the morning of 5 November, 46 had votes counted, and the restrictive side was ahead in 45 of them. The one exception was Harwood, North Dakota. Across the 258,201 votes counted, 72.8% went to the side that limits data centers. We downloaded the tracker's raw files and recounted them ourselves. The pattern is broad: bans and megawatt caps written into city charters, rezonings overturned, moratoria in small Maine towns. If you rent cloud or dedicated servers, the takeaway is simple. Capacity that already stands, with power and permits, is worth more than capacity on a developer's roadmap.

Sources. Results: "Data Centers on the Ballot" by Redbud Consulting (datacentersontheballot.com). The counts are unofficial until each county certifies them, and the tracker keeps updating through 13 November. Coverage: Semafor (J.D. Capelouto), 404 Media (Matthew Gault) and The Register (Dan Robinson), all 2026-11-04, plus a Hacker News thread with 325 points and 657 comments. The press counts differ ("more than 30 localities", "more than 40 races") because each counted at a different hour and by a different rule. The figures below are our own recount.

What was on the ballot

This was not one kind of vote. The tracker maps every question to two sides, Restrict and Allow, because YES means opposite things on different ballots. A NO vote on "should the council approve data centers" counts as Restrict. The measures fall into five main groups:

Kind of measure Examples Result (restrict share)
Megawatt cap in the city charter Sunbury, Pataskala, Piqua (Ohio): no data center over 25 MW 10 of 10 caps at 25 MW passed
Outright ban Hubbard (Ohio), any size; Edgewater (Florida), including colocation 76.6% and 77.2%
Rezoning referendum Wilmington (Ohio): four parcels of 65 to 191 acres rezoned for data centers All four overturned, ~80%
Moratorium Seven Maine towns, mostly 180-day pauses 65.7% to 81.9% in the six counted
Advisory question Seven Illinois townships and counties, two in New Jersey, one in Ohio Non-binding, 74.4% to 88.3%

Two details matter for anyone who buys hosting rather than builds it. First, the caps are low. 25 MW is the most common line, and Emporia and El Dorado in Kansas set it at 10 MW. Second, "small" does not mean "exempt". Edgewater's charter ban names cloud, AI, crypto-mining and colocation facilities. Hubbard's ban has no size threshold at all. Urbana, Ohio exempts only private facilities under 7.5 MW that serve a single organisation, so a multi-tenant hosting site is in scope.

Recount it yourself: dc_ballot.js

The tracker's page loads two public files: data/races.json (one record per measure: state, type, who put it on the ballot, megawatt threshold, what YES means) and data/results.json (votes per side, refreshed from county results pages). This script joins them and groups the result. Save it as dc_ballot.js:

// dc_ballot.js - tally the Nov 3, 2026 US data center ballot measures
// data: Redbud Consulting's datacentersontheballot.com (races.json + results.json)
// usage: bun dc_ballot.js [dir]   (dir holds races.json and results.json)
const dir = process.argv[2] || '.'
const races = await Bun.file(`${dir}/races.json`).json()
const res = await Bun.file(`${dir}/results.json`).json()
if (res.simulated) throw new Error('results.json is simulated, not real returns')
const meta = new Map(races.races.map(r => [r.race_id, r]))
const rows = res.races
  .map(x => ({ ...x, m: meta.get(x.race_id) }))
  .filter(x => x.m && x.m.election_date === res.election_date)
const counted = rows.filter(x => x.restrict_votes + x.allow_votes > 0)
const sum = (a, k) => a.reduce((s, x) => s + (x[k] || 0), 0)
const pct = (a, b) => (100 * a / b).toFixed(1) + '%'
const R = sum(counted, 'restrict_votes'), A = sum(counted, 'allow_votes')
console.log(`races.json ${races.generated_at}, results.json ${res.generated_at}`)
console.log(`measures on ${res.election_date}: ${rows.length}, with votes: ${counted.length}`)
console.log(`restrict ahead: ${counted.filter(x => x.restrict_votes > x.allow_votes).length},` +
  ` allow ahead: ${counted.filter(x => x.allow_votes > x.restrict_votes).length}`)
console.log(`votes: ${R + A}, restrict pooled ${pct(R, R + A)}`)
const group = (title, key) => {
  console.log(`-- by ${title}`)
  const g = new Map()
  for (const x of counted) {
    const k = key(x)
    const v = g.get(k) || { n: 0, win: 0, r: 0, a: 0 }
    v.n++; v.win += x.restrict_votes > x.allow_votes; v.r += x.restrict_votes; v.a += x.allow_votes
    g.set(k, v)
  }
  for (const [k, v] of [...g].sort((a, b) => b[1].n - a[1].n))
    console.log(`${String(k).padEnd(18)} ${String(v.n).padStart(3)} measures, restrict won ${v.win}, ${pct(v.r, v.r + v.a)} of votes`)
}
group('state', x => x.m.state)
group('origin', x => x.m.origin)
group('megawatt cap', x => x.m.threshold_mw ? `${x.m.threshold_mw} MW` : 'no MW figure')
console.log('-- closest (restrict share under 60%)')
for (const x of counted.filter(x => x.restrict_votes / (x.restrict_votes + x.allow_votes) < 0.6))
  console.log(`${x.m.state} ${x.m.jurisdiction}: ${pct(x.restrict_votes, x.restrict_votes + x.allow_votes)} restrict (${x.restrict_votes + x.allow_votes} votes)`)
curl -sLo races.json https://datacentersontheballot.com/data/races.json
curl -sLo results.json https://datacentersontheballot.com/data/results.json
bun dc_ballot.js .

Output, run on a DCXV Cloud server with Bun 1.4.4 on 2026-11-05 (files fetched at 07:01 UTC):

races.json 2026-11-04T14:12:33-0500, results.json 2026-11-05T01:34:31-0500
measures on 2026-11-03: 47, with votes: 46
restrict ahead: 45, allow ahead: 1
votes: 258201, restrict pooled 72.8%
-- by state
OH                  21 measures, restrict won 21, 69.0% of votes
IL                   7 measures, restrict won 7, 79.3% of votes
ME                   7 measures, restrict won 7, 76.3% of votes
KS                   4 measures, restrict won 4, 66.3% of votes
NJ                   2 measures, restrict won 2, 79.0% of votes
WI                   1 measures, restrict won 1, 62.8% of votes
CA                   1 measures, restrict won 1, 82.2% of votes
NV                   1 measures, restrict won 1, 70.5% of votes
FL                   1 measures, restrict won 1, 77.2% of votes
ND                   1 measures, restrict won 0, 24.4% of votes
-- by origin
citizen_petition    23 measures, restrict won 22, 69.4% of votes
council_referred    17 measures, restrict won 17, 77.7% of votes
court_ordered        4 measures, restrict won 4, 70.0% of votes
charter_commission   1 measures, restrict won 1, 76.9% of votes
electors_meeting     1 measures, restrict won 1, 77.6% of votes
-- by megawatt cap
no MW figure        30 measures, restrict won 30, 76.3% of votes
25 MW               10 measures, restrict won 10, 70.2% of votes
20 MW                2 measures, restrict won 2, 55.8% of votes
10 MW                2 measures, restrict won 2, 64.2% of votes
50 MW                1 measures, restrict won 1, 87.1% of votes
100 MW               1 measures, restrict won 0, 24.4% of votes
-- closest (restrict share under 60%)
OH City of Grove City: 54.6% restrict (20728 votes)
OH Sprigg Township: 52.6% restrict (627 votes)
OH Monroe Township: 59.7% restrict (248 votes)
ND City of Harwood: 24.4% restrict (430 votes)

How to read it:

  • Ohio is the centre. It held 21 of the 47 measures, and Restrict won all 21. Most were 25 MW charter caps. Sunbury's passed with 78.6% in a city where Amazon has proposed a campus of about $2 billion.
  • Councils lost on their own questions. In 17 of the measures a council itself put the question on the ballot, and Restrict won all 17 with 77.7% of the votes. That is a higher share than on citizens' petitions (69.4%).
  • The one Allow win was not a vote for data centers. Harwood rejected a charter rule that would have required a developer-paid review before approving large industrial projects (100 MW threshold). Grove City, Ohio was still counting at 54.6%: its measure requires a citywide vote for any project over 50 acres, 20 MW or 500,000 gallons of water a day.
  • One measure has no count yet. Brownfield, Maine had posted no results. The tracker also lists 12 measures decided earlier in 2026, which the script leaves out.

Beyond the ballots

The local votes came with state-level results that point the same way. In Texas, Democrat Gina Hinojosa defeated Governor Greg Abbott. She supports a temporary moratorium on data center construction (The Register, 2026-11-04). A Data Center Watch survey of 74 candidates in the 36 governor races found 43% backing a ban or moratorium and 51% backing further regulation or conditions. Semafor reports that banks and asset managers have started treating local opposition as a credit risk. Developers will pay for that risk through higher financing costs, and customers through their prices.

What it means if you rent servers

  1. Buy capacity that exists. A rezoning can be overturned and a charter cap can kill a planned campus. Wilmington's voters overturned four data center rezonings in one evening. If a provider sells you future capacity in a new US region, ask whether the building is energised and fully permitted today. Racks in an existing building are what you can actually count on. We run in two existing Tier III facilities, compared in our guide to Tier III data centres in Europe.
  2. Do not assume small sites are exempt. Edgewater's ban names colocation explicitly. The US resistance is not only about hyperscale AI campuses. For the reasons residents give (water, grid, noise), see our recount of 10,000 US council comments.
  3. Keep the workload portable. Spreading across regions protects you only if you can actually move. Keep images, backups and DNS in a form you can restore elsewhere, as in our cloud migration checklist. If you hold ARIN IPv4 space and move workloads to Europe, the block can follow: see inter-RIR transfers from ARIN to RIPE.

Existing capacity in Europe

Our cloud servers and dedicated servers run in Tier III data centres in Prague and Covilha that are already built, powered and in service. Write to sales@dcxv.com with the size of the workload and where its users are, and we will tell you which site fits and what it costs.

US Voters Rejected Data Centers 45 to 1: What Buyers Learn
clouddedicatedinfrastructure

US Voters Rejected Data Centers 45 to 1: What Buyers Learn

On 3 November 47 US ballot measures on data centers went to voters and the restrictive side won 45. We recount the raw data: what it means for server buyers.

AWS BYOIP in 2026: $43.80 per IPv4 vs Your Own /24
ipv4pricingcloud

AWS BYOIP in 2026: $43.80 per IPv4 vs Your Own /24

AWS bills $0.005 an hour per public IPv4, $43.80 a year. BYOIP addresses carry no charge: when a bought or leased /24 pays back, with a ROA readiness script.

Leaving VMware After Broadcom: A Checked Migration Guide
clouddedicatedinfrastructure

Leaving VMware After Broadcom: A Checked Migration Guide

Broadcom ended perpetual licences, cut partners and hid VDDK. How EU teams move VMs to KVM, Proxmox or Hyper-V, with dated facts and a tested OVA converter.

DNS Propagation Time: Cloudflare's 3 Seconds vs Your TTL
networkingcloudinfrastructure

DNS Propagation Time: Cloudflare's 3 Seconds vs Your TTL

Cloudflare cut its DNS build delay to about 3.3 s. A cutover still waits on TTLs, negative caching and a 2-day .com delegation. We measured them on two zones.

What 10,000 US Council Comments Mean for Data Center Buyers
clouddedicatedinfrastructure

What 10,000 US Council Comments Mean for Data Center Buyers

A new dataset codes 10,202 US council comments on data centers: 90.5% opposed, water first. We recount it and show what it means for server buyers in Europe.