- Lead
- 1,705
- Total
- 95,181
- vs nation
- R+0.3
- Turnout
- 71.0%
Muskegon County, MI
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
- 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
Midterm durability
Total general-election participants divided by same-year citizen voting-age population. These are total ballots or participating voters—not presidential candidate votes.
- 2024 total turnout
- 71.0%95,754 participants ÷ 134,908 CVAP
- 2020→2022 drop-off
- +18.0 ptsVolatile
- Drop-off versus state
- +2.8 ptsPositive means a larger decline than the statewide pattern
- Mechanical 2026 scenario
- 53.0%–59.6%Recent-cycle and two-cycle persistence scenarios; not a forecast
| Election | Participants | CVAP | Turnout | Quality |
|---|---|---|---|---|
| 2016 · Presidential | 79,278 | 129,974 | 61.0% | A/A |
| 2018 · Midterm | 73,660 | 130,983 | 56.2% | C/A |
| 2020 · Presidential | 96,730 | 132,147 | 73.2% | A/A |
| 2022 · Midterm | 74,369 | 134,639 | 55.2% | A/A |
| 2024 · Presidential | 95,754 | 134,908 | 71.0% | A/A |
Sources and methods
- 2016: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 293/111.
- 2018: numerator source 159, denominator source 157; top ticket votes; canonical-complete-contest-floor-v1; allocation share 0.0%; series 150/138.
- 2020: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 301/2.
- 2022: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 306/183.
- 2024: numerator source 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 311/228.
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 |
| 1210934000001121-09340-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211384000001121-13840-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211410000001121-14100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211966000001121-19660-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211966000002121-19660-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211966000003121-19660-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1211966000004121-19660-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1212508000001121-25080-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1212508000002121-25080-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1212508000003121-25080-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213098000001121-30980-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213098000002121-30980-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213102000001121-31020-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213102000002121-31020-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213102000003121-31020-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213102000004121-31020-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1213882000001121-38820-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1214516000001121-45160-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1214516000002121-45160-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1214516000003121-45160-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215510000001121-55100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215512000001121-55120-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215544000001121-55440-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632001001121-56320-01001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632001002121-56320-01002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632001003121-56320-01003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632001004121-56320-01004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632002005121-56320-02005 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632002006121-56320-02006 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632002007121-56320-02007 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632003008121-56320-03008 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632003009121-56320-03009 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632003010121-56320-03010 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632004011121-56320-04011 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632004012121-56320-04012 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632004013121-56320-04013 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215632004014121-56320-04014 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000001121-56340-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000002121-56340-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000003121-56340-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000004121-56340-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000005121-56340-00005 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000006121-56340-00006 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215634000007121-56340-00007 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215636000001121-56360-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215636000002121-56360-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215636000003121-56360-00003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215636000004121-56360-00004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215864000001121-58640-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215864000002121-58640-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914001001121-59140-01001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914001002121-59140-01002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914001003121-59140-01003 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914001004121-59140-01004 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914001005121-59140-01005 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914002006121-59140-02006 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914002007121-59140-02007 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914002008121-59140-02008 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914002009121-59140-02009 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1215914002010121-59140-02010 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1216730000001121-67300-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1216952000001121-69520-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1216952000002121-69520-00002 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1217710000001121-77100-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1218678000001121-86780-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1218680000001121-86800-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
| 1218698000001121-86980-00001 | 0 | 0 | 0 | 0 | — | — | No votes |
Presidential margin, 1892–2024
Democratic minus Republican, by election
| Year | Margin (D minus R) |
|---|---|
| 1892 | −6.9% |
| 1896 | −19.7% |
| 1900 | −29.7% |
| 1904 | −59.9% |
| 1908 | −44.7% |
| 1912 | +1.9% |
| 1916 | −11.2% |
| 1920 | −51.9% |
| 1924 | −71.2% |
| 1928 | −53.1% |
| 1932 | +5.8% |
| 1936 | +29.1% |
| 1940 | +12.5% |
| 1944 | +9.3% |
| 1948 | +14.1% |
| 1952 | −4.2% |
| 1956 | −8.4% |
| 1960 | −6.3% |
| 1964 | +24.8% |
| 1968 | −6.4% |
| 1972 | −22.3% |
| 1976 | −13.5% |
| 1980 | −14.5% |
| 1984 | −21.8% |
| 1988 | −7.3% |
| 1992 | +12.2% |
| 1996 | +21.2% |
| 2000 | +11.3% |
| 2004 | +11.2% |
| 2008 | +29.3% |
| 2012 | +17.7% |
| 2016 | +1.5% |
| 2020 | +0.6% |
| 2024 | −1.8% |
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.
U.S. Senate
Each row shows U.S. Senate votes counted inside this Place. “Vote lead” is the local lead here, not necessarily the winner of the full contest.
Governor
Each row shows Governor votes counted inside this Place. “Vote lead” is the local lead here, not necessarily the winner of the full contest.
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.