- Lead
- 1,705
- Total
- 95,181
- vs nation
- R+0.3
- Turnout
- 71.0%
Muskegon County, MI
▦ precinct · ▥ counties · ▢ no spatial detail
President margin by year
Place winner margin
President results by year
2024 turnout 71.0% of 134,908 citizens 18+
- Lead
- 510
- Total
- 92,444
- vs nation
- R+3.9
- Turnout
- 73.2%
- Lead
- 1,177
- Total
- 78,723
- vs nation
- R+0.6
- Turnout
- 61.0%
- Lead
- 13,552
- Total
- 76,397
- vs nation
- D+13.9
- Turnout
- —
- Lead
- 24,676
- Total
- 84,271
- vs nation
- D+22.0
- Turnout
- —
- Lead
- 8,980
- Total
- 80,313
- vs nation
- D+13.6
- Turnout
- —
- Lead
- 7,837
- Total
- 69,270
- vs nation
- D+10.8
- Turnout
- —
- Lead
- 13,455
- Total
- 63,438
- vs nation
- D+12.7
- Turnout
- —
Key facts
- 2024 presidential margin
- R+1.8MIT Election Lab
- Population
- 175,9612024 5-year
- Population density
- 349 / sq mi2024 5-year · TIGER/Line
- Land area
- 504 sq miTIGER/Line
- Median household income
- $65,0242024 5-year
- White (non-Hispanic)
- 75.0%2024 5-year
- Black
- 12.0%2024 5-year
- Hispanic / Latino
- 6.3%2024 5-year
- Peak Democratic margin
- D+29.3 in 2008MIT Election Lab
- Peak Republican margin
- R+71.2 in 1924MIT Election Lab
- Most similar
- Calhoun County, MI · twin score 93.2
Turnout and midterm durability
Participation measured against the same-year citizen voting-age population. Audited cycles count total general-election participants — ballots or participating voters, not presidential candidate votes. Cycles before 2016 predate that series and are derived from the certified presidential returns instead; they are marked everywhere they appear and are excluded from the figures below.
- 2024 turnout
- 71.0%95,754 participants ÷ 134,908 CVAP
- 2020→2022 drop-off
- +18.0 ptsVolatile
- Drop-off vs state
- +2.8 ptsPositive means a larger decline than the statewide pattern
- Mechanical 2026
- 53.0%–59.6%Recent-cycle and two-cycle persistence scenarios; not a forecast
Select a presidential cycle to show it on the map and results ledger above.
| Cycle | Participants | CVAP | Turnout | Series | Quality |
|---|---|---|---|---|---|
| 95,754 | 134,908 ± 547 | 71.0% | Audited | A/A | |
| 2022Mid | 74,369 | 134,639 ± 514 | 55.2% | Audited | A/A |
| 96,730 | 132,147 ± 547 | 73.2% | Audited | A/A | |
| 2018Mid | 73,660 | 130,983 ± 410 | 56.2% | Audited | C/A |
| 79,278 | 129,974 ± 316 | 61.0% | Audited | A/A | |
| 76,397 | 127,451 | 59.9% | Derived | — | |
| 84,271 | 128,775 | 65.4% | Derived | — | |
| 80,313 | 130,099 extrapolated | 61.7% | Derived | — |
Sources and methods
Audited cycles (2016, 2018, 2020, 2022, 2024) count total general-election participants against the same-year CVAP special tabulation, each cell carrying its own numerator and denominator quality grade. Derived cycles (2004, 2008, 2012) come from the certified presidential returns on this page over the ACS 5-year CVAP series, so they measure presidential votes cast rather than ballots — a floor on participation. Where a derived cycle predates the ACS its denominator is extrapolated rather than read, and says so on its own line below. They are shown for the longer arc and are excluded from the drop-off, excess-drop-off, and 2026 scenario figures above.
- 2024: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 311/228.
- 2022: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 306/183.
- 2020: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 301/2.
- 2018: numerator source 159, denominator source 157; top ticket votes; canonical-complete-contest-floor-v1; allocation share 0.0%; series 150/138.
- 2016: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 293/111.
- 2012 (derived): Certified presidential returns · ACS 5-year CVAP (B05003); presidential votes cast — a floor on participation, not a ballot count.
- 2008 (derived): Certified presidential returns · ACS 5-year CVAP (B05003); presidential votes cast — a floor on participation, not a ballot count.
- 2004 (derived): Certified presidential returns · extrapolated CVAP denominator; presidential votes cast — a floor on participation, not a ballot count; 2004 predates the ACS, so the denominator is a linear back-extrapolation from the 2008 and 2012 CVAP values, not a read figure.
Interactive election map
One map. Every available contest.
The map and local result cover Muskegon County only. The complete contest result is shown below for comparison.
Muskegon County result
0 precinct units · 0 candidate votes
Governor contest result
Loading the complete contest result…
Explore precinct resultsSearch, sort, compare years, or export CSV · 120 precincts
Precinct data
Results by precinct
120 precincts · 95,181 votes
Precinct boundaries and identifiers are cycle-specific. This table does not join rows across years without a validated crosswalk.
| Precinct -City of Norton Shores, Precinct 1City of Norton Shores, Precinct 1 | 1,916 | 1,707 | 51 | 3,674 | 52.2% | 46.5% | D+5.7 |
|---|---|---|---|---|---|---|---|
| Precinct -City of Norton Shores, Precinct 4City of Norton Shores, Precinct 4 | 1,401 | 1,612 | 50 | 3,063 | 45.7% | 52.6% | R+6.9 |
| Precinct -Laketon Township, Precinct 1Laketon Township, Precinct 1 | 1,379 | 1,599 | 54 | 3,032 | 45.5% | 52.7% | R+7.3 |
| Precinct -Muskegon Charter Township, Precinct 2Muskegon Charter Township, Precinct 2 | 1,284 | 1,487 | 31 | 2,802 | 45.8% | 53.1% | R+7.2 |
| Precinct -City of North Muskegon, Precinct 1City of North Muskegon, Precinct 1 | 1,332 | 1,299 | 31 | 2,662 | 50.0% | 48.8% | D+1.2 |
| Precinct -Dalton Township, Precinct 3Dalton Township, Precinct 3 | 963 | 1,573 | 33 | 2,569 | 37.5% | 61.2% | R+23.7 |
| Precinct -City of Muskegon, Ward 4, Precinct 8City of Muskegon, Ward 4, Precinct 8 | 1,582 | 876 | 43 | 2,501 | 63.3% | 35.0% | D+28.2 |
| Precinct -City of Muskegon, Ward 2, Precinct 4City of Muskegon, Ward 2, Precinct 4 | 1,763 | 598 | 41 | 2,402 | 73.4% | 24.9% | D+48.5 |
| Precinct -City of Roosevelt Park, Precinct 1City of Roosevelt Park, Precinct 1 | 1,326 | 962 | 42 | 2,330 | 56.9% | 41.3% | D+15.6 |
| Precinct -Muskegon Charter Township, Precinct 1Muskegon Charter Township, Precinct 1 | 1,168 | 1,071 | 34 | 2,273 | 51.4% | 47.1% | D+4.3 |
| Precinct -City of Muskegon, Ward 4, Precinct 9City of Muskegon, Ward 4, Precinct 9 | 1,313 | 857 | 31 | 2,201 | 59.7% | 38.9% | D+20.7 |
| Precinct -Muskegon Charter Township, Precinct 3Muskegon Charter Township, Precinct 3 | 955 | 1,179 | 31 | 2,165 | 44.1% | 54.5% | R+10.3 |
| Precinct -Egelston Township, Precinct 2Egelston Township, Precinct 2 | 787 | 1,314 | 25 | 2,126 | 37.0% | 61.8% | R+24.8 |
| Precinct -City of Norton Shores, Precinct 2City of Norton Shores, Precinct 2 | 1,059 | 1,034 | 25 | 2,118 | 50.0% | 48.8% | D+1.2 |
| Precinct -Fruitland Township, Precinct 2Fruitland Township, Precinct 2 | 832 | 1,234 | 28 | 2,094 | 39.7% | 58.9% | R+19.2 |
| Precinct -Fruitport Township, Precinct 3Fruitport Township, Precinct 3 | 802 | 1,248 | 23 | 2,073 | 38.7% | 60.2% | R+21.5 |
| Precinct -Fruitport Township, Precinct 4Fruitport Township, Precinct 4 | 864 | 1,156 | 24 | 2,044 | 42.3% | 56.6% | R+14.3 |
| Precinct -Cedar Creek Township, Precinct 1Cedar Creek Township, Precinct 1 | 668 | 1,322 | 29 | 2,019 | 33.1% | 65.5% | R+32.4 |
| Precinct -Laketon Township, Precinct 2Laketon Township, Precinct 2 | 902 | 1,060 | 27 | 1,989 | 45.3% | 53.3% | R+7.9 |
| Precinct -City of Norton Shores, Precinct 7City of Norton Shores, Precinct 7 | 950 | 966 | 38 | 1,954 | 48.6% | 49.4% | R+0.8 |
| Precinct -Egelston Township, Precinct 1Egelston Township, Precinct 1 | 717 | 1,147 | 32 | 1,896 | 37.8% | 60.5% | R+22.7 |
| Precinct -City of Muskegon, Ward 1, Precinct 1City of Muskegon, Ward 1, Precinct 1 | 1,354 | 487 | 23 | 1,864 | 72.6% | 26.1% | D+46.5 |
| Precinct -City of Muskegon, Ward 1, Precinct 2City of Muskegon, Ward 1, Precinct 2 | 1,290 | 533 | 36 | 1,859 | 69.4% | 28.7% | D+40.7 |
| Precinct -City of Whitehall, Precinct 1City of Whitehall, Precinct 1 | 886 | 923 | 21 | 1,830 | 48.4% | 50.4% | R+2.0 |
| Precinct -Ravenna Township, Precinct 1Ravenna Township, Precinct 1 | 464 | 1,336 | 26 | 1,826 | 25.4% | 73.2% | R+47.8 |
| Precinct -Fruitport Township, Precinct 1Fruitport Township, Precinct 1 | 622 | 1,175 | 25 | 1,822 | 34.1% | 64.5% | R+30.4 |
| Precinct -Fruitport Township, Precinct 5Fruitport Township, Precinct 5 | 712 | 1,083 | 23 | 1,818 | 39.2% | 59.6% | R+20.4 |
| Precinct -Muskegon Charter Township, Precinct 4Muskegon Charter Township, Precinct 4 | 781 | 983 | 27 | 1,791 | 43.6% | 54.9% | R+11.3 |
| Precinct -Fruitland Township, Precinct 1Fruitland Township, Precinct 1 | 854 | 907 | 29 | 1,790 | 47.7% | 50.7% | R+3.0 |
| Precinct -Sullivan Township, Precinct 1Sullivan Township, Precinct 1 | 504 | 1,203 | 28 | 1,735 | 29.0% | 69.3% | R+40.3 |
| Precinct -Fruitport Township, Precinct 2Fruitport Township, Precinct 2 | 688 | 997 | 30 | 1,715 | 40.1% | 58.1% | R+18.0 |
| Precinct -Egelston Township, Precinct 3Egelston Township, Precinct 3 | 778 | 895 | 27 | 1,700 | 45.8% | 52.6% | R+6.9 |
| Precinct -Dalton Township, Precinct 1Dalton Township, Precinct 1 | 596 | 1,069 | 31 | 1,696 | 35.1% | 63.0% | R+27.9 |
| Precinct -City of Norton Shores, Precinct 6City of Norton Shores, Precinct 6 | 779 | 819 | 38 | 1,636 | 47.6% | 50.1% | R+2.4 |
| Precinct -Casnovia Township, Precinct 1Casnovia Township, Precinct 1 | 406 | 1,142 | 22 | 1,570 | 25.9% | 72.7% | R+46.9 |
| Precinct -City of Montague, Precinct 1City of Montague, Precinct 1 | 721 | 801 | 24 | 1,546 | 46.6% | 51.8% | R+5.2 |
| Precinct -City of Norton Shores, Precinct 5City of Norton Shores, Precinct 5 | 709 | 794 | 25 | 1,528 | 46.4% | 52.0% | R+5.6 |
| Precinct -City of Muskegon, Ward 3, Precinct 7City of Muskegon, Ward 3, Precinct 7 | 919 | 523 | 19 | 1,461 | 62.9% | 35.8% | D+27.1 |
| Precinct -Blue Lake Township, Precinct 1Blue Lake Township, Precinct 1 | 507 | 935 | 17 | 1,459 | 34.7% | 64.1% | R+29.3 |
| Precinct -Holton Township, Precinct 1Holton Township, Precinct 1 | 451 | 928 | 21 | 1,400 | 32.2% | 66.3% | R+34.1 |
| Precinct -City of Norton Shores, Precinct 3City of Norton Shores, Precinct 3 | 646 | 640 | 24 | 1,310 | 49.3% | 48.9% | D+0.5 |
| Precinct -Dalton Township, Precinct 2Dalton Township, Precinct 2 | 437 | 757 | 17 | 1,211 | 36.1% | 62.5% | R+26.4 |
| Precinct -City of Muskegon, Ward 3, Precinct 6City of Muskegon, Ward 3, Precinct 6 | 865 | 239 | 19 | 1,123 | 77.0% | 21.3% | D+55.7 |
| Precinct -Whitehall Township, Precinct 1Whitehall Township, Precinct 1 | 486 | 604 | 18 | 1,108 | 43.9% | 54.5% | R+10.6 |
| Precinct -City of Muskegon, Ward 2, Precinct 3City of Muskegon, Ward 2, Precinct 3 | 859 | 206 | 16 | 1,081 | 79.5% | 19.1% | D+60.4 |
| Precinct -City of Muskegon Heights, Precinct 4City of Muskegon Heights, Precinct 4 | 873 | 126 | 15 | 1,014 | 86.1% | 12.4% | D+73.7 |
| Precinct -White River Township, Precinct 1White River Township, Precinct 1 | 419 | 577 | 18 | 1,014 | 41.3% | 56.9% | R+15.6 |
| Precinct -Montague Township, Precinct 1Montague Township, Precinct 1 | 390 | 581 | 11 | 982 | 39.7% | 59.2% | R+19.5 |
| Precinct -City of Muskegon Heights, Precinct 1City of Muskegon Heights, Precinct 1 | 852 | 81 | 14 | 947 | 90.0% | 8.6% | D+81.4 |
| Precinct -Moorland Township, Precinct 1Moorland Township, Precinct 1 | 221 | 695 | 17 | 933 | 23.7% | 74.5% | R+50.8 |
| Precinct -City of Muskegon Heights, Precinct 3City of Muskegon Heights, Precinct 3 | 706 | 128 | 13 | 847 | 83.4% | 15.1% | D+68.2 |
| Precinct -City of Muskegon, Ward 3, Precinct 5City of Muskegon, Ward 3, Precinct 5 | 580 | 208 | 12 | 800 | 72.5% | 26.0% | D+46.5 |
| Precinct -City of Muskegon Heights, Precinct 2City of Muskegon Heights, Precinct 2 | 710 | 57 | 11 | 778 | 91.3% | 7.3% | D+83.9 |
| Blue Lake Township 00001121-09340-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Casnovia Township 00001121-13840-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Cedar Creek Township 00001121-14100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Dalton Township 00001121-19660-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Dalton Township 00002121-19660-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Dalton Township 00003121-19660-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Dalton Township 00004121-19660-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| Egelston Township 00001121-25080-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Egelston Township 00002121-25080-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Egelston Township 00003121-25080-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitland Township 00001121-30980-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitland Township 00002121-30980-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitport Charter Township 00001121-31020-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitport Charter Township 00002121-31020-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitport Charter Township 00003121-31020-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Fruitport Charter Township 00004121-31020-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| Holton Township 00001121-38820-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Laketon Township 00001121-45160-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Laketon Township 00002121-45160-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Laketon Township 00003121-45160-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Montague City 00001121-55100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Montague Township 00001121-55120-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Moorland Township 00001121-55440-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00001121-56340-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00002121-56340-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00003121-56340-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00004121-56340-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00005121-56340-00005 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00006121-56340-00006 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Charter Township 00007121-56340-00007 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 01001121-56320-01001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 01002121-56320-01002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 01003121-56320-01003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 01004121-56320-01004 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 02005121-56320-02005 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 02006121-56320-02006 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 02007121-56320-02007 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 03008121-56320-03008 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 03009121-56320-03009 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 03010121-56320-03010 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 04011121-56320-04011 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 04012121-56320-04012 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 04013121-56320-04013 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon City 04014121-56320-04014 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Heights City 00001121-56360-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Heights City 00002121-56360-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Heights City 00003121-56360-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Muskegon Heights City 00004121-56360-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| North Muskegon City 00001121-58640-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| North Muskegon City 00002121-58640-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 01001121-59140-01001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 01002121-59140-01002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 01003121-59140-01003 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 01004121-59140-01004 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 01005121-59140-01005 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 02006121-59140-02006 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 02007121-59140-02007 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 02008121-59140-02008 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 02009121-59140-02009 | 0 | 0 | 0 | 0 | — | — | No votes |
| Norton Shores City 02010121-59140-02010 | 0 | 0 | 0 | 0 | — | — | No votes |
| Ravenna Township 00001121-67300-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Roosevelt Park City 00001121-69520-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Roosevelt Park City 00002121-69520-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| Sullivan Township 00001121-77100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| White River Township 00001121-86980-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Whitehall City 00001121-86780-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| Whitehall Township 00001121-86800-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
presidential history
Party record book
Muskegon County, MI · the strongest Democratic and Republican presidential performances recorded here, measured three ways.
1892–2024 · 34 presidential cycles
Highest vote share
Largest share of the presidential candidate vote cast here.
Democratic
Barack Obama2008
63.9%
53,821 votes · D+29.3
Runner-up · Franklin D. Roosevelt, 1936 · 63.6%
Republican
Calvin Coolidge1924
79.2%
14,422 votes · R+71.2
Runner-up · Theodore Roosevelt, 1904 · 76.5%
Most votes
Largest number of votes cast for the party’s presidential nominee here.
Democratic
Barack Obama2008
53,821votes
63.9% of the vote · D+29.3
Runner-up · Kamala Harris, 2024 · 46,028 votes
Republican
Donald Trump2024
47,733votes
50.1% of the vote · R+1.8
Runner-up · Donald Trump, 2020 · 45,133 votes
Best relative to the U.S.
This Place’s margin against the national margin in the same election — positive when it leaned toward the party more than the country did.
Democratic
Barack Obama2008
+22.0pts D vs U.S.
Place D+29.3 · U.S. D+7.3
Runner-up · Barack Obama, 2012 · +13.9 pts
Republican
Calvin Coolidge1924
+46.0pts R vs U.S.
Place R+71.2 · U.S. R+25.2
Runner-up · Theodore Roosevelt, 1904 · +40.2 pts
Current officeholders
Seats representing Muskegon County, MI. A county elects none of these itself — they are the members for the 2 congressional, 2 state senate and 3 state house districts it falls inside, so parts of the county are represented by different members.
Senate and governor results are in the Office selector at the top of this page.
U.S. House
Each row shows U.S. House votes counted inside this Place. “Vote lead” is the local lead here, not necessarily the winner of the full contest.
| Year | Vote lead | Democratic | Republican | Total |
|---|---|---|---|---|
| 2024 | D | 50.4%44,678 | 49.6%44,025 | 88,703 |
| 2020 | R | 45.7%39,932 | 54.3%47,516 | 87,448 |
Registered voters
Total registered voters, over time
| Year | Total registered |
|---|---|
| 2016 | 128,799 |
| 2018 | 129,496 |
| 2020 | 141,197 |
| 2022 | 144,241 |
| 2024 | 148,028 |
Who moves in and out
Net migration over time, and who arrivals are — where they came from and what those places vote
+731 net domestic migration · 2025
Net +1,249 over 2011–2025 · gain loss
Arrivals reported $55,381 in average income, against $64,260 for residents who stayed — 14% lower. (IRS SOI, 2022–23)
The places arrivals came from lean R+13.1 on average — 11 points more Republican-leaning than Muskegon County, MI itself (R+1.8).
Where arrivals came from lean of each source
- Ottawa County, MI885R+20.4
- Kent County, MI569D+5.4
- Oceana County, MI208R+30.0
- Newaygo County, MI174R+42.8
- Allegan County, MI67R+27.2
- Oakland County, MI43D+10.6
Where departures went households, 2022–23
- Ottawa County, MI696
- Kent County, MI505
- Oceana County, MI187
- Newaygo County, MI156
- Cook County, IL52
- Kalamazoo County, MI48
Migration is one input to a place’s political change, not its cause — a shift can also come from residents changing their minds, generational turnover, or turnout. These figures describe the places people moved between; they do not measure how any mover voted.
| Year | Net domestic migration |
|---|---|
| 2011 | −2,454 |
| 2012 | −419 |
| 2013 | +1,599 |
| 2014 | −499 |
| 2015 | −173 |
| 2016 | +280 |
| 2017 | +20 |
| 2018 | −447 |
| 2019 | −362 |
| 2021 | +951 |
| 2022 | +239 |
| 2023 | +965 |
| 2024 | +818 |
| 2025 | +731 |
Muskegon shifted from a reliably Democratic stronghold to near-even territory over the past decade, with its mix of industrial workers, mid-sized city voters, and rural townships producing some of Michigan's tightest county-level results.
Across the recorded series it reached a Democratic high of 29.3 points in 2008 and a Republican high of 71.2 points in 1924. Between 2020 and 2024 the county moved 2.3 points toward the Republican candidate; the 2024 margin was 1.8 points.
A population of 175,961, a 75% non-Hispanic-white share, and a median household income of $65,024 describe the county. The county's voting pattern over the last decade is most similar to that of Calhoun County and Genesee County.
The counties whose fingerprint — 2000–2024 trajectory, demographics, ancestry, religion — sits closest to this one, and why.
Twin score (0–100) = weighted cosine between tier-standardized fingerprints: presidential margins 2000–2024 with 12-yr trend and elasticity, ACS income, age, education, population and race, top reported ancestries, and religious adherence — chips name the closest-shared dimensions and the widest gap. Re-weight the groups in the twins explorer.
Browse places by community — income, education, race & ethnicity, language — all community cuts →
Compare two places, side by side
Twelve curated comparisons line up election history, demographics, and the divergence story for two places at a glance. Browse all comparisons →
Muskegon County, Michigan. Akashic. https://akashic.app/county/26121/. Accessed May 20, 2026. License: CC BY 4.0.