How we score schools
SchoolScope scores 87.2% of California's choosable public and charter schools (8,625 of 9,892), 0–100, from official CDE data. Elementary and middle schools: 42% exceeded standard, 23% met+exceeded, 20% growth, 5% absenteeism, 5% suspension, 5% ELPAC proficiency. High schools replace growth with graduation rate (25%) and college readiness (20%). Schools where enrollment is assigned rather than chosen — juvenile court, community day and special-education schools — publish their underlying numbers without a score; a further 1,267 choosable schools go unscored for other reasons — most often (41.1% of that group) because their grade configuration never reaches a scoreable grade pair for their level (a grades 7-8 school has no grade 6 to pair with grade 8, for instance) — not a data gap; see peer classes and limitations.
Three lenses, one score
The Scope Score draws from two of three lenses we use to understand a school. The third lens provides context you can see — but it never feeds the score.
Academic Performance
How many kids go past proficiency, not just to it?
- % Exceeded Standard
- % Met + Exceeded
- Growth Trajectory (elem + middle)
- High school adds: Graduation Rate, College Readiness
School Climate
Do kids show up, stay engaged, and feel supported?
- Chronic Absenteeism (inverted)
- Suspension Rate (inverted)
- ELPAC Proficiency (English Learner progress)
Community Profile
Who goes here, and what resources does it have?
- Student demographics
- Free/Reduced Lunch %
- Per-Pupil Spending
- Equity gaps by subgroup
- Student-Teacher Ratio
Lenses 1 and 2 feed the Scope Score. Lens 3 is displayed on every school profile so you can see the full context — but it is never part of the score. Why? Read our full reasoning below.
How is the Scope Score calculated?
Every scored school gets a single Scope Score from 0–100, built from weighted signals. The weights differ by school level because the available data — and what matters most — changes as students progress.
| Signal | Lens | Elementary | Middle | High School |
|---|---|---|---|---|
| % Exceeded Standard | Academic | 42% | 42% | 22% |
| % Met + Exceeded | Academic | 23% | 23% | 18% |
| Growth Trajectory | Academic | 20% (G3→G5) | 20% (G6→G8) | — |
| Graduation Rate | Academic | — | — | 25% |
| College Readiness (CCI) | Academic | — | — | 20% |
| Chronic Absenteeism (inv.) | Climate | 5% | 5% | 5% |
| Suspension Rate (inv.) | Climate | 5% | 5% | 5% |
| ELPAC Proficiency | Climate | 5% | 5% | 5% |
| Total | 100% | 100% | 100% |
When a signal is unavailable for a school (e.g., no chronic absenteeism data), the weight is redistributed proportionally across available signals. Schools without sufficient data are not ranked.
How scores are computed
Each dimension is measured relative to the California state average for schools at the same level. The size of the gap matters — not just whether a school is above or below average.
A school with 70% of students exceeding the standard ranks meaningfully higher than one at 55% exceeded, even though both are well above average. The score reflects how far above average each school lands, not just its position in a sorted list.
The final Scope Score doesn't land on the same average for every level, so we don't print one round number here that would go stale the next time CDE publishes new data — we compute it live instead. Right now, in our statewide ranked pool (comprehensive schools — continuation and DASS-flagged alternative schools are scored too, just ranked within their own peer class, so they're not counted in these averages), California's elementary schools average 38.9 out of 100, middle schools 38.6, and high schools 54.0. These three numbers aren't comparable to each other: every dimension is standardized inside its own level, then each level's scores are stretched onto the same fixed range, so a level's average says nothing about how that level stacks up against another — three different centers, not one ranking. A school scoring well above its own level's average is meaningfully outperforming its peers on the weighted dimensions above; one scoring below it is trailing them. Within a level, the scale is consistent, so a 10-point difference at the top of the range means the same thing as a 10-point difference in the middle. For where a score turns into a Strong, Solid, Developing or Needs Support band, see how bands are set.
This approach is different from systems that rank schools by position (1st, 2nd, 3rd) and then compress everything to a 1–10 scale. With position-based ranking, the school ranked 1st and the school ranked 200th might be nearly identical in actual performance — the rank just doesn't tell you that. Our scoring preserves the real distance between schools.
What each metric means
% Exceeded Standard — the ceiling
Most rating sites report "% proficient" — students who met or exceeded the standard. This hides a crucial difference.
Consider two schools, both "70% proficient":
- School A: 50% exceeded, 20% met — a school where half of students land above the standard, not just at it
- School B: 10% exceeded, 60% met — a school where most students reach the standard but don't go further
The exceeded rate gets the highest academic weight in our Scope Score formula because it shows how many of a school's students go beyond the standard, not just meet it. Read: Why 80% “met or exceeded” can mean two different schools →
What this number is, exactly. California reports English language arts and mathematics separately, for one grade at a time, and it never publishes the two combined. The single "% exceeded" on a SchoolScope profile is our own unweighted average of every grade-and-subject figure the state published for that school at that level — grades 3, 4 and 5 for elementary, 6, 7 and 8 for middle, grade 11 for high school, each in both subjects. The inputs are the state's; the combination is ours. Look a school up on the CDE's own reporting site and you will find a grid of percentages rather than one number, so expect ours to differ from any single cell in it.
% Met + Exceeded — the floor
This is baseline proficiency: what percentage of students clear the bar? It ensures we don't ignore schools that reliably get students to grade level, even if they aren't pushing many past it. The ceiling and floor together paint the full picture.
Growth Trajectory — two numbers, and only one of them is scored
This is the part of our methodology most likely to mislead you if we explain it badly, so here is the whole thing. Two different numbers get called "growth" in California school data. They disagree about which direction a school is moving for more than half of the schools in the state.
Cohort growth — this is what the Scope Score weights. We follow the same school's cohort across years: 2023's 3rd graders measured again as 2025's 5th graders. It's measured in SBAC scale scores, which are IRT-calibrated and vertically equated — built by the testing vendor for exactly this cross-grade, cross-year comparison. 82.2% of scored elementary schools (4,711 of 5,732) and 70.1% of scored middle schools (1,547 of 2,208) carry this figure. A school that doesn't gets no growth figure at all, rather than a substitute number.
The grade gap — context only, never scored. This year's 5th graders against this year's 3rd graders, in proficiency percentage points. Those are two different sets of children. And the proficiency bar itself rises with each grade, so a school can move every student forward and still post a negative gap. Where we show this number at all, we label it and we don't colour it by sign, because its sign is mostly the bar moving rather than the school slipping.
It also means a raw cohort number is nearly worthless on its own. Almost every school gains scale points between grade 3 and grade 5, because children get older and learn more — that's normal development, not evidence a school adds value. So growth only says something once it's compared with every other school at the same level. That's what the score does, and it's why every SchoolScope surface leads with a school's relative growth position — a 0–100 index centred on 50 — rather than the scale-point number itself. The index is a rescaled position, not a percentile: 50 is the state average, and most schools sit between 35 and 65.
We also won't make a growth claim off a handful of children. Below the tested-student floor, a few points is one or two kids having a good morning, so those schools get no growth label in either direction — not a bad one.
High schools don't have a growth component at all because California only tests at grade 11 — there's no earlier tested grade to compare against. That weight is redistributed across the dimensions we do have; we don't invent a proxy.
Chronic Absenteeism — a culture signal
Chronic absenteeism measures the percentage of students who miss 10% or more of school days. It's one of the strongest predictors of academic outcomes and reflects school culture, family engagement, and community stability.
It's inverted in our formula — lower absenteeism means a higher score. It carries more weight at elementary and middle (5%) than high school (5%) because engagement patterns are established early.
Suspension Rate — discipline philosophy
Suspension rate measures the percentage of students suspended at least once. High suspension rates often indicate a discipline-heavy culture rather than a supportive one, and disproportionately affect underserved communities. Also inverted — lower is better.
Graduation Rate — the biggest high school weight
Graduation rate carries 25% of the high school Scope Score — the single largest weight — because it's the most consequential outcome. A high school that doesn't graduate its students isn't delivering on its most basic promise, regardless of test scores. We use the Adjusted Cohort Graduation Rate (ACGR) published by the California Department of Education.
College Readiness (CCI) — what happens after graduation
California's College/Career Indicator (CCI) measures the percentage of graduates who completed the requirements for college or career readiness — things like completing A-G coursework, passing AP exams, earning career technical education certifications, or meeting other state-defined criteria. At 20% of the high school Scope Score, it rewards schools that prepare students for what comes next, not just for the diploma.
ELPAC Proficiency — English Learner progress as a school climate signal
ELPAC is California's English Language Proficiency Assessments for California. It measures the English proficiency of students identified as English Learners across four domains: listening, speaking, reading, and writing. We use the percentage of English Learner students at a school who reach Level 4, "Well Developed" — the highest proficiency tier.
We classify ELPAC in the School Climate lens rather than the Academic Performance lens. The reasoning: a school where English Learner students are progressing toward full proficiency is delivering on its instructional mission for every student it serves — that's a climate and culture signal, not just a test score.
ELPAC carries 5% of the Scope Score at all three levels. When a school has no English Learner students, this weight redistributes proportionally across the remaining dimensions. No school is penalized for not having an EL population — we simply work with the data that exists.
Data sources
All data is publicly available. No restrictions on commercial use. Our current test year is 2025.
- CAASPP Smarter Balanced AssessmentELA and Math test scores, grades 3–8 and 11
- ELPAC (English Language Proficiency Assessments for California)English Learner proficiency levels — scored at 5% weight at every level
- CDE SACS Current Expense of EducationDistrict current expense per student, annual — context only, never scored
- CDE Chronic Absenteeism DataSchool-level chronic absenteeism rates
- CDE Suspension DataSchool-level suspension rates
- CDE Graduation Rate (ACGR)Adjusted Cohort Graduation Rate by school
- CDE College/Career Indicator (CCI)College and career readiness rates
- CDE College-Going RatePercentage of graduates enrolling in postsecondary education
- NCES Common Core of Data (CCD)Enrollment counts, student-teacher ratios, free/reduced lunch
- CDE Census Day EnrollmentRace/ethnicity and gender breakdown by school (GN_F / GN_M / GN_X reporting categories)
- NCES School Attendance Boundary Survey (SABS)Attendance boundaries used for feeder pattern estimation
Six of the eleven sources above feed the Scope Score formula directly — CAASPP, ELPAC, Chronic Absenteeism, Suspension, ACGR, and CCI. The rest (SACS current expense, College-Going Rate, NCES CCD, Census Day Enrollment, and SABS) are shown as context on school and district pages and never scored, the same "context only" rule marked on SACS above. For our complete data source inventory across all 20+ public datasets — including the UC admissions, College Board AP authorization, IB programme, and federal CRDC data shown on school profiles as context (never scored), plus district pages and community context — see our About page.
How we correct for biases
Raw data has built-in biases that make comparisons unfair. We apply four corrections before computing any ranking. We make judgment calls. Here's exactly what they are.
Grade-test difficulty: a correction we don’t need
5th grade tests are harder than 3rd grade tests. If a school’s score averaged raw proficiency across grades, a school teaching harder grades could look worse than it is.
We built a correction for this, and in August 2026 we discovered it had never actually run — it was computed and then discarded before the score was calculated. So we tested whether it was needed. It isn’t. Each Scope Score already covers one grade band: an elementary score uses grades 3–5 only, and a K–8 school’s grades 6–8 go to its separate middle-school score. 99.5% of elementary schools are therefore compared on an identical set of grade-subject cells, and a difficulty difference shared by everyone cancels out.
We removed the dead code rather than switch it on. Correcting a bias that isn’t there costs accuracy: switching it on measurably lowered year-over-year reliability.
Technical details
value − cellMean + grandMean — which removes the same bias at no reliability cost.Scale-score growth
Measuring growth by comparing 3rd-grade and 5th-grade pass rates is misleading — it conflates "did students learn more?" with "is the 5th-grade test harder?" A school could genuinely improve every student and still show flat or negative growth because the bar moved.
California's CAASPP test publishes scale scores specifically designed to be comparable across grades — the same measurement framework the testing vendor built for exactly this comparison. We measure growth using those scale scores, not pass-rate differences.
We use the tool the way it was designed to be used.
Technical details
mean(mean_scale_score, current-year high grade) − mean(mean_scale_score, prior-year low grade) — see cohort tracking below. Smarter Balanced scale scores are IRT-calibrated and vertically equated across grades. The expected population gain from G3 to G5 is roughly 35–70 scale score points, and in our 2025 data the elementary average is about 75 — which is exactly why the raw number is never read directly. The growth score is scaled relative to the state average for the level, so what enters the composite is the school's position among its peers, not its scale-point total. Separately, we store growth_g3_g5 = mean(pct_met_above, high grade) − mean(pct_met_above, low grade) for the same year — the grade gap. It is in percentage points, it compares different students, and it does not enter the score.Small-school stability
A school with 12 students tested can swing wildly from year to year — not because the school changed, but because of natural variation in a small group. Raw scores from tiny cohorts create false precision.
Schools with fewer tested students have their metrics adjusted slightly toward the statewide average. A school with 15 students tested gets more adjustment; a school with 300 gets almost none. This prevents small sample sizes from distorting rankings.
We're honest about uncertainty. Smaller samples get less confidence, not fake precision.
Technical details
smoothed = (n / (n + k)) * raw + (1 − n / (n + k)) * statewide_mean, where k = 30 (calibration constant). With k=30: a school with 15 tested students is pulled 67% toward the mean; 100 students, 23% toward the mean; 300 students, only 9%. Applied to raw dimension values before the composite step.Cohort tracking
Comparing this year's 5th graders to this year's 3rd graders tells you something, but those are different kids. Cohort differences, demographic shifts, or a strong incoming class can make growth look better or worse than it really is.
When we have historical data, we track the same school's cohort across years — 2023's 3rd graders become 2025's 5th graders. This isolates what the school adds from who walks in the door.
Same kids, same school, two years later. That's a real growth signal.
Technical details
mean(mean_scale_score, current year high grade) − mean(mean_scale_score, prior year low grade). For elementary: mean(G5 scale scores, 2025) − mean(G3 scale scores, 2023). Uses SBAC scale scores designed for cross-year, cross-grade comparison. On 2025 data, 82.2% of scored elementary schools (4,711 of 5,732) and 70.1% of scored middle schools (1,547 of 2,208) carry a published cohort growth figure. A further 11.5% of elementary and 13.1% of middle schools have a real cohort that's simply too small to publish with confidence (under 40 tested students) — growth is still weighted normally in the score, only the figure and any growth-based archetype are withheld. The rest lacked a usable two-year cohort at all — no prior-year class to compare against, too large a shift in who was tested, or too few tested students to compute a cohort figure in the first place — and get no growth figure, no growth-based archetype, and have the dimension's weight redistributed to the other five. High schools: 0%, by design, since there is no earlier tested grade.Three of these four are corrections we apply. The first is a correction we tested and found we did not need, and we have left it here rather than quietly dropping it — a methodology page that only lists the things that worked is a sales page.
California’s own growth measure, and why we show it without scoring it
The state publishes its own school-level growth model, and it is a better instrument than ours in one important way: it follows matched individual students from one grade to the next, where our growth compares a school’s cohort against the same school’s cohort two years earlier. Theirs covers grades 4–8 in English and math. Among California public and charter schools that tested students in those grades this year, CDE published a figure for about 97% of them (7,520 of 7,750). The 230 without one are overwhelmingly small — 119 tested fewer than 11 students in those grades, CDE’s own stated minimum, and 189 tested fewer than 30, against a median of about 191 students at the schools that do get a figure. For the rest, we don't know why CDE didn't publish one. We show it, side by side with ours, on every profile where CDE published one.
We do not put it in the Scope Score, and here is the honest reason. When we tested it, it turned out to track family income about three times more closely than our own growth measure does (correlation with the share of low-income students, school averages across both tested subjects, schools with at least 40 tested students: −0.35 against our −0.13). Growth is the one part of our score that is nearly independent of who enrolls, and that is most of why we weight it. Adopting a measure that gives a third of that away would make the score quietly more about neighbourhood income. California has also published only one year of it so far, so nobody can yet say how much a school’s figure bounces year to year — and at the elementary level it covers grades 4 and 5 only, while our elementary score spans grades 3 to 5.
So the two numbers can disagree, and for roughly one school in five they place it in a different band. We think you should see the disagreement rather than have us pick a winner. Where they disagree, that is a real thing to ask a school about. And there is at least one case where the state’s measure is plainly the better one: at schools where students move in and out a lot, our cohort comparison assumes a continuity that isn’t there, and theirs does not.
One thing to read carefully: their figure is not a percentage. It is scale-score points above or below what the state’s model expected for those students, so “+4” means four points better than expected, and about half of California schools land between −6 and +9. We show it in relative terms for that reason.
How rankings work
The scoring pipeline runs in this order: cohort or cross-sectional growth → Bayesian smoothing → weighted composite → rescaled across the level → Scope Score (0–100, a different center per level — see how scores are computed). See bias corrections and the formula table for details.
- Schools are ranked within their own level — elementary vs. elementary, middle vs. middle, high vs. high. Rankings are never mixed across levels.
- Percentile tells you what percentage of same-level schools score below this one. A school at the 90th percentile outscores 90% of schools at its level statewide.
- The maximum percentile displayed is 99th. We don't show 100th percentile.
- Schools without sufficient data to compute a Scope Score are not ranked. No data means no score — we don't manufacture numbers.
- Separately from data sufficiency: some schools are not ranked because of how students arrive there, not because of anything in the data. See peer classes below.
Peer classes — who a school is actually being compared to
A Scope Score ranks schools a family can choose between. Where enrollment is assigned — by court, by expulsion, by placement — we publish the evidence and withhold the rank. We call this the Enrollment Axiom. The line is enrollment mechanism, not demographics or outcomes: a high-poverty neighborhood school that families choose stays ranked like any other school.
Every California public and charter school falls into one of five peer classes, derived from the state's own school-type code and its Dashboard Alternative School Status (DASS) flag — never from how a school scores:
| Peer class | Treatment |
|---|---|
| Comprehensive | Full score, band, archetype and statewide rank. Unaffected by this work. |
| Continuation | Score and rank publish, computed against this peer class only — not against all California schools at that level. |
| Alternative | Score and rank publish, computed against this peer class only — not against all California schools at that level. |
| Court Community | No score, no band, no archetype, no rank. Every underlying number still publishes. |
| Special Education | No score, no band, no archetype, no rank. Every underlying number still publishes. |
Court-community and special-education schools keep every underlying number — test results, attendance, suspension rates — visible on their profile. What we withhold is the verdict: the score, the band, the archetype, and the rank. A locked juvenile facility and a comprehensive high school are not answering the same question, and ranking one against the other isn't rigor, it's noise wearing a percentile.
Continuation schools and DASS-flagged alternative/dropout-recovery schools do publish a score and a rank — but within their own peer class, not against every California school at that level. The state's school-of-choice subtype code alone doesn't separate a genuine placement program from a selective magnet or gifted academy — it's a catch-all that groups both together — so we gate on the state's own Dashboard Alternative School Status (DASS) flag instead. The result: a magnet or gifted academy coded "alternative" by the state but not DASS-flagged ranks statewide like any other school of choice.
A school's peer class is not a judgment about the school. It's a statement about who else belongs in its comparison set.
School Archetypes
79.7% of California public and charter schools (8,174 of 10,260) — those in the statewide comprehensive peer class that also carry a current Scope Score — receive one of 7 archetypes based on their performance profile. Archetypes describe a school's character — what makes it distinctive — rather than reducing it to a single number. They are classified automatically from Scope Score data at render time.
A school outside the comprehensive peer class, or a comprehensive school with no current Scope Score, gets no archetype. The seven labels below are calibrated against the statewide comprehensive distribution; applying them to a peer group a few hundred schools wide would be the same category error the peer classes exist to fix, one level down. Those schools show as Not Compared instead — see the table's last row.
| Archetype | Label | Criteria |
|---|---|---|
| Finisher | High Ceiling | Exceeded ≥ 50% and Scope Score ≥ 70 |
| Accelerator | Growth Engine | Growth index ≥ 63 and Scope Score ≥ 44 |
| Balanced | Strong All-Around | Scope Score ≥ 58 with no weak dimension: Exceeded ≥ 15%, Met+Exceeded ≥ 50%, growth index ≥ 50, chronic absenteeism ≤ 25%, suspension ≤ 4% (a dimension we can't measure passes) |
| Climber | On the Rise | Growth index ≥ 54 and Scope Score < 54 |
| Foundation | Solid Base | Met+Exceeded ≥ 65% and Scope Score 40–65 |
| Community | Culture First | Chronic absenteeism ≤ 15%, suspension ≤ 1.5%, and Scope Score < 58 |
| Emerging | Building Momentum | Everything else — the data doesn't sort this school one way or the other |
| Unranked | Not Compared | peer_class is not 'comprehensive' — enrollment mechanism or an uncalibrated peer pool means no character label is published |
Classification is evaluated in priority order — a school that qualifies as both a Finisher and a Balanced school will be labeled as a Finisher — but the peer-class check above runs first and short-circuits everything else. Private schools do not receive archetypes because they lack CAASPP test data.
This table is rendered from the classifier's own constants, not retyped from them — an earlier hand-written version of it drifted out of agreement with the code on five of its seven rows before anyone noticed.
"Growth index" above is cohort growth's position within the school's level, on a 0–100 scale centred on 50. It is a rescaled position, not a percentile. The two growth archetypes — Growth Engine and On the Rise — fire only on cohort growth, never on the grade gap. A school with no cohort comparison, or with too few tested students to support one, cannot receive either label: no growth evidence, no growth claim. It falls through to whichever archetype its other dimensions support, and it is never punished for the missing data in the Strong All-Around test.
What each archetype means for you
A label is a starting point, not a verdict. Here's what each one should make you ask.
- High Ceiling: Ask what happens for a kid who shows up behind — a high ceiling for the top can sit right next to thin support at the bottom, and the score alone won't show you which.
- Growth Engine: Ask how the school tracks each kid's growth year to year, and what happens when a kid stalls instead of gaining.
- Strong All-Around: Ask about what we don't score — class size, electives, the feel of a classroom — strong numbers everywhere on paper don't mean every classroom feels the same.
- On the Rise: Ask how many years the improvement has held, not just the latest one — one strong cohort and a real turnaround can look identical in a single year of data.
- Solid Base: Ask what the school does for a kid who's already meeting the standard with room to spare — steady proficiency across the board doesn't tell you whether the strongest kids are being pushed further.
- Culture First: Ask whether the low absenteeism and suspension numbers come from what the school does or from the community it serves — both can produce the same numbers, and only a visit tells you which.
- Building Momentum: This label means the data doesn't clearly sort the school one way or the other — ask what the school is proud of, and what it's working on.
- Not Compared: Read the underlying numbers directly, and ask the school how it serves the specific population it's built for — that's a different conversation than the archetype labels are meant for.
Reading a crest
Every archetype above is drawn as a small mark, not just named — a crest. A crest carries two independent facts in one shape. The glyph inside the oval is the archetype — the school's character. The ring around it is the school's performance band, in the same colors used everywhere else on this site — computed the same one way; see below.
No glyph — these four are within-class-ranked schools with no character label. The ring color alone carries the performance band.
Private and verdict-withheld are two different refusals and never share a mark. Private means SchoolScope has no state test data for this school at all — there is nothing to withhold. Verdict withheld means the opposite: every underlying number — test results, attendance, suspension rates — is published on the school's profile, and only the verdict (score, band, archetype, rank) is deliberately not computed, because the school's enrollment is assigned rather than chosen — see peer classes above. A ring color is never the only signal: every crest on this site renders next to its band word or its precise score, never alone.
Performance Bands
Rather than asking parents to interpret a precise number, we group Scope Scores into four performance bands. The band tells you what matters: is this school in the right zone?
Exceeded, met, nearly met and not met are California's four result levels for the students here who took the test. On a 2025–26 report card the state prints the same four levels as Advanced, Proficient, Developing and Minimal. The cut scores between the levels did not move, so the shares are comparable with earlier years.
Developing on that report card is a test level. The Developing band on this site is a Scope Score band — a different scale, measuring a different thing. How the bands work →
Every band on SchoolScope is computed by one function from a school's percentile among California schools at its own level. The exact cut lives in the code, not in this sentence, so the two can never drift apart.
| Band | What It Means |
|---|---|
| Strong | Outperforms most California schools at the same level, on academics and climate |
| Solid | Above-average performance with room to grow |
| Developing | Near average — growth trajectory matters here |
| Needs Support | Below state averages — context and growth are especially important |
Precise Scope Scores (0–100) are always shown alongside band labels for transparency. The band communicates the zone; the number provides the detail.
The band is computed the same way for every school that has one — including a within-class-ranked school (continuation, or DASS-flagged alternative). Its band comes from its own percentile within that peer class, exactly like its rank and percentile — not from a raw score compared to the whole state. Peer classes explains why. Court-community and special-education schools show no band at all.
How we write our verdicts
Every school profile opens with a written verdict — a headline, a summary, and an honest read of the strongest signal and the biggest catch in that school's data. Those sentences are not written by hand for each school, and they are not generated by a chatbot free-associating. They are assembled from a fixed catalog of sentence templates by deterministic rules: the same school always produces the same verdict — there is no randomness, and every number in a verdict appears next to the comparison that gives it meaning.
How a verdict is chosen
- Signals and catches. We compute the school's standing on each scored dimension — exceeded rate, proficiency, growth, attendance, suspension, ELPAC, plus graduation and college readiness for high schools — and on subgroup performance versus the state. Standings well above typical become candidate signals; standings meaningfully behind become candidate catches.
- A school is never introduced by its subgroup. Subgroup performance is often the most informative number on a page, and it stays prominent — in the equity panel, in the opening paragraphs, in the appendix. It does not open the page. A headline that introduces a school by its low-income or English-learner students makes a demographic into that school's public identity, which is the failure we criticise rating sites for. A school is introduced by what it does for all of its students, and the subgroup number is the evidence for that claim rather than a substitute for it. Changed 8 August 2026: before that date, a subgroup clause opened roughly three quarters of the profiles that used the tension framing.
- The headline pairs the strongest eligible signal with the most important catch. That is the tension framing on profiles: the thing the school does unusually well, next to the thing worth asking about. Schools without a meaningful catch get a straightforward verdict — and we say when we looked for a catch and didn't find one.
- Low-scoring schools never get tension drama. Profiles in the Needs Support band open with context, a true positive fact where the data shows one, and where to start a conversation — not a takedown.
The guardrails
- Observational language only. Catches state what the data shows (“proficiency falls from grade 3 to grade 5”), never why. Cross-sectional test data cannot establish causes, so our sentences do not claim them.
- Every catch carries a hedge and ends at your feet. Each verdict with a catch includes one of a fixed set of hedges — “the data can't say why,” “worth asking about on a tour,” “a school visit will tell you more than this number” — and a concrete question to ask the principal.
- Small groups are suppressed. Grade-level claims require at least 15 tested students and subgroup claims at least 30, mirroring the state's own privacy suppression. When data is missing, the verdict says so instead of guessing.
If you believe a verdict misreads your school, report it — a person reads every report, and when something is wrong we fix the rule, not just the page.
Contextual Signals (Not Scored)
Some data tells you important things about a school but shouldn't be reduced to a score. We display these as Community Profile context — visible on school profiles but never factored into the Scope Score.
Physical Fitness (FITNESSGRAM)
California mandates the Physical Fitness Test for grades 5, 7, and 9. School-level PFT results were publicly downloadable through 2018-19, but CDE discontinued research-file publication after a Title 5 regulation change. If CDE reinstates downloadable PFT data, we plan to show the percentage of students meeting all six fitness standards (Healthy Fitness Zone) as context only, never scored, because fitness outcomes correlate with school resources and neighborhood wealth.
Teacher Stability
We show average years of teaching experience and the percentage of first-year and second-year teachers at each school. Veteran teachers are associated with better outcomes — but scoring teacher stability would penalize schools in hard-to-staff areas that serve the students who need the most support. Source: CDE Staff Experience data.
College/Career Readiness (High School)
For high schools, we show the number of students qualifying through AP exams and CTE pathway completion from the CDE College/Career Indicator (CCI). These indicate academic rigor and vocational options — but wealthier schools naturally have higher participation, so we show this as context rather than score it. Source: CDE Dashboard CCI data.
Limitations
We believe in honesty about what our scores can and can't tell you.
- Test scores are one lens, not the whole picture. They correlate with many things we care about but don't capture everything that makes a school great.
- We can't measure teacher quality, school culture, or creative programs. The data doesn't exist in any public dataset. A school with an incredible arts program or a transformative principal won't show that in our score.
- Our Scope Score is our best attempt, not objective truth. Reasonable people could weight these signals differently. The research behind each dimension tells us it matters — it doesn't tell us exactly how much. The weights are our editorial judgment, made in the open. See what the research says for the studies, and where they fall short.
- High school Scope Scores lack growth data. California only tests at grade 11, so there's no earlier tested grade to measure progress against. This means the high school formula relies more heavily on outcomes (graduation, college readiness).
- Cohort growth tracks school-level aggregates, not individual students. We follow the same school's cohort across years (e.g., 2023's 3rd graders as 2025's 5th graders), but kids transfer in and out. Demographic shifts or a particularly strong incoming class can still affect results. A school without a published growth figure is missing one of two different things, and they get different treatment in the score. 6.3% of elementary and 16.8% of middle schools have no usable two-year cohort at all — no prior-year class to compare against, or too mismatched a cohort to trust. For those, we leave the growth dimension out and redistribute its weight across the other five, rather than substituting the grade gap, which is a different measurement in a different unit. A separate group — 11.5% of elementary and 13.1% of middle schools — has a real cohort that's simply too small to publish (under 40 tested students). For those, growth is still weighted normally inside the score; only the figure and any growth-based archetype are withheld until the cohort is big enough to show with confidence.
- Growth is only meaningful relative to other schools. In raw scale points nearly every California school shows positive cohort growth, because children learn more as they get older. That is developmental gain, not proof a school adds value. We rank growth within the level before it enters the score, and we report a school's relative position rather than the raw number — but no observational measure, ours included, can fully separate what a school does from who it enrolls.
- Feeder patterns are estimated. We use NCES boundary data to estimate which elementary schools feed into which middle and high schools. These are not official district assignments and may not reflect transfers, magnet programs, or recent rezoning.
- Small schools may have volatile scores. Bayesian smoothing reduces this, but schools with very few tested students still carry more uncertainty than large schools. Our smoothing is honest about that uncertainty rather than hiding it.
- We don't adjust for demographics or income. We show you the raw signal. Context (free/reduced lunch %, community demographics) is presented alongside scores, not baked into them.
- Two climate signals still carry a demographic echo. Raw chronic absenteeism and raw ELPAC proficiency both partly measure which students a school enrolls, not just what the school does for them. See what the research says below for the studies. We weight both at the level shown in the table above because of that concession. The fix that would clean them up further — comparing a school only to others serving similar communities — isn't built yet. What's built today is a narrower, adjacent partition: peer classes group schools by enrollment mechanism (chosen vs. assigned), not by demographics or community similarity, and it doesn't touch this weighting concession.
The seal marks the survey of record this page describes — its year and state are derived from the same data every score on this site uses, never typed by hand. It is not a state document — SchoolScope is an independent analysis of public California Department of Education data, not an agency of the State of California.
Corrections and changes
When we get something wrong, it gets written down here with what was affected and for how long. A methodology page that only ever describes the current state of the code isn't transparency.
August 27, 2026 — two overstated claims: cohort coverage, and who gets a score
What was wrong, #1: cohort coverage. This page said 98% of elementary and 92% of middle schools "have this comparison" or "have sufficient historical data for cohort tracking" — in the FAQ, in the Growth Trajectory dimension explainer, in the "Cohort tracking" correction card above, and in the limitations list. Those numbers counted schools with a usable prior-year cohort, which is only the first of three gates a cohort has to clear before it publishes (see the "Cohort tracking" correction card above for the small-cohort and population-mismatch checks that run after it). The number that actually determines whether a school's profile shows a growth figure is lower: 82.2% of scored elementary schools (4,711 of 5,732) and 70.1% of scored middle schools (1,547 of 2,208). The August 14 entry below corrected 93% to 92% for middle schools that same week — the digit was right, the concept behind it wasn't — and its own parenthetical mislabeled the denominator too: "2,238 scored schools" is every school with a 2025 composite row at that level, not only the ones that carry a score. We're not editing that entry; this one stands next to it instead.
What was wrong, #2: "every." The opening paragraph above said SchoolScope scores "every California public school families choose between," and two FAQ answers below repeated the same universal in its distributive form — "each," and "Every other public and charter school ... is scored and ranked statewide." "Each" is not weaker than "every"; it's the same claim about one school at a time. Of the 9,892 standard and charter schools in a peer class families do choose between — comprehensive, continuation, and DASS-flagged alternative — 8,625 carry a Scope Score. The other 1,267 don't. Checked across the full population rather than a sample: the largest group (41.1%) has 2025 CAASPP data but a grade configuration that never reaches a scoreable pair at its level — a grades 7-8 school has no grade 6 to pair with grade 8, for instance — which is a grade-span gap, not a data gap. A further group has no 2025 CAASPP data reported for the school at all, and the smallest group has both the data and the grade pair but too few tested students to publish a rate. An earlier version of this entry described the whole remainder as "not enough CAASPP data ... a small or newly opened school, most often," drawn from a 15-school sample; the full population refutes that as the dominant reason.
What we changed. All five cohort-coverage figures on this page, the opening paragraph's population figure, and the two FAQ answers that restated "every" in its "each"/"every other" form are now queried live from the same D1 database every other number on this page already comes from, instead of being typed once and left to go stale the next time an import shifts the counts or the suppression logic changes. The "why unscored" explanation above is now derived from a full-population query rather than narrated from a sample.
August 27, 2026 — a second pass: closed-set claims about our own data, and five stale figures
What was wrong, #1: closed-set claims about where our data comes from. This page said we use "only official California state data" a thousand words above its own Data Sources list, which includes two federal NCES datasets; and it called its Data Sources list "the nine inputs to the Scope Score formula" when the list has eleven rows (it had ten; ELPAC, a real scored input, was missing entirely and is added above), five of them context-only. The same shape shipped on other pages: /about's Organization structured data and a body sentence both said "every data point traces back to" a closed three-member federal/state set, omitting the University of California, College Board, and IB sources shown on every school profile; /press carried the identical structured-data string; /about's "every weight, every data source, every known limitation" repeated the nine/ELPAC problem; the homepage's and /explore's FAQ answers about our data named CDE and NCES only, the same omission. Separately, /about's own deck said SchoolScope "scores every California public elementary, middle, and high school," and the homepage's FAQPage structured data said SchoolScope "classifies every California public school" into an archetype — both refuted by the same 87.2%-scored, comprehensive-only-archetype facts this page's own August 21 and August 27 (cohort-coverage) entries already state.
What we changed. This page's provenance callout now says "only public data sources," names NCES explicitly, and points at the Data Sources list instead of asserting a closed set; the source-count sentence now says which six of the eleven rows actually feed the formula and which five are context. The other pages named above were fixed in the same pass, to the same "public data sources" wording: /about's Organization structured data, its body provenance box, its deck, and its second principle; /press's structured data; and the homepage's and /explore's FAQ answers. One string is still deferred — /about's own <meta name="description"> tag still reads "Built from 19+ public government data sources," disagreeing with that same page's Organization structured data ("20+ public data sources"), because meta-description text is frozen behind this project's own change-approval process (scripts/gsc/changes.json) pending operator sign-off, not because it was missed.
What was wrong, #2: two growth-vs-income correlation figures were stale, and one contradicted itself on this same page. The August 9 entry below said growth correlates with free-and-reduced-lunch at "about -0.11," scoped to "elementary and middle schools" as one number; re-run against 2025 data it is about -0.13 at elementary and about -0.12 at middle — and this page's own California's Own Growth Measure section already printed -0.13 for the same quantity, so the two disagreed with each other. The same August 9 entry's "-0.78" free-lunch correlation for exceeded/met-plus-exceeded scores holds at elementary (−0.78) but not at middle (−0.72), in a sentence scoped to both. The California's Own Growth Measure section separately said the state's matched-student growth model tracks income at "-0.36"; re-run at the same student-count gate the school profile panel uses (school averages across both subjects, ≥40 tested students) it is −0.35 —"about three times" our own figure still holds.
What we changed. Both callouts above now carry the re-derived, level-split figures and state how each was computed.
What was wrong, #3: a cohort-growth figure understated itself. A callout above said "99.8% of them gained ground" for elementary cohort growth; re-derived against 2025 data, every one of 5,372 elementary cohorts posted positive growth (100%, floor +39.3 scale-score points) — the true figure was better than published, not worse, but it was still typed once and never checked. Fixed in place above. (This is a dated record of the 2025 re-derivation, not a live figure \u2014 see the present-tense callout above for the current number, which moves with the data year.)
What was wrong, #4: two more figures inside earlier entries below, not edited there. The August 14 entry below says the grade-gap and cohort-growth metrics "disagree about which direction a school is moving on 55% of scored 2025 rows"; re-derived (sign of growth_g3_g5 differs from the sign of cohort_growth, counting a zero on one side against a nonzero on the other as disagreement too), it is 56.1% (4,042 of 7,207 scored 2025 rows) pooled across levels — elementary alone is 60.9% (3,268 of 5,370), middle alone 42.1% (774 of 1,837), and the two level counts sum to the pooled one. The August 21 entry below says the juvenile-court school it names had "roughly 17 tested students"; that count came from halving total_tested, the exact column this project's own key-discipline rule forbids for a student count because it counts student-subject records, not students. The correct count, from the same grade-13 ELA row every other student-count figure on this site uses, is 20. We are not editing either entry, the same choice the August 27 cohort-coverage entry above made about the August 14 entry's "93%" → "92%": the concept each entry describes is still correct, only a supporting digit drifted or used the wrong source.
August 26, 2026 — the published band rule stopped matching what the site computes
What was wrong. This page, and llms.txt, stated that a school's band — Strong, Solid, Developing, Needs Support — comes from a fixed cut on the raw Scope Score. That was the old rule. Most of the site had already moved past it — the school card, the crest ring, the map, the landing rack, our MCP server, our WebMCP tools, and the embeddable widget compute a school's band from its state percentile first, at its own level — before this page or llms.txt caught up. (We are not retyping either cut here — that is the exact mistake this entry corrects. The current one lives in scopeBand() and is described, not restated, below.)
What we changed. This page and llms.txt now describe the percentile rule and no longer print a raw-score cut. Both pages' band tables drop the numeric column entirely — the exact cut lives in the code (one function, scopeBand()), not retyped in prose, so the two can never drift apart again the way they just did.
The honest part. This page and llms.txt aren't the only surfaces that still disagree, and we'd rather list what we know than claim a swept count we haven't verified. When this entry was published, a school profile's own headline band, its page title and its structured data still kept the OLD raw-score cut — the same school could show a Strong band on its crest and school card while its own profile headline spoke the retired rule. The site-wide search dropdown banded on the raw score too; it was fixed later the same day and now calls the same scopeBand() the crest and card do. A few older surfaces hadn't been migrated either (some blog data tables, and the plain band badge's raw-score helpers in design-system.ts). That list may not be complete — we'd rather say so than let this page become one more place that quietly disagrees with the truth.
Updated September 7, 2026. The profile's headline band, its page title and its structured data now read the percentile rule, all three in one change, so a search result and the page it lands on can no longer say two different words about the same school. 4,528 of California's 8,625 scored school profiles changed band word — 4,170 up, 358 down, and every one of the 358 is a high school: 336 that California codes that way, plus 22 that span more grades than that and take their band from their high-school results. California's high schools score above the fixed cuts the retired rule used — the middle of that level is a Scope Score of about 53, and a quarter of its schools sit below about 45 — so the rule had been placing them a band above where their own level puts them, at two boundaries at once: 111 of the 358 it called Solid are Developing on the percentile, and the other 247 it called Developing are Needs Support. The blog data tables no longer label a raw-score cut with a band word, though posts still group their own counts on fixed score cuts of their own: the hidden-gems list picks its schools at a Scope Score of 70 and up, paired with majority low-income enrollment, and the piece on what a low score means sorts California's elementary schools into score ranges of its own. Both of those say so in their own text. A smaller case — one sentence counting the schools under some number in one city — might carry the cut without the note, so read a cut inside a post as that post's own arithmetic rather than as this page's band rule. What we can still find on the raw cut, having grepped for it today rather than trusting the paragraph above: the preschool browse list's badge, the plain band badge's fallback branch for a school that has a score but no percentile, the embeddable widget's fallback for that same case, the TK city map's pin colour, and the score-colour helpers that tint a feeder-path row. The first three print a band WORD; the last two only choose a colour. That list may still be incomplete, and we'd still rather say so.
August 21, 2026 — we ranked schools students didn't choose
What was wrong. A Scope Score, band, archetype, state rank and percentile published for California public and charter schools whose students did not choose them — juvenile court schools, community day schools, county community schools, special-education centers, continuation schools, and dropout-recovery charters. A locked juvenile facility was ranked against a comprehensive high school and the result was called a percentile.
What it affected. 931 California public and charter schools. About three in five of them — 563, continuation and DASS-flagged alternative schools — kept a real score but were being compared to every school in the state rather than to their own peer class. The remaining 368 — court-community and special-education schools — had no business receiving a score at all: a school for Deaf and Hard-of-Hearing students showed a rank near the bottom of the state, and a juvenile court school with roughly 17 tested students carried an archetype label ("Building Momentum") a coercion bug assigned it after its score went missing. The same coercion bug meant a null score silently became 0 and ran the full classifier.
What we changed. Every public/charter school now carries a peer class, derived from the state's own school-type code and its Dashboard Alternative School Status (DASS) flag — see peer classes above. Court-community and special-education schools keep every underlying number but publish no score, band, archetype or rank. Continuation and DASS-flagged alternative schools keep a real score, ranked within their own peer class. Comprehensive schools — including roughly 315 schools of choice (magnets, gifted/STEM academies, virtual academies) that the state codes under the same "alternative" type as at-risk programs but that are not DASS-flagged — are unaffected, and some of those magnets rejoined the statewide comprehensive ranking pool they had been incorrectly excluded from during this fix's own drafting.
The honest part. The line we drew is enrollment mechanism, not demographics or outcomes — a high-poverty neighborhood school that families choose stays ranked exactly as before. A continuation school's band IS recalibrated for its peer class wherever scopeBand() decides it — it comes from that school's own percentile within continuation or DASS-flagged alternative schools, exactly like its rank, not from the statewide comprehensive distribution. It doesn't get an archetype either, the same as every school outside the comprehensive peer class. That school's own profile headline band, page title, and structured data still speak the retired raw-score cut described in the entry above, not this peer-relative one — and it's not the only surface that hasn't migrated yet; see the honest-part note in the entry above for the fuller, still possibly-incomplete list. Everywhere scopeBand() decides the band — the crest, the school card, the map, our agent surfaces — the band, the rank and the percentile are computed against the peer class together, not the whole state.
August 14, 2026 — we showed one growth number and scored a different one
What was wrong. The Scope Score has always been built on cohort growth — a school's later-grade class measured against its own earlier-grade class two years before, in scale-score points. That's a returning cohort: mostly, not exactly, the same kids, never individually matched students. But almost every place this site said the word "growth" was displaying a different number: the grade gap, this year's 5th graders against this year's 3rd graders, in proficiency percentage points. Two different measurements, two different units, one label. They disagree about which direction a school is moving on 55% of scored 2025 rows.
What it affected. The growth figure on school profiles and in comparisons, the helping/hurting arrow on the score factors panel — which pointed the wrong way for about a third of elementary schools — the Growth Engine and On the Rise archetypes, which were assigned on the unscored number, and the growth fields returned to AI agents through our MCP server and llms.txt. This page described only the cohort measure, so the two never met on the same screen and nothing flagged the mismatch.
What we changed. Every surface that explains the score now shows cohort growth, named with its span and led by its position relative to other schools at the same level rather than a raw scale-point number nobody can interpret. The grade gap survives only as explicitly-labelled context and is never coloured by its sign. The two growth archetypes now fire on the scored measure and refuse to fire at all when a school has no cohort comparison or too few tested students —no growth evidence, no growth claim. And the archetype criteria table above is now rendered from the classifier's own constants, so it cannot silently drift again.
What we'd also got wrong on this page. We reported cohort coverage for middle schools as 93%; it is 92% (2,065 of 2,238 scored schools). Elementary was correct at 98%. We also described schools without cohort data as "falling back" to the grade gap in the score — they now have the growth dimension left out and its weight redistributed instead, because substituting a percentage-point number into a scale-point slot is exactly the mistake this correction is about.
The honest part. The two numbers disagreeing isn't an embarrassment so much as the whole reason this site exists. Most California elementary schools post a negative grade gap in the same year their students gain around 75 scale score points. The bar rises faster than the visible proficiency rate does. If you have ever looked at a school's "% proficient" and concluded it was going backwards, this is very likely what you were looking at.
August 12, 2026 — archetype thresholds had drifted from the code
The archetype criteria published on this page and in llms-full.txt had been typed by hand, and had fallen out of agreement with the classifier on five of seven rows. AI crawlers were served the stale thresholds as fact for months. Both tables are now rendered from the same constants the classifier reads.
August 9, 2026 — growth weight raised, absenteeism lowered
Elementary and middle formulas were reweighted toward growth and away from raw chronic absenteeism. The reasoning, and the measured effect on how much the Scope Score tracks family income, is in the weights section above.
Cite this page
The changelog above records methodology versions by date, so a citation can pin the exact version you relied on — link the dated entry above alongside the page itself if precision matters.
Our derived dataset — Scope Scores, percentiles, and the figures computed from them — is licensed CC BY 4.0: reuse with attribution and a link back to schoolscope.co. See our press page for the full reuse policy and citable findings.
What the research says
Every dimension in our formula is here because some study found it connects to things that matter for kids — not because it's easy to measure. Here's the actual research behind each one, including where it falls short.
Growth
A school's average score mostly reflects which kids walk in the door. Growth reflects what the school does with them. Researchers who studied real school lottery outcomes found that ratings built on growth predict a school's actual effect on students far better than ratings built on proficiency levels (Angrist, Hull, Pathak & Walters, American Economic Review: Insights, 2024). Separately, growth rates carry almost no relationship to a district's poverty rate — a school in a low-income neighborhood can post real growth (Reardon, Stanford Education Data Archive; Urban Institute, 2020). That's the research behind why we raised growth's weight in August 2026.
Exceeded vs. met
Reporting one “percent proficient” number throws away real information. A school where 60% of kids exceed the standard is a different school from one where 60% just barely clear it, even if both report “80% met or exceeded.” Researcher Andrew Ho called percent-proficient a “funhouse mirror” that distorts real differences between schools (Educational Researcher, 2008). Splitting the two levels apart recovers what a single number erases.
Suspensions
Kids assigned to a higher-suspension school go on to worse adult outcomes — more arrests, less schooling completed — even after accounting for who attends (Bacher-Hicks, Billings & Deming, American Economic Journal: Policy, 2024). The study covers one metro area, so we hold the exact size of the effect loosely, but the research design isolates a school's discipline practice from who's enrolled there, which is why we treat suspension rate as a real signal.
Graduation rate (high school)
In one large study of Texas charter schools, campuses that raised test scores didn't produce a measurable earnings bump years later— but campuses that raised graduation rates did (Dobbie & Fryer, 2020). That's one study in one state, and we say so. It's still a big part of why graduation carries the largest single weight in our high school formula.
Absenteeism
Attendance is one of the most reliable predictors of graduation we've found in the research, sometimes stronger than test scores (Allensworth & Easton, University of Chicago Consortium on School Research). Here's the honest catch: a school's raw absenteeism rate is shaped mostly by a family's health, transportation, and housing stability (Liu, Fordham Institute, 2023). A high rate can mean a struggling school, or it can mean a school serving a lot of families dealing with things no school can fix. We weight it at the level shown in the table above because of that concession. It's the dimension we most want to improve by comparing schools only to others serving similar communities, and that comparison isn't built yet.
ELPAC proficiency
No study we've found validates a school's raw English Learner proficiency rate, on its own, as a measure of school quality. We weight it anyway because schools demonstrably shape how fast English Learners reach proficiency, through program design and teacher stability (Umansky & Reardon, American Educational Research Journal, 2014; U.S. Government Accountability Office, 2024). But the rate is also heavily shaped by things a school doesn't control — how recently a student arrived, and how much English they started with (REL Northwest, 2016). A school that enrolls a lot of newcomers will score lower here through no fault of its teaching. We're naming that plainly instead of hiding it.
What no public data can see
The single biggest school factor we found in the research isn't in our formula, or in anyone else's public data: the individual teacher in front of your kid. One study tracked more than a million students through tax records and found that a single year with a better teacher raised college attendance and adult earnings years later (Chetty, Friedman & Rockoff, American Economic Review, 2014). No public dataset publishes teacher-level results, and even trained researchers can't reliably judge a teacher by watching one lesson (the MET Project, 23,000+ videotaped lessons). That's why every school profile ends with a question to ask on your visit, instead of a claim about teaching we can't back up.
Reasonable people can weigh this research differently than we did. The studies above tell us these dimensions matter. They don't tell us exactly how much — the weights in the table above are our judgment call, made in the open so you can check it against your own.
Why we show diversity — but don’t score it
Every school rating system wrestles with the same question: should demographics affect the score? We thought carefully about this. Here’s where we landed and why.
What others tried
GreatSchools added an Equity Rating to its public scores, took criticism from both directions, and removed it in July 2025. A 2019 Chalkbeat analysis found its earlier ratings correlated strongly with the share of low-income students across major metros; GreatSchools has since reweighted its formula toward academic growth, and no independent analysis has measured whether the current rating still tracks demographics.
Some rating sites assign a diversity grade using a diversity index — a mathematical measure of how evenly students are distributed across racial and ethnic groups. The problem: diversity indices (Shannon entropy, Simpson’s index, and similar measures) are lowest in communities where one group is the majority. A school that’s 90% Hispanic in a 90% Hispanic neighborhood scores low on a diversity index — not because the school is failing, but because of who lives nearby. Scoring diversity this way penalizes the schools that serve majority-minority communities.
We haven’t found a diversity scoring approach in public ratings that avoids this trap. That doesn’t mean it’s impossible — but we weren’t willing to adopt one without being confident it works.
Our approach
Demographic composition on every public school profile — race/ethnicity breakdown, Free/Reduced Lunch %, and how the school’s enrollment compares to the surrounding neighborhood. We also surface equity gaps: disaggregated test scores, absenteeism, and suspension rates by student subgroup — so you can see how the school performs for low-income students, English learners, and every racial/ethnic group individually. Per-pupil spending and student-teacher ratio provide resource context.
We don’t roll demographics into the Scope Score. A school’s racial composition, income mix, or neighborhood profile is never added to or subtracted from its rating. Demographics are never an input to the formula.
The data that actually reveals equity
Demographic percentages tell you who a school serves. The equity gap data tells you whether it serves them equitably. Two schools can have identical demographics and wildly different absenteeism rates by subgroup — one where every group is engaged, one where specific populations are chronically disconnected. That gap is meaningful. We surface it.
ELPAC proficiency (English Learner progress toward full English fluency) is the one place where serving a specific population directly feeds the Scope Score. Schools genuinely influence how fast students reach fluency, which is why we weight it. The rate also depends heavily on when students arrived and where they started — a school with many newcomers will show a lower rate for reasons that have nothing to do with teaching. Read it against schools serving similar populations; the References below carry the evidence on both points.
The principle
We don’t penalize schools for serving disadvantaged communities. The Scope Score answers one question: how good is this school at its job? Subgroup data answers a different one: how good is this school for my kid specifically? Both matter — but they’re different lenses. Mixing them into one number collapses the nuance.
Growth trajectory is the cleanest measure of what a school adds — it barely moves with family income. Proficiency levels, ELPAC rates, and climate numbers partly reflect who enrolls, which is why the formula leans harder on growth than it used to (reweighted August 2026) and why this page says so plainly. Demographics and subgroup outcomes are context on every profile, never score inputs.
Reasonable people can disagree with this choice. Some will say we’re leaving important context out of the score. We’re open to that argument — but we think surfacing the context transparently, rather than baking it into a single number, gives you more information, not less.
What’s next
A future version of SchoolScope will let you adjust dimension weights to match your family’s priorities. If the schools serving your community are what you care most about, you’ll be able to weight that — that’s your judgment call to make, not ours.
Data confidence
Not all numbers on school profiles have the same certainty. We label data by its source so you know what you're looking at.
- DirectOfficial data for this school, published by CDE or NCES. Test scores, absenteeism, suspension rates, graduation rates, enrollment. These are the most reliable inputs.
- DerivedComputed by SchoolScope from official inputs — growth trajectory, Scope Score, percentile rank. We show our work on the methodology page and in school profile score factors.
- DistrictDistrict-level data applied to a school when school-specific data isn't available. Less precise but still informative. Always labeled when shown.
Frequently asked questions
How is the Scope Score calculated?
SchoolScope scores 87.2% of the California public schools families choose between (8,625 of 9,892), 0–100, using official CDE CAASPP data. Elementary and middle schools: 42% exceeded standard, 23% met+exceeded, 20% growth trajectory, 5% chronic absenteeism, 5% suspension rate, 5% ELPAC proficiency. High schools replace growth with graduation rate (25%) and college readiness (20%). Schools where enrollment is assigned rather than chosen — juvenile court, community day and special-education schools — publish their underlying numbers without a score; a further 1,267 choosable schools go unscored for other reasons, most often (41.1% of that group) because their grade configuration never reaches a scoreable grade pair for their level (a grades 7-8 school has no grade 6 to pair with grade 8, for instance) — not a data gap — see the limitations section.
How is a Scope Score actually calculated? Can you show an example?
Take a hypothetical elementary school. Say it posts 45% exceeded standard, 78% met or exceeded standard, above-average growth from 3rd to 5th grade, 8% chronic absenteeism, 1% suspension rate, and 42% of English learners reaching the top ELPAC level. None of those raw numbers go straight into the score. Each one is first compared to every other elementary school in California that year — a school's 45% exceeded is converted into a standardized score (centered at 50, roughly 0-100) based on how far above or below the statewide average it sits, not looked up as a raw percentage. Those six standardized scores are then combined using the elementary weighting: 42% exceeded standard, 23% met+exceeded, 20% growth, 5% absenteeism (inverted — lower is better), 5% suspension (inverted), 5% ELPAC proficiency — and that weighted result is then rescaled across every elementary school in California onto the same fixed range every level uses, which is why the six centered-at-50 dimensions don't average back to a Scope Score of 50 (see "How scores are computed" above for what the statewide average actually is). A school that's above average on every one of these six dimensions can land near the top of the range; one that's above average on only a few of them, with the rest closer to average, lands much closer to the middle. What that number means: this school's academic and climate signals rank favorably against other California elementary schools, on the six dimensions we measure. What it doesn't mean: it isn't a raw average of test scores, a guarantee about any individual student's experience, or a measure of teaching quality, school culture, or fit for your kid — those aren't in the data.
What data does SchoolScope use?
The Scope Score itself is built from official public sources: CAASPP Smarter Balanced test scores, chronic absenteeism rates, suspension rates, graduation rates (ACGR), and College/Career Indicator data from the California Department of Education, plus enrollment and demographics from the NCES Common Core of Data. School profiles add context from the University of California, the College Board, and the International Baccalaureate Organization — see the Data sources section above and the About page for the full 20+-source list.
Why does SchoolScope separate exceeded vs. met standard?
Most rating sites report 'met or exceeded' as one number. But a school where 60% exceeded standard is fundamentally different from one where only 10% exceeded. We weight the exceeded rate heavily because it shows how many students go beyond the standard, not just to it — the ceiling, not just the floor.
Are elementary, middle, and high schools ranked together?
No. Schools are always ranked within their own level — elementary vs. elementary, middle vs. middle, high vs. high. Each level has a different Scope Score formula tailored to the data that matters most at that stage. Rankings are never mixed across levels. Some schools are also ranked within a narrower peer class — see the next question.
Does every California public school get a Scope Score and a rank?
No. A Scope Score ranks schools a family can choose between. Where enrollment is assigned by court, expulsion or placement — juvenile court, county community, community day and special-education schools — we publish the same underlying test, attendance and suspension data but withhold the score, band, archetype and rank. Continuation schools and DASS-flagged alternative or dropout-recovery schools do get a score, but ranked within their own peer class rather than against every California school at that level. Most other public and charter schools — including magnet, gifted/STEM and virtual academies the state happens to code under the same type as at-risk programs — are scored and ranked statewide like any comprehensive school (87.2% of choosable schools score: 8,625 of 9,892). The rest go unscored for other reasons — most often a grade configuration or missing current data, not a policy exclusion — see the limitations section.
What does the growth trajectory measure?
Cohort growth: the same school's cohort measured twice — 2023's 3rd graders measured again as 2025's 5th graders — using SBAC scale scores, which are built for cross-year, cross-grade comparison. 82.2% of elementary and 70.1% of middle schools carry a published growth figure. A school without one is missing one of two different things. 11.5% of elementary and 13.1% of middle schools have a real cohort that's simply too small to publish (under 40 tested students) — growth is still weighted normally in the score, only the figure is withheld. 6.3% of elementary and 16.8% of middle schools have no usable two-year cohort at all — too few tested students, too large a shift in who was tested, or no prior-year class to compare against — and have the growth dimension's weight redistributed across the other five instead. This is not the same as the grade gap you may see quoted elsewhere — this year's 5th graders against this year's 3rd graders, in proficiency percentage points. Those are different children, and because the proficiency bar rises with each grade, most California schools post a negative grade gap in the same year their students gain around 75 scale-score points. Only cohort growth is scored.
Why is graduation rate the biggest weight for high schools?
Graduation rate carries 25% of the high school Scope Score — the single largest weight — because it's the most consequential outcome. A high school that doesn't graduate its students isn't delivering on its most basic promise, regardless of test scores.
How is chronic absenteeism used in the score?
Chronic absenteeism measures students missing 10% or more of school days. It's inverted in our formula — lower absenteeism means a higher score. It carries 5% weight at elementary and middle levels and 5% at high school, as a signal of school culture and family engagement.
What are the limitations of SchoolScope's scores?
Test scores are one lens, not the whole picture. We can't measure teacher quality, school culture, arts programs, or student well-being. Our cohort growth tracks school-level aggregates, not individual students. Nearly every school shows positive cohort growth in raw scale points, because children learn more as they get older — so growth only tells you something once it's compared to other schools at the same level, which is how the score uses it. Small schools have their scores smoothed toward the statewide average, and growth claims are suppressed entirely below the tested-student floor. High school Scope Scores lack growth data. And 931 schools — where enrollment is assigned rather than chosen — don't get a score at all, or are ranked only within their own peer class; see the peer-class question above.
How often is SchoolScope data updated?
School data is updated annually when the California Department of Education publishes new results. Our current data reflects the 2025 test year (CAASPP 2024–25).
Further reading
- What School Rankings Get Wrong — And What We're Trying to FixOur manifesto on why we built SchoolScope.Read
- Why 80% "Met or Exceeded" Can Mean Two Different SchoolsWhat the combined proficiency number hides, and what to ask about it.Read
- 2026 CAASPP Scores: What the New Labels MeanHow to read the renamed proficiency levels behind every score on this site.Read
- Why we show diversity but don’t score itOur full reasoning on demographics as context, not score input.Read
- What the research saysThe named studies behind every scored dimension, including where they fall short.Read
- Explore all California schoolsSee our methodology in action.Read
- All blog postsMore data-driven analysis of California school performance.Read
- About SchoolScopeWho we are, our independence, our data governance standards, and why we built this.Read