Skip to content
WA School Funding Explorer
OSPI data · 2019-20 to 2024-25 (most recent published)

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:

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.

How we categorize revenue codes
CodeF-196 meaningShown as
1000Local taxes (levies)Local
2000Local support, non-taxLocal
3000State, general purpose (apportionment)State
4000State, special purpose (categorical programs)State
5000Federal, general purposeFederal
6000Federal, special purpose (Title I, IDEA…)Federal
7000Revenues from other school districtsOther
8000Revenues from other agenciesOther
9000Other 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 levy rate shown on each district page is the rate the district can collect: the lesser of its voter-approved levy and the two caps, divided by assessed value. Voters sometimes approve more than the caps allow, so the approved rate can be higher than $2.50; the collectible rate cannot. Levies and LEA run on the calendar year, while the F-196 figure covers a September-to-August school year. 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.

The small-school staff units shown beside a district's model schools come from the same workbook's Header sheet: the small-school and remote-and-necessary certificated instructional, administrative and classified staff units, which OSPI computes as a top-up over the prototype formula's own units, and the flags for which provision a district qualifies under (small high school, small district, remote and necessary school, non-high district). The provisions themselves are in section 502(13) of the 2024 supplemental operating budget. Their salaries and benefits are already inside the salary and benefit figures above.

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. Script: scripts/build-fund-balance.py.

Reserve ratios are compared with the benchmark the Washington State Auditor's Office uses. Its Financial Intelligence Tool rates a school district's general fund by how many days its ending fund balance would cover, and rates anything under 60 days as concerning - a figure it takes from the Government Finance Officers Association's guideline of two months of operating spending. Sixty days is about 16.4% of a year's spending. The Auditor also counts debt payments and transfers out as spending, so its figure can differ slightly from this site's. In 2024-25, 136 of 314 districts met the benchmark.

Neither the Auditor nor OSPI sets a required minimum. The Auditor describes the tool as informational, not prescriptive guidance. OSPI's financial-health indicators score unrestricted fund balance against revenue as a monitoring tool, and each school board sets its own minimum fund balance in policy. This site calls a balance under one month of spending (about 8%) thin; that line is its own plain-language marker, not a state standard.

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

SourceUsed for
RCW 28A.150.260Prototypical school sizes, funded class sizes, and staffing allocations used in the explainer and School Builder
LEAP Document 3 (2024 enacted)Per-district salary regionalization factors, shown on each district profile
WA Constitution, Art. IX §1The “paramount duty” clause
McCleary v. State - court recordsAll 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
2SHB 1664 (2022)Increased counselor, nurse, social worker and psychologist allocations
2SSB 5882 (2024)Increased paraeducator and office support staffing 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 allocations currently in RCW 28A.150.260, including the counselor, nurse, social worker and psychologist increases from 2SHB 1664 (2022) that finished phasing in for 2024-25, and the paraeducator and office support increases from 2SSB 5882 (2024). Teacher counts apply the planning-time factor OSPI adds on top of the funded class size - 15.5% in K-6 and 20% in grades 7-12 - so students per funded teacher is lower than the class size. The School Builder shows all eleven staff roles the statute funds at the school level, but not the district-wide tier, 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.