Sources & Methodology
Every number on this site comes from public data published by Washington's Office of Superintendent of Public Instruction (OSPI) or from state law. This page lists the exact sources so you can verify anything yourself. Three things on this site are not pulled directly from a dataset, and are labeled everywhere they appear:
- The list of districts under state financial oversight is hand-transcribed from an OSPI web page that has no downloadable dataset, and dated when it was last checked.
- The policy simulator prices two sliders (special education, multilingual learners) using flat statewide dollar constants instead of each district's own cost ratio - disclosed under “Estimate details and assumptions” on that page.
- The reserve-fund “danger line” (5% of annual spending) is this site's own judgment call, not a state or GFOA standard - GFOA's published benchmark is about 17%, shown for comparison on the District Explorer.
See the actual data behind this site
Every district's enrollment, demographics, and revenue by source, as joined from the OSPI files below - the same file this site itself reads from.
/data/districts.json →1 · Enrollment & demographics
OSPI “Report Card Enrollment” datasets on data.wa.gov, one per school year. We use district-level, all-grades rows: October headcount plus student groups (low income, English language learners, students with disabilities, homeless, migrant, highly capable). The same data is browsable on OSPI's Report Card.
“The exact rows we use” = each district's one district-total row (all grades combined) - the same filter our data script applies. Open it in any spreadsheet app and compare against this site's numbers directly.
Why two enrollment numbers?
Student counts across the site are OSPI's final annual-average funding FTE from the P-223/P-223RS system - the same measure the per-student dollar figures divide by, so the two always agree. Part-time participation, including Running Start, is counted at its reported FTE instead of automatically as one full student.
The Report Card's October headcount is still used where a headcount is the right unit: the enrollment trend chart on each district page, and the demographic shares (low income, multilingual, special education) which are reported as counts of students, not FTE. Those will not match the FTE totals exactly.
The denominator is the workbook's K-12 FTE (including ALE) plus separately reported Running Start-at-college FTE. See the Final Enrollment Summary workbook and OSPI's enrollment reporting guidance. We also retain the K-3, grades 4-6, grades 7-8, and grades 9-12 subtotals to personalize the prototypical-school explainer, and show Running Start college FTE separately rather than as an on-campus model school.
2 · District finances (F-196)
The F-196 is the year-end financial report every district, charter, and tribal-compact school files with OSPI. Raw CSVs come from the SAFS Data Files page (“Actuals - General Fund Revenues”). Revenue account codes are defined in the official F-196 item map & dictionary (PDF); district totals can be cross-checked against OSPI's Financial Reporting Summary.
| School year(s) | Direct CSV download |
|---|---|
| 2019-20 · 2020-21 · 2021-22 (combined) | actualsgeneralfundrevenues.csv |
| 2022-23 | actualsgeneralfundrevenues-safs3dw_actualsgeneralfundrevenues.csv |
| 2023-24 | actualsgeneralfundrevenues2023-24.csv |
| 2024-25 | 24-25-actuals-general-fund-revenues.csv |
| Code | F-196 meaning | Shown as |
|---|---|---|
| 1000 | Local taxes (levies) | Local |
| 2000 | Local support, non-tax | Local |
| 3000 | State, general purpose (apportionment) | State |
| 4000 | State, special purpose (categorical programs) | State |
| 5000 | Federal, general purpose | Federal |
| 6000 | Federal, special purpose (Title I, IDEA…) | Federal |
| 7000 | Revenues from other school districts | Other |
| 8000 | Revenues from other agencies | Other |
| 9000 | Other financing sources (transfers and other inflows) | Other |
Processing rules
Total funding = codes 1000-9000, general fund only. Code 9000 is included in “Other” so totals reconcile to OSPI's full general-fund revenue and other-financing-source presentation.
Finances, October headcount, and funding FTE join on the 5-digit county-district code. Each year ~10-14 enrollment rows (mostly tribal-compact schools) have no F-196 filing and are omitted.
The whole pipeline is one open-source script - scripts/fetch-data.mjs in the site's repository - that downloads the files above and re-derives everything.
Levies & Local Effort Assistance (the policy simulator)
The simulator's levy and LEA sliders run Washington's actual formula on real district data. Assessed valuation, voter-approved levy amounts, LEA enrollment, and the statutory assumptions (the per-student guarantee, the $1.50 LEA rate, and the $2.50 / per-student levy caps) come from OSPI's Enrichment Levy Pre-Ballot Approval worksheet on the School Apportionment budget-preparations page. Our calculation reproduces that workbook's LevyCalc sheet (capacity per pupil, maximum LEA per pupil, levy rate, and payable LEA), and the LEA a district actually received is F-196 revenue code 3300. The per-student levy cap has two tiers: $4,077.38 for 2027, and $4,786.63 for districts of 40,000 or more FTE students, which under RCW 84.52.0531 means Seattle and no one else. The voter-approved levy amounts are OSPI's 2027 column, final as of June 26, 2026, so they include the results of the February 10 and April 28, 2026 levy elections. Script: scripts/build-levy-lea.py.
What districts actually spend (the simulator's comparison lines)
The “what they actually spend” markers on the special education, MSOC, and transportation sliders come from the Actuals - General Fund Expenditures CSV for 2024-25, broken out by the F-196 Program and Object dimensions. Special education is the state programs 21, 22 and 26 divided by the October headcount of students with disabilities - program 24 is the federally funded IDEA supplemental program and is left out, because this figure is compared against the state allocation and counting federal spending on the cost side would report federal grant money as money the district paid; transportation is program 99 divided by headcount enrollment; MSOC follows the definition in the Superintendent of Public Instruction's 2026 budget request - the same scope behind AESD's Big 3 dashboard: non-staff objects across basic education, career and technical education, and the categorical programs, excluding items that are not operating costs (contracted student transportation, tuition, debt, judgments, land and building improvements) and netting out non-high payments - divided by funding FTE. This site's MSOC figures reproduce that dashboard's 2024-25 expenditures to the cent for 284 of 315 districts (the rest differ only in a non-high payment form OSPI does not publish). All three are general fund only, so transportation excludes buses bought through the Transportation Vehicle Fund. Script: scripts/build-program-spending.mjs.
What the state allocation pays for (the 7-step walkthrough)
The breakdown of a district's state allocation into salaries, benefits, materials and operating costs, special education, transportation and the categorical programs comes from OSPI's Apportionment Final Extract for 2024-25 - the data behind the 1191 Apportionment Summary each district receives. Salaries, benefits and MSOC come from the workbook's Basic Ed sheet; special education, transportation, multilingual, learning assistance, highly capable, food and levy equalization come from an explicit allowlist of revenue codes, deliberately not every 3xxx/4xxx code - some, like 4100, can also carry multi-year school-construction capital grants that do not belong in a general-fund figure. “Other state programs” is defined as whatever remains after subtracting every named category from the district's actual F-196 state general-fund revenue, so the total always ties out to that figure exactly. The MSOC funding figure used in the gap comparisons additionally counts career-and-technical and alternative-learning MSOC, per the budget-request definition above; the walkthrough's split keeps the general-education line so it still sums to the 3100 apportionment. Script: scripts/build-state-allocation.py.
Binding conditions & financial oversight
Districts flagged as being on binding conditions or under enhanced state oversight are transcribed by hand from OSPI's School District Budget Challenges and Financial Insolvency page, which publishes a letter per district rather than a machine-readable list. The status shown here was checked on July 28, 2026; check that page for anything more recent.
Expenditures, fund balance & reserve ratio
Total spending comes from the parallel “Actuals - General Fund Expenditures” CSVs on the same SAFS page. The yearly surplus / (deficit) shown on each district is simply revenue minus spending - the change in the fund balance.
The ending fund balance (a district's savings on hand) and the reserve ratio (fund balance ÷ spending) are not in OSPI's bulk revenue/expenditure CSVs, so they come from the state's own statewide school-finance workbook, WSFCurrent.xlsm (the download behind fiscal.wa.gov's K-12 finance page), joined by district code. Reserve ratios below 5% are flagged on each district profile. That threshold is this site's own editorial choice, not a statutory or professional standard: it reflects Washington school-finance practice and OSPI's budget-challenge process, and it is deliberately conservative next to the Government Finance Officers Association's general guideline of two months of operating spending, about 17%. Almost every Washington district clears 5%; almost none clears 17%. Script: scripts/build-fund-balance.py.
Translations
The non-English versions of this site's interface text are machine translations, generated once at build time via Google Translate and checked into the repository (script: scripts/build-translations.mjs). No data values are translated - only labels and explanatory copy - and no text is sent anywhere while you browse. Machine translation makes mistakes, so the English wording is the authoritative version of any claim on this site.
3 · District boundaries (the map)
The map on the District Explorer uses OSPI's official Washington School Districts boundary layer from the state geoportal (geo.wa.gov), fetched from its public ArcGIS FeatureServer. Shapes are simplified to ~200 m tolerance for fast loading and joined to funding data by each district's 5-digit OSPI code (script: scripts/fetch-boundaries.mjs). Boundaries are OSPI's best interpretation of legal descriptions - confirm edge cases with the district itself.
District boundaries are legal descriptions that run miles into Puget Sound and the large lakes, so the script clips every district to land before drawing - the shapes you see follow the shoreline, not the underwater legal boundary. The shoreline comes from the Census Bureau's cartographic state boundary and the lakes from WDFW's NHD hydrography service; no funding data is joined to either.
4 · Legislators (Take Action)
The delegation shown for a school district is every legislative district that overlaps it, found by overlaying OSPI's school district boundaries on the 2024 Washington State Legislative Districts layer and sampling a grid of points inside each school district. The percentage shown is the share of sampled points - an approximation of area, not population - and overlaps under 2% are dropped as boundary slivers.
Member names, parties, chambers, and links come from the Legislature's official roster, and portraits from leg.wa.gov/memberphoto (Legislative Support Services). Scripts: scripts/fetch-legislators.mjs and scripts/fetch-legislator-photos.py. Because school and legislative boundaries do not line up, always confirm your own representation with the Legislature's District Finder.
5 · Law, court records & bills
| Source | Used for |
|---|---|
| RCW 28A.150.260 | Prototypical school sizes, funded class sizes, and staffing allocations used in the explainer and School Builder |
| WA Constitution, Art. IX §1 | The “paramount duty” clause |
| McCleary v. State - court records | All orders in the case: 2012 decision, 2014 contempt, 2015 sanctions, 2018 termination |
| EHB 2242 (2017) | The McCleary funding fix: state salary allocations, state property tax, levy caps |
| HB 1664 (2022) | Increased counselor, nurse, and social worker allocations |
| SB 5263 (2025) | Special education funding increase; removed enrollment cap |
| SB 5192 (2025) | MSOC set at $1,614 per student (+~$215 per high schooler) |
| HB 2049 (2025) | Raised local enrichment levy caps |
6 · Known caveats
- Two enrollment measures are in play. Student counts and per-student funding both use final annual-average K-12 plus Running Start funding FTE. The Report Card's October headcount is used only where a headcount is the right unit: the enrollment trend chart and the demographic shares.
- General fund only - capital projects, debt service, transportation vehicle, and ASB funds are excluded everywhere.
- Trend charts show nominal dollars, not inflation-adjusted.
- The Policy Simulator is an educational estimate built on statewide averages (labeled as such on the page), not a fiscal model.
- Staffing values in the explainer are the base allocations currently in RCW 28A.150.260, including the counselor, nurse, and office support increases from HB 1664 (2022) that finished phasing in for 2024-25. The School Builder shows a subset of the roles the statute funds - social workers, psychologists, student-safety staff, and parent involvement coordinators are omitted - and excludes regionalization, benefits, and every categorical program.
- Translations of the interface are machine-generated. Data values and proper nouns - district names, county names, legislator names - are never translated, and the English wording is the authoritative version of any claim here.