Brian Keegan is a regular opinion columnist for Boulder Reporting Lab. His “Charting Boulder” column uses public data to make sense of how the city is changing — from housing and politics to income and population — with clear explanations and a focus on equity.
Boulder’s declining school enrollments carry many inconvenient truths about its demographic past and future. The Boulder Valley School District’s proposal to close four elementary schools has sparked an outpouring of anger and anxiety at public meetings and lit up parents’ WhatsApp groups.
I previously wrote about the political implications of Boulder’s changing demographics. My seven- and two-year-old sons are in the cohort whose public school experience through 2042 will be defined by “managed decline.” These closures may be the first of multiple waves involving their schools being closed, their teachers reassigned or laid off, their transportation routines changing, and their core communities being scattered.
The background section of the district’s “Resilient Schools” slide deck (pg. 10) acknowledges the role that a growing senior population aging in place, dwindling housing opportunities and the high cost of living play in declining enrollments. These are not acts of God, but the consequences of policy choices that began decades ago and that Boulder’s voters continue to support.
A common defense is that declining enrollment “is happening everywhere,” so Boulder’s history, policies and politics can be acquitted of any responsibility. This defense is not only substantively false but also easily refuted. Boulder’s demographic past and future are unmistakable outliers compared with its peers, neighbors and the nation.
First, consider how the City of Boulder’s age pyramid changed between the 2010 and 2020 censuses compared with changes among a basket of 25 peer college cities and the U.S. overall. Boulder’s under-5 population dropped by 17.9% compared with 4.8% in peer cities and 8.9% nationwide. Boulder’s population in the prime parenting years of 35 to 44 was flat, while that population in peer cities grew 14.5%. It is also impossible to ignore the enormous growth of Boulder’s senior population.
Second, the State Demography Office’s forecasts reveal that Boulder County’s school-age population, ages 5 through 17, is projected to shrink significantly through 2050, while other Front Range counties and the rest of the state show low but generally positive growth.
Boulder’s high housing costs are a primary force keeping young families from being able to move here and send their children to local schools. The ratio of median housing costs to median income has grown by 64% in Boulder County since 2000, compared with 50% across other Front Range counties and 40% across peer university communities nationwide. Because these are county-level estimates that include our more affordable “L-town” neighbors, they understate the severity of the housing affordability crisis within the city’s boundaries.
Housing in Boulder is expensive in no small part because its voters chose policies that prioritized “neighborhood character” over neighborhood children. Between 2010 and 2025, the City of Boulder issued permits for only 62 new housing units per 1,000 residents. This is lower than the rates in peer college towns (72), Front Range counties (127), and communities like Erie, Lafayette and Longmont.
While critics may cry that “Boulder is full,” single-family homes are not the only way to build housing: Transit-oriented infill development can generate affordable options for families and seniors alike. Eighty-three percent of Boulder’s permits since 2010 were for multifamily housing (dark bars), higher than in any of the neighboring towns and higher than the median among peer college towns.
Why did Boulder stop building the housing needed for families to populate our schools? A major reason is that a half-century of land-use policy has given greater weight to incumbents’ anxieties about growth than to newcomers’ ability to raise a family in the community where they work.
This can be seen most clearly in the language used in the Boulder Valley Comprehensive Plan since 1977. Preservation-related terms like “growth management” appear far more frequently throughout the 50-year history of the comprehensive plans than terms related to children, schools or affordability.
The 2026 revision and the city’s family-friendly vibrant neighborhoods initiative are promising but only partial starts toward unwinding decades of Boulder’s unnecessarily restrictive land-use policies. The status quo does not preserve Boulder’s existing stock of single-family homes. It allows older homes to be scraped and replaced, by right, with more monochrome McMansions for multimillionaires.
Boulder Valley parents becoming politically activated by school closures should consider all this context before directing their ire at the wrong people or throwing their support behind counterproductive solutions.
BVSD needs to pause this proposal and provide greater transparency about the evidence and strategies it is considering. Its reluctance to share internal evidence and models undermines the legitimacy of its claims, particularly since school closures often do little to save money. Enforceable commitments to smaller class sizes, more support services and expanded programs could garner more support among anxious families than consultantese about “resilience.”
The board should come back with an integrated and unambiguous proposal to “rip off the Band-Aid” by committing to a single round of closures and mergers. The proposed multiyear monitoring process for other elementary and middle schools might keep the consultants they hired to run this process busy but is generating ongoing anxiety for thousands of families about whether, where and when other closures and cuts might land.
The families whose schools are closing should work together to make the case for pursuing alternative metrics and strategies rather than organizing individual efforts to protect their “own” schools. Engaging with school staff and their unions and elevating the voices of marginalized communities are critical. But chatter about recalls risks distracting from the more important work of building an intersectional and intergenerational coalition to support the policies that support public education.
The timing of these closures also overlaps with the start of campaign season for the city’s first even-year elections for city council and mayor. City councils and county commissioners have little to no jurisdiction over the school district’s properties and policies.
It is regrettable to see some candidates making promises they cannot keep to anxious parents while rejecting desperately needed policies they do have authority over, like legalizing “missing middle” housing that could keep more families inside the district.
Boulder’s declining enrollments are yet another hangover from well-intentioned decisions made decades ago. Choices to outsource housing to other places to preserve neighborhood character mirror decisions to defer maintenance to other times to balance short-term budgets.
As you weigh how to engage with political questions about preserving public education and public infrastructure in this year’s and future elections, ask whether candidates and ballot issues are engaging on behalf of the future or disengaging on behalf of the past.
The data and code for replicating these analyses can be found on GitHub.


Further proof that Boulder’s exclusionary land use decisions have contributed to the city’s decline. Everything from the school closures to the $400m bond measure can be traced back to attempts to freeze the city in amber.
Those exclusionary policies have created the very things that diminish the city: Lots of in-commuting that creates traffic, makes parking harder, and contributes to climate change; a decreased tax base; fewer young families; mansions for the rich instead of housing for the many; banks on Pearl Street instead of local shops; and a stagnant culture enforced by people who oppose any worthwhile change.
I hope that Boulder will make the changes necessary to reverse the city’s decline. But I fear there are too many people who want to maintain these failed policies out of misguided nostalgia.
@Mike Curious how you would connect “those exclusionary policies” to “a decreased tax base”. Or do you mean a decreasing RATE OF GROWTH in the tax base? It might be fair to argue that exclusionary policies, ie limits on development, have made housing more precious, leading to higher real estate values and concomitant property tax assessments which actually INCREASE the property tax base.
Increases in property values for a limited number of properties cannot make up for a lack of an increased number of properties, along with other tax receipts, especially when Colorado consistently cuts property taxes.
The tax base is also more than property taxes. How many people are shopping, eating out, going to the movies, etc. in places that aren’t Boulder because they don’t live in Boulder? Why should Boulder be a theme park for people to visit, when it could be a place for people to have a community?
Hear! Hear!
It’s madness that Boulder has allowed this to happen. Allowing more infill housing (even gentle measures like townhomes on single-family lots) would help alleviate so many of the problems Boulder-ites care about: school closures, budget shortfalls, climate change. We have to overcome this conservative impulse to limit change and embrace the obvious solution.
Nonsense. There is no limitation on gentle infill in Boulder, the city has approved duplexes and triplexes everywhere. And none are being built, why, because infill housing is too expensive. Growth policy has zero to do with Keegan’s premise because Boulder’s market is completely inelastic, there are an unlimited number of people that will come here for expensive housing. If Keegan had his way, it would make no difference, there is no amount of infill, development or growth that will make Boulder cheaper. Keegan’s disingenuous argument is comparing Boulder to Broomfield, Highlands ranch, etc, which are not inelastic markets, and which have unlimited prairie to build on (and which are also kind of crappy places to live). With Boulder now an open city, developers have no interest in such building. YIMBYs need to stop imposing their nonsense growth policies on communities where it will have no effect and start supporting public housing.
I watched the BVSD board meeting yesterday and was struck during the conversation about the Boulder Comprehensive plan that the BVSD planners see an inverse relationship between housing density and children, implying the infill will not help the demographic skew. I’m curious if this is supported in your data as well.
Yes, this is what I was going to say. They were very clear that the infill development is not bringing in children but the single family homes do bring in children. I think that is an important point. I would guess that many single family homes occupied by baby boomers are soon going to open up and bring children to Boulder again.
I don’t think this is right:
1. You could increase density quite a lot by simply allowing townhomes where you currently have single family homes. You can absolutely raise a family in a 1500 sf townhome, especially with Boulder’s park and bike infrastructure reducing the need for a large yard.
2. Many of Boulder’s single-family homes are rented out to young adults and college kids with roommates by landlords who do not take care of their properties and rely on the extremely tight rental market to keep rents high, even for substandard housing. Multifamily infill can provide much needed competition for those landlords, attract young people, and free up existing housing stock for families.
One can interpret this data many ways. The graph “City of Boulder’s lagging housing production” is the most telling; maybe families move to the “L-Towns” (and Erie) because they want to live in *single family homes*, not multifamily.
The BVCP update eliminating the exclusive single family home land use could indeed accelerate the trend of families with small children away from Boulder.
The consumption of single family housing stock by things like growth in the University population are not considered here, nor is the makeup of new multifamily developments. I suspect expensive rentals like those along 30th have an even lower proportion of small children than the single family neighborhoods.
Exactly! All that has been built in Boulder over the last 10 years or so seems to be these apartments that gone up all over town. I have heard comments from the younger generations that single family homes are racist, etc (not buying that one, personally). They act like everyone really wants to live in apartments with everything right there. Well, if I had little kids, I would rather rent a single family home with a yard for my kids and animals to play in, and commute from Longmont, etc, then pay $3000 a month for a 3 bedroom apartment with neighbors everywhere. Those newer places all look like somewhere I would have wanted to live (but not be able to afford) in my 20’s, but not over 30. It seems many feel the same way. I, too, wonder what the availability rate of all these apartment complexes is. Are they really THAT popular for families?
Readers may avoid at least two layers of interpretation leading to the claim that “school closures often do little to save money” by reading the cited Stanford paper “The Fiscal Consequences of School Closures in California” (at https://gettingdowntofacts.com/sites/default/files/The%20Fiscal%20Consequences%20of%20School%20Closures%20in%20CA%20Evidence%20from%20a%20Statewide%20Synthetic%20Difference-in-Differences%20Design.pdf ) and deciding for themselves whether that study can fairly be generalized to draw conclusions about the situation in Boulder.
Like many criticisms of Boulder’s land use and growth policies and their effects on population demographics, the analysis ignores the impact of CU on the availability of “middle-income” housing that would appeal to families (as noted in a previous comment). CU essentially dumps over 10,000 students onto Boulder every year, assuming the City housing stock will take it. There are a lot of single and multi-family rental properties that could be available for the missing “prime years” populace that Brian laments about if CU would require every student through sophomore level to live in CU housing. Of course, CU, being an entity unto itself per the State constitution, has no incentive to do that and can safely ignore the City’s housing issues. When/if all of the new “for profit” and CU-owned student units come on line (Harvest House, University Heights, 30th & Baseline, etc) it might shift the market making properties on the Hill and other areas surrounding the campus more available for families (like they used to be). This assumes lower rents or property prices would result because the CU student cash cow would no longer be available. Unfortunately, in Boulder more vacant properties on the market does not necessarily guarantee any reduction in rents or prices; there are always excuses from property owners/landlords that they can’t afford to lower prices. However, in the rental arena, right now there is no incentive for landlords to appeal to the “middle income” market when they can get $6K – $9K per month for packing 4 or 5 students into what could be reasonably priced single or multi-family houses.
Boulder is one of the hot spots to live in. Real estate values will undoubtedly rise. What I have noticed is the amount of friction to remodel in Boulder. This adds a tremendous cost of update the aging homes in our community and thus driving up home prices. I believe this is what Brian’s argument is about. This has been the plan I believe.
One important point: BVSD is not looking at the whole district at once. So it’s not considering population growth/new housing in the eastern half of Boulder County. Their data would look different if they examined the whole picture.
EXACTLY! One of the schools they’re considering closing (Douglass Elementary) is in unincorporated Boulder County, with 51% of its students having Lafayette addresses. Their plan is incomplete and rushed and will do a disservice to all families in BVSD. They need to make a plan that encompasses the ENTIRE district.
Given the tenor of the comments I can see that Boulder will continue to wither. Sad that my city will keep choosing stagnation over progress.
Brian Keegan blames BVSD’s closures on decades of Boulder land-use policy. It’s a well-charted argument, and it falls apart the minute you extend his graphs one county east.
The problem is that he never checks his work against anywhere else. He finds an outcome in Boulder, emptying elementary schools, picks the local policy he already wanted changed, and hands it the blame. The obvious test goes unrun. Did the places that made the opposite choices get the opposite result? They didn’t. Not one.
Douglas County is the anti-Boulder. Greenfield land, permissive permitting, detached family homes, no greenbelt, no growth cap. It went from adding roughly 102 students a year before 2020 to losing 585 a year after. Cherry Creek flipped from plus 369 to minus 429. Jeffco is down about 1,074 students a year and has been closing buildings for years. Statewide, Colorado peaked at 913,223 students in 2019 and has lost around 40,000 since, 10,000 of them last year. Denver only held flat because of immigrant arrivals, and it’s down 1,200 now that those have tapered off.
It’s no better nationally. Austin is the poster child for the upzone-and-build agenda Keegan is selling, and Austin is closing ten schools after losing 3,000 students. They did all of it. They’re closing schools anyway.
When the places that followed the policy and the places that ignored it end up in the same spot, the policy isn’t what’s driving the result. Births are. Colorado’s general fertility rate has dropped roughly a quarter from its 2001 to 2010 average, the third-steepest decline in the country. The state’s 5 to 17 population went from 927,318 in 2019 to 901,507 in 2024. Whoever was going to fill a BVSD kindergarten this fall was born in 2020 or 2021. No 1978 comprehensive plan reached forward forty years to suppress births in Boulder while sparing Parker and Pflugerville, and it plainly didn’t spare them, because they’re closing schools too.
Keegan’s own headline number gives it away. Boulder’s under-5 population fell 17.9 percent between 2010 and 2020. That’s a birth statistic. You can’t zone a baby out of existence. He’s dressed up a fertility number in land-use clothing.
His remedy contradicts his diagnosis, too, and he supplies the proof himself. Eighty-three percent of Boulder’s permits since 2010 were multifamily, a higher share than any town around us. He offers that as evidence Boulder tried. Look at what it actually shows. Districts that study this for a living find multifamily generates the fewest schoolchildren per unit, often a quarter to a third of what a detached house generates. Boulder spent fifteen years approving the product least likely to fill a classroom, and his prescription is more of it.
Then there’s the arithmetic he skips. BVSD projects more than 2,500 empty Boulder elementary seats by 2030. Refilling those at normal multifamily rates would take something like fifteen to twenty thousand units in four years, in a city that permits a few hundred. Even if he were right about the cause, his fix shows up a decade after the vote it’s supposed to influence. He’s arguing 2045 policy into a 2026 agenda item.
That’s the tell, really. His housing argument stands fine on its own. It didn’t need the schools, but the schools got drafted to carry it, and the conclusion (vote for the housing slate) was set before the enrollment data arrived. There’s nothing wrong with advocacy. There’s something wrong with selling it as computational social science.
I’m not arguing Boulder should build nothing. I develop and manage property here, and I’d like the zoning fight to go somewhere useful. But we should stop congratulating ourselves for building the wrong thing. Most of what’s been approved over the last fifteen years is a studio, a one-bedroom, or a five+ bedroom rent-by-the-bedroom stealth dorm leased out by the mattress. That’s student housing wearing a residential costume, and nobody standing in the permitting line believes it’s going to put a kid in a classroom at Mesa or Flatirons. If Boulder wants families, it has to approve what families actually live in: small single-family homes, duplexes, honest three-bedroom units with a yard, a second bathroom, and a price a teacher or a nurse can carry. That’s the harder fight, because it means writing a code where family-sized housing pencils instead of one that quietly rewards whoever can squeeze the most rent out of a lot.
It’s also the only version of Keegan’s argument worth having. Even then it wouldn’t fill the four schools on the board’s list this fall. Those kids were never born, and no zoning code fixes that after the fact.
Thank you for your comment. Insightful and thought-provoking.
No growth policies are great for our communites. Open Space is great for our communities. But we need to look again at our love for NIMBYS to oppose development on their neighbors’ properties and vacant lands. Separate from governmental interventions can be a Taking but catering to those that want to keep those dilapidated structures as undevelopable is a bad governing decision. As is the building dept, being so difficult with the permit process, where it can take 2-3 years for a project to get approved. We have it available to add ADU’s by polis but again the convenants and restrictions by the building department still make those untenable. And lastly, small businesses can not afford the downtown rents, which largely come from ridiculous commercial tax rates.
Boulder has never been NIMBY; the only affordable housing in Boulder is because of the goal of 15 percent affordable goal set by the inclusionary housing ordinance, hardly a NIMBY position. The inclusionary housing ordinance was not a Progressive idea, but good old PLAN Boulder County. The idea that ADUs are going to be build in sufficient numbers to have any impact on affordability is a pipe dream; these ADUs are going to rent out far over the market rate of the Denver area. Thousands of ADUs would need to be build for there to be a market rate effect; this is not, and will never happen, in this community not because of regulation, but because it is completely unrealistic to expect the market to build these. ADUs are few and what has been build or planning to be build is having no impact on housing costs. Compare this to the tens of thousands of homes being build in the L towns and Adams County. This supposedly Progressive council even refused to implement an affordability requirement for ADUs, instead allowing market rates to be charged. Keegan’s lack of vision, or data, to show that the market has ever created affordable housing in this community is noteworthy, as is his failure to note the real affordability crisis facing the mobile home community of San Lazaro.
This is lower than the rates in peer college towns (72), Front Range counties (127), and communities like Erie, Lafayette and Longmont.
Erie and Lafayette are both in BVSD, so this is an exceptionally poor point