St. Louis and Kansas City are two of the Midwest’s most well-known cities. Like many other Midwestern cities, both struggled in the latter half of the 20th century. Kansas City has grown faster than St. Louis since then, but a new study finds that both cities would have more employment and more people if they got rid of their earnings taxes.
Like dozens of other Midwestern cities, St. Louis’s population decline began in the 1950s. Since then, it has lost 66% of its residents. Kansas City’s population originally peaked a couple decades later in the 1970s, but unlike St. Louis, its population started to rebound in the 2000s and today it has more people than ever.
While the paths of these two cities have diverged, they still have things in common. One is they both impose earnings taxes. Earnings taxes are paid by everyone who works and lives in St. Louis or Kansas City and apply to labor earnings and business profits. These taxes are unlike more common income taxes that are typically paid based on where someone earns income, not where they live. Additionally, income taxes usually apply to all income, not just earnings, and taxes paid to one government can often be credited towards taxes owed to another to avoid taxing the same income twice. Kansas City imposes a 1% earnings tax on every employee and business in the city and it raises nearly $300 million annually. St. Louis also imposes a 1% earnings tax, and it accounts for 36% of the city’s general revenue.
In the new study published by the Show-Me Institute, economist Howard Wall analyzes the impact earnings taxes have on the population and employment of cities. As he explains, when governments tax something, they get less of it. This is intuitive to most people, especially in the right context. For example, people understand that a major purpose of alcohol and tobacco taxes is to discourage the use of alcohol and tobacco. Likewise, earnings taxes discourage earnings which manifests as fewer people working or working fewer hours.
Earnings taxes can impact cities and their broader metropolitan (metro) areas in a couple different ways. First is the within-metro effect. If only some cities in the metro area impose an earnings tax, people and businesses who want to live or operate in that metro area will be incentivized to do so in the places that do not impose the tax. The result is that the allocation of people and businesses within the metro area will be different that it would be absent the tax.
Second, earnings taxes encourage people and businesses to leave the metro area altogether. For example, suppose a person is choosing between two jobs: One is in Cincinnati and the other is in St. Louis. All else equal, the earnings tax discourages the person from choosing the job in St. Louis. The result is that St. Louis’s and the broader metro area’s population are both smaller than they would be without the earnings tax.
While the theory is sound, we need to go to the data to figure out the magnitude of the tax’s impact. The study finds that, on average, each percentage point of an earnings tax reduced a city’s population growth rate by 4.3 percentage points between 2010 and 2019. This effect is slightly mitigated by a city’s size relative to its surrounding metro area since if a city is big compared to the metro area as a whole it is harder to avoid living or working there and thus being subjected to the tax.
Applying the results to St. Louis, Wall estimates its earnings tax decreased its population growth by 3.4 percentage points. Meanwhile, Kansas City’s earnings tax decreased its growth rate by 2.5 percentage points. St. Louis’s population declined by 5.8% from 2010 to 2019, so without the earnings tax it would have only declined by 2.4%. Kansas City grew by 7.5% over the same period, but without its earnings tax it would have grown by 10%. The table below summarizes the population effects for the two cities in number of people rather than percentages. Without an earnings tax, St. Louis would have lost 7,800 people instead of 18,600, while Kansas City would have added 46,200 instead of 34,600.