SFUSD's Geography Problem
Why student assignment reform and school capacity planning are fundamentally linked
In the fall of 2024, SFUSD’s failed attempt to close 11 schools, right around the time of a Board of Education election, led to much public discourse about (1) how the district should address its excess capacity relative to current enrollment levels; and (2) how this relates to an ongoing but delayed plan to reform its student assignment system. Yet, for all the virtual ink spent on questions such as: “Should SFUSD wait after school closures to change student assignment?” I haven’t seen any public piece clearly present the relevant data to answer those questions. For example, an April 2025 article in The Frisc states: “It’s too soon to say whether closures and the assignment zones are related, according to SFUSD.” (It is not, and they are.) Now that the Board of Education has discussed a resolution directing the Superintendent to present a new plan considering both school closures and assignment reform, it seems pertinent to explain the basic geographic constraints that should lead us to consider these issues together.
The core idea shouldn’t be completely new to readers of SFEDup, having been discussed in some way by Paul in previous posts. Here is the TL;DR for the rest of this post:
The ability for families to apply to elementary schools anywhere in the city, combined with an overall excess of seats relative to enrollment, has created large discrepancies between where students live and where they attend school.
Notably, these discrepancies can exist at a large scale (i.e., multiple adjacent zip codes have more students commuting out than in) even if a majority of families in every zip code choose a school fairly close to home.
The large-scale discrepancy between (1) the geographical distribution of where elementary school students live and (2) the geographical distribution of where they are enrolled means that any capacity reduction (i.e., school closure or merger) scenario can be compatible with (1) or (2), but not both.
Consequently, reducing capacity based on where students are currently enrolled would severely limit the district’s ability to reform its assignment system towards one that promotes more home-to-school proximity.
Moreover, any assignment reform that significantly shifts the geographical patterns of enrollment requires some excess capacity to cover the transition, if families already in the system are allowed to continue attending the same school outside their geographical zone.
This is not an assessment of the pros and cons of switching from the current student assignment system to one more geographically-constrained. I think some of the media coverage (e.g., the article cited above) exaggerates the flaws in the current system and the level of support for the alternative. However, to focus on the main points above, I will avoid discussing the merits of the current and proposed alternative assignment systems here.
Distribution of elementary schools and their assignment types
The map below shows the location of 71 district schools offering elementary education in San Francisco, overlaid on the zip code boundaries. The 13 citywide schools have no associated attendance area. Most of them are K-8 schools (6), fully dedicated to language immersion (3), or both (2). The exceptions are Mission Education Center (a newcomer school for recent immigrants who are Spanish speakers) and SF Public Montessori. The remaining schools all have assignment areas, but those labelled “mixed” also include language programs that are assigned on a citywide basis. Overall, around 61% of kindergarten seats are attendance area-based (with some level of priority given to families in the area) and the remaining 39% are citywide assignments1.
Among the patterns visible on this map, I note that there is a string of neighborhoods from the eastern to the southern side of the city (Potrero Hill, Mission - Bernal Heights, Portola, Excelsior) where every school has some citywide seats. This is not the case for the most southeastern neighborhoods of Bayview - Hunters Point and Visitacion Valley, where only 1 of 6 schools has citywide seats (Bret Harte, for Spanish immersion)2. As we will see below, this could have some impact on attendance patterns.
How TK-5 enrollment patterns differ from where students live
The SFUSD Public Data Dashboard includes a map of student enrollment by home zip code, both across all schools at a given grade level (e.g., TK-5) or for specific schools3. In total, almost 24,000 TK-5 students are enrolled in district schools. The map below shows the net amount of students commuting in/out of each zip code, i.e. the number of TK-5 students enrolled in schools that zip code, minus the number living in the zip code. Some technical notes on the map:
To simplify the map, I decided to combine the Mission Bay zip code (94158), which has (for now) no schools, into the 94107 zip code that surrounds it.
I also combined 5 zip codes of northeast SF together (94104, 94105, 94108, 94111, 94133). As you can see from the first map above, some of those zip codes are small and don’t include any schools. The combination of those zip codes creates a region that’s about average in size and student population compared to the other city’s zip codes.
Two zip codes with no schools (Presidio and Treasure Island) were left as is, so their negative numbers are just equal to the number of students living there.
As for the map above, I only consider the location of the early-grade campus for the schools with multiple campuses. In particular, Lilienthal is counted as part of 94118 (its K-2 campus location) rather than 94123 (Marina). For this map, only Sherman Elementary is counted in 94123, yet the district still has a positive “commuting in” balance; there are just that few SFUSD students living in the Marina.
Overall, this map shows that many more students live in the south-central and south-east zip codes (94112, 94134, 94124) than attend school there, whereas many more students attend school in central SF (and to a lesser extent, the very northeast) than live there. The westernmost zip codes mostly break even.
When I say there is a large-scale discrepancy between where students live and where they attend school, I refer to the size of the neighborhood clusters where more students commute out, or where more commute in. This scale is relevant for district planning. The “school capacity” that the district needs in different parts of the city looks very different under the current assignment system than under one where assignment is constrained to a certain area or zone. If the discrepancies existed at a smaller scale, they could easily be smoothed over by zones. If they exist at a large scale, this would force very large zones or elongated zones that cut across the blue-red gradient on the map4. In some sense, a plan to close schools to match the current enrollment patterns would “crystallize” that discrepancy and impose its own limit on future attempts to achieve a more proximity-based assignment system.
Distance to home remains an important factor
If the aggregate figures shown in the map above are relevant for district planning, they can lead to erroneous assumptions about individual behavior. In particular, we may expect a large movement of students directly from the reddest to the bluest zones on that map. Using the SFUSD Public Dashboard Data, let’s look at enrollment patterns by school for the three zip codes with the most students: 94112, 94124 and 94110.
For each graph, the x-axis represents the distance in miles from the school to the centroid (roughly, the “middle point”) of the zip code - so even schools in the zip code are at some distance from its center. The y-axis represents the number of TK-5 students residing in that zip code and attending the school.
This zip code by itself includes 15% of all TK-5 students. I labelled some of the schools that stand out by their enrollment relative to distance. Those outside 94112 are mostly located west of it in southwest SF, with the notable exception of Lau in Chinatown.
The three schools outside 94124 with the greatest enrollment from that zip code are Taylor and Hillcrest in Portola, as well as Revere in Bernal Heights. The schools that stand out further away are mostly citywide schools or schools with language programs.
I would note here that 94124 and 94110 together include a large part of the census tracts covered by the CTIP1 tiebreaker, which gives families residing in those tracts a priority compared to most other new applicants with no existing sibling at a school5. In contrast, 94112 includes no CTIP1 areas. While the CTIP1 tiebreaker could explain the high representation of 94110 at schools receiving a large number of applications, like Alvarado, Clarendon and Rooftop, distance also clearly matters, as much fewer students enroll at those schools from 94124. In fact, students from 94112 are also well represented in many popular citywide and mixed schools despite having no CTIP1 priority. The question of what motivates school choice, however, deserves a deeper analysis and is outside the main scope of this post.
The main point of this diversion was to show that the aggregate pattern above doesn’t mean that those thousands of students in the southeast are attending a school halfway across the city. About half of students in 94124 enrolled outside of that zip code, for example, are enrolled in one of the three adjacent zip codes. But then, other students in those adjacent zip codes also commute further north or west, and so on, to produce an aggregate pattern on a scale that exceeds most individual students’ commutes.
School capacity relative to where students live
Some of the materials produced by SFUSD for the District Advisory Committee (formed to provide guidance on school closures) are still publicly available here. In particular, the “RAI - ES Fact Base” is a massive PDF document with various data on elementary schools. The map below is taken from p.42 of that document, “Where do we have excess seats, comparing building size to where our students live?”
Kindergarten capacity relative to number of kindergarten students living in each attendance area
On this map, each number represents the number of kindergarten seats based on building capacity (rather than current enrollment cap), minus the number of current kindergarten students living in the school’s attendance area. Circles represent citywide schools, for which all capacity is counted as a surplus.
Keep in mind that a SFUSD kindergarten class has a maximum capacity (per the union contract) of 22 students. A few schools have capacity for 5 kindergarten classes (Lau, Parks, Taylor); of those, only Lau currently meets that capacity6. Among the other schools, about 1/2 have capacity for 3 classes (66 students), 1/4 have capacity for 4 classes (88), and 1/4 have capacity for 2 classes (44). Only the newcomer school, Mission Education Center, has a smaller capacity listed here as 10 students.
Based on this map, which large areas of the city would not have sufficient elementary school capacity for their current number of district students? The Webster attendance area (SOMA / Mission Bay / Dogpatch) stands out at -173 seats (almost 8 full classes), and that is why a new elementary school will soon open in Mission Bay. I am not sure if that school will hold 4 kindergarten classes, but if it does, together with the seats at Carmichael, this region would mostly break even.
The neighborhoods around Golden Gate Park (west-center) show some deficits, although that area also contains a few citywide schools that would balance it. Of course, that depends on how the assignment reform deals with the citywide schools, which is a large enough topic to warrant a whole other post.
The last area I want to focus on is the southeast, which I manually delimited on the map. Here, I define southeast SF as the area south and east of 280 from the Daly City border to the Alemany Maze, then east of 101 (but stopping at the Webster attendance area). The area includes 14 of the 71 schools shown here, only one of which is citywide (SF Community), as well as 3 of the 9 elementary schools targeted for closure in 2024.
The map appears to contain some errors, such as the 66 in the northwest corner of my delimited area, which should correspond to Monroe Elementary. The color of the area isn’t dark green like the circle for SF Community, which makes me think that the number was accidentally copy-pasted there. Monroe is more or less at capacity (over capacity, according to the RAI dataset), and another map shows that its kindergarten enrollment is 15 students above the number residing in its attendance area, so we’ll take that value. A similar copy-paste error just outside the delimited area shows a “136” in the light green area above the identical value for Revere. In fact, even the 136 value for Revere is incorrect; no school has that many kindergarten students, and another RAI dataset indicates a K-5 capacity for Revere of 4 classes in kindergarten (88). What I presume happened here is that someone took the full K-8 capacity and divided it by 6 grades instead of 9.
In any case, correcting the figure for Monroe leads to a small deficit of 42 kindergarten seats in the southeast, relative to the ~1000 kindergarten students living there. It is unlikely for student assignment reform, by itself, to fill all those seats. Still, there is a wide range of scenarios between that extreme and the current citywide assignment system, where a net ~3000 K-5 students commute out of the region, resulting in a commensurate level of under-enrollment for its schools.
How will this happen in practice?
School closures necessarily require current students to move to a new school. In contrast, changes to the assignment system can be made without affecting currently enrolled students or even currently enrolled families, if siblings can continue to enroll at the same school. If the district chooses this less disruptive option for implementing assignment changes, then the shift in enrollment patterns from the current to the new system would occur gradually. In that context, excess school capacity is actually helpful, providing a “buffer” for this gradual transition between two geographical distributions of enrollment.
With that in mind, a reasonable course of action would be to change the assignment system, look at how it affects the enrollment patterns of new students, then take decisions on long-term school capacity needs. I doubt the district would proceed this way, not because it’s unfeasible, but because it conflicts with the urgency with which they have been pursuing school closures.
The logistical argument for reducing the number of schools before assignment reform seems less well-grounded and basically amounts to “avoiding redrawing the zones”, where the zones are defined as in the 2020 Board of Education policy. However, the hardest part of drawing the zones in that policy, is to ensure that they encompass areas of the city with similar numbers of socio-economically disadvantaged students. This has to do with the geography of where students live, independent of which schools are in the zone. Of course, each zone needs enough schools for the students living there, but this shouldn’t mean redrawing the zones after a school closure. Indeed, if there isn’t enough excess capacity to redistribute the students within the zone, then why was a school closed in that zone in the first place?
This figure is based on tallying the kindergarten seats in different types of programs from the district’s Annual Assignment Highlights. Separate day classes for special education students are excluded from the count.
This is despite the significant Asian (44%) and Hispanic (24%) population in those two southeastern neighborhoods, according to the data here.
Data is not reported for zip codes where fewer than 5 students attend that particular school, so for most schools, the total reported enrollment is higher than the sum over all reported zip codes. Independently, there is a discrepancy between the total enrollment of a school reported on the map widget vs. the number to the left on the main dashboard. I assume this is due to both parts of the dashboard using different data sources for enrollment. For consistency, I will only use the numbers from the map widget.
Granted, the Board of Education Policy 5101.2, which sets the parameters for student assignment reform, may well result in those types of zones anyway. To meet the policy’s requirement that zones represent a similar distribution of low-income and high-income families than the district as a whole (within a margin), zones from the southeastern neighborhoods would probably need to extend to the high-income areas around Twin Peaks. That said, we should not limit our thinking to the zone scenario, as the current Board’s resolution clearly expresses the option to consider a different assignment reform if the 2020 policy proved difficult to implement.
CTIP1 areas are the 10% of census tracts with the lowest test scores. The map posted here is a few years old, but a (tedious) checking of addresses from various census tracts in the SFUSD Address Lookup Tool suggests that it was still in place as of 2025.
West Portal Elementary, based on annual assignment numbers, appears to have 4.5 kindergarten classes, 3 for general education and 1.5 for Cantonese immersion (the 0.5 being a combined class of K and 1st grade students).


As a parent in 94134, one dimension that feels missing here is school desirability. For many families, the main factor isn’t distance itself, but access to a school they feel good about within a reasonable commute, especially given that many families already drive their kids to school and San Francisco is geographically small.
In my experience, when parents choose schools outside their zip code, it’s usually driven by differences in academic outcomes, stability, or reputation, not because geography doesn’t matter.
The enrollment patterns described here seem more like a reflection of those differences than a problem caused by the assignment system alone.
Curious how the data looks when accounting for socioeconomic factors and school ratings, given that families face very different constraints in how much choice and mobility they have