Methodology · Current model

How every U.S. county is graded

A transparent, primary-source method for scoring utility-scale solar permitting risk across all 3,143 U.S. counties — what we measure, how it's weighted, and how a 0–100 score becomes a letter grade.

Updated July 2026 · Reviewed quarterly · When the model changes, every historical score is recalculated so trends stay comparable.
0–100 scoreLower is better — a weighted blend of six signals from our own database.
A–F gradeDecision-useful bands, from 0–30 (A) to 67+ (F).
Primary-sourcedEvery published figure verified against the government document.
Quarterly review8 quarters of score history on National & higher plans.

The composite score

Every county receives a risk score from 0 to 100, where lower is better for solar developers. It's a weighted blend of six signals — all drawn from our own primary-sourced database — and the weights below sum to 100%. In the app's Map controls, every one of these is a slider you can reweight to your own priorities.

30% Opposition
24% Compliance
16% Trajectory
12% Saturation
10% RPS
8% Uncertainty
30%
Community Opposition
Organized local resistance — groups, petitions, and active campaigns — from our source-linked opposition dataset, weighted by how recent and active each signal is. The single heaviest factor: opposition is what most often stalls or kills a project.
24%
Compliance Stringency
Setbacks, acreage caps, SUP requirements, and bans — plus a permit-record adjustment from actual approvals and denials.
16%
Regulatory Trajectory
The direction of change over the past 12 months — tightening, stable, or loosening.
12%
Market Saturation
Installed MW, land coverage, and developer density relative to county size.
10%
State RPS
The state's renewable-portfolio posture for solar — binding target, solar carve-out, community-solar program. A binding standard lowers risk; having no standard is neutral, never a penalty.
8%
Data Uncertainty
Our confidence in the data for this county. A deliberately light weight, kept only as a tunable lever — it never dominates a grade.
Missing a signal? We renormalize — we never fake a zero. Opposition data is geo-confirmed and source-linked, so it exists for the counties where we've verified it (about a sixth of all counties carry a confirmed signal today). Where a county has no confirmed opposition — or any other missing factor — that factor is dropped and the remaining weights are rescaled, so a gap neither helps nor hurts the score. Each county also carries a data-confidence label reflecting how many signals were present.

Grade scale

Lower number = lower permitting risk. A score of 0 is the best possible outcome (Grade A); above 66 is Grade F. This is the opposite of academic grading — the lower the score, the more permitting-friendly the county.
A
0–30 · Low
B
31–42 · Moderate
C
43–52 · Elevated
D
53–66 · High
F
67+ · Very High
Cutoffs held at 30/42/52/66 since May 2026. That recalibration tightened them from the original 35/47/58/72 because the distribution was compressed — roughly 65% of counties sat in the B band. Every revision since has kept these cutoffs: after promoting opposition to the heaviest factor, the letter grades now spread cleanly across the curve on their own, so the bands stay put and remain consistent everywhere on the site.

What changed

The August 2026 review corrected two places where the model was penalizing counties for things that aren't evidence of siting difficulty. Both changes can only lower a risk score, never raise one.

August 2026 · A queue placeholder is no longer counted as development pressure

The Saturation factor counts utility-scale solar activity in a county. It already ignored withdrawn and cancelled projects, but it still counted interconnection-queue rows carrying no project name and no capacity — filings that tell us a request exists at a point on the grid and nothing else. Those were 14% of everything counted, all from one queue, and they dominated the signal in several states: they made up 97–100% of the saturation input in Minnesota, Wisconsin, Mississippi, Iowa, Michigan, Arkansas and Louisiana. A row now needs a name or a capacity to count — either one alone is enough, so a named project with undisclosed capacity still counts, and so does an unnamed filing with real megawatts.

August 2026 · The absence of a state RPS is no longer scored as risk

The State RPS factor treated "this state has no binding Renewable Portfolio Standard" as near-maximum risk. That was wrong: plenty of states without an RPS build utility-scale solar on utility procurement instead, and the absence of a state mandate is not a local siting obstacle. Measured across every scored county, this one factor was deciding the letter grade for 949 of them, concentrated in the South and Plains. A state with no binding standard now scores the same as one with a weak standard — neutral, not penalized. A binding standard still earns a genuine tailwind, so states like Illinois and Virginia keep that credit, and the State policy badge still reports the real posture. Only its effect on the score changed.

Still open: an RPS that has already been achieved (Texas met its 5,880 MW standard in 2009) or weakened since passage drives no new procurement, but is currently scored the same as any other non-binding posture. Grading on remaining unmet obligation requires attainment data we only partly hold.

July 2026 · Opposition is now a first-class, heaviest factor

Organized community opposition used to sit beside the grade as context only. It's now 30% of the score — the single largest weight — because verified local resistance is what most often stalls or defeats a utility-scale project. It's computed from our source-linked opposition dataset and weighted by how recent and active each signal is.

July 2026 · Rebalanced weights, uncertainty demoted

The composite is now 30% Opposition + 24% Compliance + 16% Trajectory + 12% Saturation + 10% State RPS + 8% Uncertainty. "Data uncertainty" — a measure of how complete our data is, not of real-world risk — dropped from 20% to a light 8% and is now surfaced mainly as a data-confidence label. State RPS posture, previously a context badge only, contributes a modest 10%. All six are tunable sliders in the app's Map controls.

July 2026 · Missing signals renormalize — never faked

Every sub-score comes from primary-sourced data. When a county lacks a signal (most commonly a confirmed-opposition record), that factor is dropped and the remaining weights are rescaled rather than filled with a zero — so an absence of evidence is never treated as evidence of calm.

Hybrid weight formula (carried forward from the May 2026 model)

Compliance still carries a permit-record adjustment from actual approvals and denials, and the composite is read from a single config file so weights can be re-tuned and history re-scored without touching code.

Permit-record adjustment (Bayesian smoothing)

We compute each county's approval rate from recorded utility-scale permit decisions, adding a penalty below 30% or a small bonus above 80%. For counties with sparse history (0–2 decisions), the observed rate is blended with the state's base rate using Beta-Binomial smoothing — every county starts from its state average and moves toward its own record as decisions accumulate. Each output carries a confidence level: high (≥3 decisions), moderate (1–2), or preliminary (0, shown with a "Preliminary score" badge). It moves grades toward actual board behavior without ever treating a quiet county as if it had rejected solar.

Moratorium hard cap

Any county with an active utility-scale solar moratorium is scored at the worst-possible value (100, Grade F) regardless of its sub-scores. An active moratorium means the site is functionally closed — the underlying numbers don't override that.

Two context badges

Shown next to the grade but kept separate from the score, so a weak county in a strong-policy state still reads as weak. State policy (Favorable / Mixed / Hostile) reads the state's RPS framework. Site constraints (Light / Moderate / Heavy) flags conservation easements, prime farmland, federal-land overlays, and FEMA floodplain — and only appears when we have constraint data; no badge means unknown, not unconstrained.

Worked example — Mecklenburg County, VA

How the factors combine into a score of 61.5 (Grade D) for Mecklenburg County, Virginia (FIPS 51117). Every number on this page is read from that county's live record when the page is built — if its score moves, this example moves with it.

35
Community Opposition · 30.0%
Organized local resistance on record, weighted by recency and activity. Contributes 10.5 to the composite.
100
Compliance Stringency · 24.0%
Setbacks, acreage caps, SUP requirements and bans, adjusted by the county’s actual permit record. Contributes 24.0 to the composite.
75
Regulatory Trajectory · 16.0%
The direction of change over the past 12 months. Contributes 12.0 to the composite.
80
Market Saturation · 12.0%
Installed MW, land coverage and developer density relative to county size. Contributes 9.6 to the composite.
20
State RPS · 10.0%
The state’s renewable-portfolio posture. A binding standard lowers risk; no standard is neutral. Contributes 2.0 to the composite.
50
Data Uncertainty · 8.0%
How complete the record is for this county. A deliberately light lever. Contributes 4.0 to the composite.

All six factors are on record for this county, so nothing renormalises here — each contributes its full weight.

The arithmetic. 35×30.0% + 100×24.0% + 75×16.0% + 80×12.0% + 20×10.0% + 50×8.0% = 62.1, published as 61.5 after rounding and sub-factor detail. Grade D on the 30/42/52/66 scale. Data confidence for this county: high, across 27 source records.

Renormalisation is not an edge case: 1,968 of 3,143 counties currently have no confirmed opposition signal on record and are scored on their remaining factors. A county is never penalised for a gap in our data, and never credited for one either.

Data sources

Monitoring and discovery sources. Every published data point is verified against the primary government document before it ships.

MAREC ActionMid-Atlantic solar policy tracking
GreeneHurlockerMidyear solar permitting reports
Cardinal NewsVirginia / Appalachia energy reporting
Columbia Law · Sabin CenterClimate & regulatory tracking
NC Clean Energy Technology CenterNorth Carolina solar policy
Flatwater Free PressNebraska energy reporting
Beatrice Daily SunNebraska local government coverage
Indiana Solar StatusIndiana solar project tracking
Ohio Capital JournalOhio energy policy reporting
Primary documents anchor every score. Direct county-government URLs — ordinance text, board minutes, zoning amendments — sit beneath each grade, and all source links appear in each county's data panel.

Update cadence

Active moratoria are updated within 24 hours of filing. Ordinance changes are typically reflected within one week. Full scoring-model reviews run quarterly, and 8 quarters of score history are available on National and higher plans.

Explore the data

See how your target counties score — every grade is sourced to the underlying primary document.

We use essential cookies for authentication and optional analytics. Privacy Policy