Two Stories From 2020: Which Is True?
There have been many, many stories about a decline in demand for urban housing* caused by the COVID-19 recession. Because many people can work for home, they no longer need to live in expensive downtowns. As a result, rents in midtown Manhattan and urban San Francisco have plunged. One possible interpretation of these facts is that the 2020s will be like the 1970s, when cities declined and suburbs exploded. Another interpretation is that the most expensive cities are losing people, but that cheaper cities are doing no worse than usual. Which story is supported by the data?
A recent study by Federal Reserve Bank of Cleveland economist Stephen Whittaker seeks to answer this question. Whittaker relies on the Equifax Consumer Credit Panel (CCP) which tracks the addresses of a random sample of people with credit files. Whittaker defines "urban" census tracts as those with over 7,000 people per square mile or with most of their houses built before World War II—in other words, most non-Sunbelt urban neighborhoods, and some inner-suburban neighborhoods as well.
As a whole, urban census tracts did lose people after cities began to shut down their downtowns—but out-migration has changed less than in-migration. Between March and September 2020, the average number of out-migrants from urban Census tracts increased by 10,000 people per month, compared to the 2017-19 average. However, the average number of in-migrants decreased by 18,000. In other words, the major relevant impact of COVID-19 was that many people did not move to cities for jobs, as they ordinarily would have. For example, graduating students often flock to downtowns in July and August for their first jobs, but were unable to do so as the jobs became remote or disappeared.
In addition, the amount of change varied significantly by city. At one extreme, the outflow in metro New York City's urban census tracts increased by 57 per 100,000 people between April and September 2020. Similarly, in San Francisco's urban census tracts, 50 extra people per 100,000 left last year.
But in a surprising number of metro areas, urban inflow increased (or at least decreased less than usual). For example, in Rust Belt cities like Buffalo, Cincinnati, and Detroit there was a mild net inflow, ranging from barely positive to a gain of 12 per 100,000 relative to a normal year. Similarly, some major Sun Belt metros such as Raleigh, Salt Lake City, Houston and Albuquerque registered minor net gains in their urban tracts. In another group of metros, fewer people left town than usual, but on balance there was a net outflow of population because fewer people moved into town than usual. This group included Rust Belt Milwaukee, Pittsburgh, Cleveland, and Akron, and some growing metros like Portland and Austin.
Of the over 90 metros surveyed, only five experienced an outflow of over 30 people per 100,000 residents relative to 2017-19: New York, San Francisco, Bridgeport, New Haven and Harrisburg. New York and San Francisco are arguably the most expensive big cities in the United States, so it makes sense that people would leave them for cheaper rents if they could work from a cheaper city. New Haven is of course a college town, so perhaps Yale students were going home in large numbers. (Bridgeport and Harrisburg, I can't explain.)
Two other metros had outflows in the 20-30 per 100,000 range, San Diego and Riverside (both fairly high-cost metros). A few metros had major population inflows that were almost entirely driven by people not moving in rather than people leaving: for example, Washington's outflow was only 11 per 100,000 residents, but its inflow decreased by 48 per 100,000.
So on balance, the "fleeing the city" story fits New York and San Francisco—but not other large cities.
*I reject the common term "urban exodus" as an example of anti-urban media bias. The term "Exodus" is often associated with the Biblical departure of Jews from Egypt, and thus implies that (a) almost everyone left and (b) that moving to suburbs is desirable, if not Divinely commanded. Implication (a) is of course false, and implication (b) does not reflect my values.