A friend of mine, Justin Slaughter, and I compiled tables showing the county-by-county results in both 2012 and 2016 for five key swing states that, taken together, were decisive in delivering the Electoral College to Barack Obama in 2012 but to Donald Trump this past November: Wisconsin, Michigan, Ohio, Florida, and Pennsylvania. We compared how Hillary Clinton’s vote total in each county compared with Barack Obama’s vote totals, and how Donald Trump’s vote total compared with Mitt Romney’s vote totals in 2012. By doing this analysis, we hoped to better understand where, exactly, Obama 2012 voters simply stayed home (or voted third party) in 2016; where Obama 2012 voters switched to Donald Trump in 2016, and where Donald Trump was able to win “new” voters who had sat out the election in 2012. Looking to elections ahead, we need to better understand those places where Democrats should focus on mobilizing our core supporters to turn out vs. those places where we should focus on winning back voters who voted for Trump in 2016.

At the national level Hillary got many things right, and she handily won the popular vote, besting Donald Trump by 2,865,075 votes nationally. Clinton also improved on Obama’s 2012 national vote total by 390k votes (while Trump improved on Romney’s figure by 2.2 million votes). But, unfortunately, in our less than perfectly democratic system, we need to understand what went wrong in the key swing states that we lost this year, and not just what went right nationally. (Four years from now of course we’ll also have to assess our viability in states that have been GOP-leaning in recent elections but which may be winnable in the future).

Overall, there are differences in the geography of how Clinton lost each of the five swing states we analyzed — suggesting that there is no single “story” that explains why Clinton lost this decisive group of battlegrounds. Instead, multiple different things went wrong for Clinton.

In Wisconsin and, to a lesser extent Michigan, the most decisive shift in voting appears to be a sharp falloff in voting in urban counties. And in both states, had Clinton simply held on to Obama’s totals in the biggest urban counties in both states, she would have won them despite Trump’s gains elsewhere in each state. (Albeit, Clinton would have had a substantially smaller margin than Obama did in 2012 in each state). In Pennsylvania Clinton faced a more modest falloff in the urban vote and actually won tens of thousands of additional voters in the Philadelphia suburbs, but Trump was able to find large numbers of additional voters, many of whom probably had not voted in 2012, in the mid-size cities scattered across the state. In Ohio, we assess that Trump’s most important margin came from “flipping” enough voters who had supported Obama four years earlier. Finally, in Florida, Clinton won major increases in voters compared to Obama 2012 in the most Democratic urban counties, but Trump was able to overcome Clinton’s increases by making even more dramatic increases of his own in vote totals across a swath of populous suburban and retiree counties. Details on each state are below.

Broadly speaking, we make a couple of critical assumptions that shape the analysis: (1) In counties where Clinton significantly underperformed Obama’s vote totals but where Trump’s vote totals were broadly similar to Romney’s totals four years earlier, I assume we saw Obama 2012 voters simply stay home (or vote third party) this year. (2) In counties where a decline in Clinton voters was broadly mirrored by a comparable uptick in the vote for Trump as compared to Romney, we assume that we are seeing evidence of “Obama-Trump voters.” For example, Ohio had more than 50 counties where the increase in the Trump vote was between 65% and 120% of the decline in Clinton’s vote in the same counties — to me, this looks like evidence of an “Obama-Trump voter.” (3) In counties where the increase in the Trump vote in 2016 compared to Romney’s 2012 total was vastly larger than the decline in the Clinton vote when compared to Obama’s 2012 total, we assume that Trump found voters who sat out 2012 (or voted third party). I should add that the analysis generally ignores the important issue of population gain/loss in each county, which obviously impacts vote totals in 2016 compared to 2012. But we have no easy way to adjust for that issue and just have to hope that the change in population in the relevant counties over the four-year period does not meaningfully alter my analysis.

In swing states as close as these, it is true that differences across different groups would, by themselves, have been sufficient to alter the election’s outcome. For example, in Wisconsin, the single biggest county shift was in Milwaukee, where Clinton’s vote total was 44k fewer votes than Obama’s had been (and Trump’s vote total was 29k behind Romney’s — lots of voters just disappeared). Had Clinton simply held her Milwaukee losses to half of what they were, she would have won the state, everything else being equal. But the Milwaukee falloff was only about 18% of Clinton’s total decline from Obama 2012 in Wisconsin — meaning that things also went wrong for her elsewhere as well.

I should also warn you that our data may not be perfect: Justin and I compiled the county-by-county returns off of state board of elections websites and popular news sites, such as CNN’s election center, and we expect that the data is broadly accurate. But particularly with the 2016 data (which tends to be drawn from news sites rather than state elections offices) it is possible that there are numbers of absentee ballots that have not been counted, individual precincts missing, etc. We have made the Excel files used for this analysis available online and you may find our Excel file by clicking here.

We would welcome criticism, alternative explanations, critiques, and explanations as to why we are wrong. (And the occasional “Agree!” is never objected to). And please do feel free to share with anyone you know who might be interested.

With that, on to the states!

Wisconsin: Wisconsin appears to be largely a story of Democratic voters staying home. Trump’s 2016 winning total of 1,405,284 million votes essentially tied Romney’s 2012 losing vote total of 1,407,966, but Clinton’s vote total of 1,382,536 trailed Obama’s winning 2012 total of 1,620,985 by 238k votes. The biggest falloff in Clinton votes was in Milwaukee County, where she won 44k fewer votes than Obama had four years earlier. Trump, incidentally, also took about 29k fewer votes in Milwaukee than Romney had. Clinton’s vote falloff in Milwaukee was not the result of voters shifting to Trump — they simply did not vote either candidate. Clinton lost another 10k votes in Racine County, 10k in Rock County (industrial south central Wisconsin), and she lost 9k in each of Brown County (Green Bay) and in Kenosha County. These counties also appear to be a story of voters staying home rather than shifting to Trump: while Clinton underperformed Obama by 38k votes in total in these counties, Trump bested the Romney figure by a total of only 1,744 votes. Trump did improve on the Romney 2012 showing in a number of smaller counties. But the aggregate vote totals in these counties were not dispositive to the statewide outcome. Clinton would have won if she had simply turned out the Obama 2012 vote in counties where Trump did not meaningfully improve on Obama’s figure.

Michigan: In Michigan, Trump’s 2016 winning vote total of 2.28 million votes did increase 7.8% above Romney’s losing 2012 vote total of 2.12 million votes. But the larger story was that Clinton’s Michigan vote total of 2.27 million votes was nearly 12% below Obama’s 2012 vote total of 2.56 million votes. Clinton suffered a particularly dramatic voter falloff in Wayne County (Detroit), where she drew 78k fewer votes than Obama had in 2012. Clinton also suffered major fall-offs in in Macomb County (working class white suburbs north of Detroit), where Clinton pulled 32k fewer votes than Obama in 2012, and in Genesee County (Flint), where Clinton pulled 26k fewer votes than the Obama 2012 total. Given that Trump’s Wayne County total only increased by 15k votes over the Romney total in the county, the Detroit falloff is likely more a case of (a) population decline in the county, which likely lost at least 30k people and possibly 50k people between 2012 and 2016, and (b) Obama 2012 voters staying home (or voting third party), than it Obama voters switching to Trump — though we may also have seen some of that, given the 15k increase in Trump’s vote total. Similarly, in Genesee, Trump picked up 12k more votes than Romney had in 2012 — but Trump’s increase was less than half of Clinton’s decline, so we expect that while there may have been some Obama-Trump voters in Genesee, the larger phenomenon was probably Obama 2012 voters staying home. Macomb County, on the other hand, shows clear evidence of a more comprehensive “Obama-Trump voter” effect as Clinton’s decline of 32k votes was pretty much equal to Trump’s 33k increase in the county. There is also evidence of some “Obama-Trump” voters in several smaller and mid-size Michigan counties: in St. Clair country (northeast of Detroit along the Canadian border), Clinton’s loss of 9,430 voters from the Obama total was nearly perfectly mirrored by Trump’s gain of 9,796 over Romney. A number of things clearly went wrong in Michigan. But given that Clinton’s statewide loss was just 11,652 votes, had she simply held her Detroit decline to 80% of what it actually was (e.g., had Clinton underperformed Obama by 60k votes rather than 78k in the county), Clinton would have beaten Trump in the state. (Albeit with a much narrower margin than Obama’s 2012 victory over Romney). That said, we should note that continued population decline in Detroit could make it hard to match Obama turnout going forward, meaning that in 2020 we may need a strategy that is relatively less dependent on Detroit turnout.

Ohio: In Ohio, the topline figures were broadly similar to Michigan: Trump’s winning total of 2.84 million votes improved on Romney’s 2012 figure by approximately 180k votes, about a 7% increase. Clinton’s vote total of 2.39 million votes, on the other hand, was about 434k votes below Obama’s winning 2012 total of 2.83 million, a 15% decline.

Hillary’s vote totals fell substantially in Cuyahoga (Cleveland), where she lost 49k votes, Lucas (Toledo), where she lost 26k votes, and Stark (Canton), where she lost 21k votes. Clinton also underperformed the Obama 2012 vote totals by between 10k and 20k votes in each of Mahoning (Youngstown), Summit (Akron), Trumbull (Youngstown area), Montgomery (Dayton), Lorain (Northeast Ohio), and Lake (Northeast Ohio). In aggregate, the decline in Clinton numbers in these ten counties compared to Obama 2012 come to a loss of 194k votes, a bit under half of Clinton’s overall loss to Trump in the state.

Trump did pick up votes in most of these counties, but Trump’s total pickup in these counties compared to Romney amounted to only 59k votes — indicating that while there may have been some “Obama-Trump” vote in these counties, Clinton’s bigger problem in these counties was Obama 2012 voters staying home. Trump actually underperformed the Romney total in Cuyahoga County by about 6,400 votes and he underperformed Romney by nearly 20k votes in Hamilton county (Cincinnati), which probably reflects his weakness among more affluent suburban GOP voters. However, the county returns suggest Trump was likely effective in finding “Obama-Trump voters” in smaller and mid-size counties across Ohio. There are just over 50 Ohio counties where Clinton underperformed the Obama total by between 1k and 10k votes per county and Trump improved on the Romney figure by a number of votes by between 65% and 120% of the Clinton loss — e.g. small and mid-size counties where Trump’s increase in votes roughly mirrored the Clinton loss of votes, which we take as evidence of Obama-Trump voters. In aggregate, Trump got 132,000 more votes out of these “Obama-Trump” counties than Romney had, while Clinton got 159,000 fewer votes (Trump picked up an average of 83% of Clinton’s falloff in these counties). In Ohio, for Clinton to win she would have needed to both turn out greater numbers of Democrats who stayed home in some of the larger Democratic counties and to reduce this “Obama-Trump voter” effect in the smaller and mid-size counties.

Florida: The county by county results in Florida suggest a different loss trajectory for Clinton. Unlike Michigan, Wisconsin, and Ohio, where Clinton’s vote totals fell significantly from Obama’s 2012 showing, in Florida Clinton’s campaign won 4.49 million votes, up nearly 250k votes from Obama 2012’s 4.24 million vote total in 2012. Trump, however, managed to outperform Romney by an even larger total, nearly 450k votes, taking 4.61 million votes in 2016 to Romney’s 2012 total of 4.16 million. Hillary won major increases in vote totals in Democratic strongholds, led by an 81k vote total increase over Obama 2012 in Miami-Dade County and a 56k vote increase in Orange County. Hillary did underperform Obama in 40 Florida counties, but with a few exceptions these were small counties and total votes were not decisive to the race: In all the counties where Clinton lost votes compared to Obama, she lost a total of 62k votes, less than her increase in votes in Miami Dade alone. Trump overcame Hillary’s improvement in the large Democratic counties by over-performing Romney’s 2012 total in wide swath of the suburban and retiree counties. Examples include Brevard (+22k), Lee (+37k), Pasco (+30k), Pinellas (+25k), Volusia (+25k), Brevard (+22), Polk (+26k), Manatee (+16k), and Hillsborough (+16k). Trump also improved on Romney’s total in Palm Beach by 25k votes, slightly beating Clinton’s own improvement over Obama in the same county.

The county by county analysis of Florida shows that Trump’s Florida victory was not a story of small county voters switching from Obama to Trump nor a story of Clinton failing to turn out her vote in her strongholds. Instead, it is a story of Trump notching major improvements over the Romney showing in populous suburban and retiree counties.

Pennsylvania: In Pennsylvania, Trump won the state with 2.91 million votes, an increase of 172k votes over Romney’s 2012 total. Hillary pulled in 2.84 million votes, falling about 85k votes shy of Obama’s 2.93 million total in 2012.

Clinton underperformed Obama in Philadelphia proper by 28k votes, but over-performed Obama’s 2012 showing in Pittsburgh (Allegheny County) by 10k votes, suggesting that she had broadly effective urban turnout operations in the state. And one of the most striking shifts in Pennsylvania was a migration of affluent suburban Philadelphia voters away from Republicans and towards Clinton: Clinton improved on Obama’s vote total in Delaware County — suburban Philadelphia — by 58k votes while Trump’s Delaware County showing trailed Romney by 65k, suggesting Clinton won a number of voters who backed Romney in 2012. Similar dynamics were in play in two other suburban Philly counties, Chester (Clinton +16k, Trump -9k) and Montgomery (Clinton +18k, Trump -14k).

Trump however, appears to have succeeded in both flipping large numbers of Obama 2012 voters and in finding new voters in mid-size industrial counties and in rural Pennsylvania. Trump pulled a combined total of about 80k more votes than Romney from Luzerne (Wilkes-Barre), York (York), Lackawanna (Scranton), Westmoreland (east of Pittsburg), Schuylkill (East-Central Pennsylvania) and Northampton (Bethlehem area). Clinton lost a total of 42k votes in these counties, suggesting that while Trump may have flipped some Obama voters, Trump was also able to find “New Trump” voters who had not voted for either Obama or Romney four years earlier. Indeed, of the 28 counties in Pennsylvania where Trump won at least 1.5 times more votes than Clinton lost (counties where we expect Trump found voters who sat out the 2012 election as well as winning over Obama voters), Trump improved on the Romney total by an aggregate of 103k votes, about 60% of Trump’s total improvement over Romney in Pennsylvania. From a path to victory perspective, Clinton would have would have had to reduce Trump’s increase in the vote in the small and mid-size and counties in order to win the state. Looking ahead, if Trump manages to hold his 2016 showing in Pennsylvania, we will likely need a combination of holding the GOP-leaning suburban voters we won last year, re-flipping some of the “Obama-Trump” vote, and figuring out how to compensate for the “new” voters Trump found this past November.