- Lead
- 17,606
- Total
- 197,617
- vs nation
- R+7.4
- Turnout
- 64.5%
Madison County, AL
▦ precinct · ▥ counties · ▢ no spatial detail
President margin by year
Place winner margin
President results by year
2024 turnout 64.5% of 306,803 citizens 18+
- Lead
- 15,494
- Total
- 194,767
- vs nation
- R+12.4
- Turnout
- 70.1%
- Lead
- 26,698
- Total
- 158,963
- vs nation
- R+18.9
- Turnout
- 62.9%
- Lead
- 28,869
- Total
- 155,059
- vs nation
- R+22.5
- Turnout
- —
- Lead
- 22,848
- Total
- 152,899
- vs nation
- R+22.2
- Turnout
- —
- Lead
- 24,529
- Total
- 131,062
- vs nation
- R+16.3
- Turnout
- —
- Lead
- 13,952
- Total
- 113,318
- vs nation
- R+12.8
- Turnout
- —
- Lead
- 8,131
- Total
- 100,858
- vs nation
- R+16.6
- Turnout
- —
Key facts
- 2024 presidential margin
- R+8.9MIT Election Lab
- Population
- 405,7182024 5-year
- Population density
- 506 / sq mi2024 5-year · TIGER/Line
- Land area
- 802 sq miTIGER/Line
- Median household income
- $86,4992024 5-year
- White (non-Hispanic)
- 61.6%2024 5-year
- Black
- 23.6%2024 5-year
- Hispanic / Latino
- 6.8%2024 5-year
- Peak Democratic margin
- D+83.7 in 1904MIT Election Lab
- Peak Republican margin
- R+51.9 in 1964MIT Election Lab
- Most similar
- Hamilton County, TN · twin score 93.7
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
- 64.5%197,868 participants ÷ 306,803 CVAP
- 2020→2022 drop-off
- +28.1 ptsPresidential-dependent
- Drop-off vs state
- +2.6 ptsPositive means a larger decline than the statewide pattern
- Mechanical 2026
- 36.4%–45.4%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 |
|---|---|---|---|---|---|
| 197,868 | 306,803 ± 1,559 | 64.5% | Audited | A/A | |
| 2022Mid | 124,447 | 296,456 ± 1,237 | 42.0% | Audited | C/A |
| 195,374 | 278,648 ± 1,123 | 70.1% | Audited | A/A | |
| 2018Mid | 142,047 | 269,217 ± 1,065 | 52.8% | Audited | A/A |
| 164,359 | 261,509 ± 1,051 | 62.9% | Audited | A/A | |
| 155,059 | 246,594 | 62.9% | Derived | — | |
| 152,899 | 230,378 | 66.4% | Derived | — | |
| 131,062 | 214,162 extrapolated | 61.2% | 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 159, denominator source 157; top ticket votes; canonical-complete-contest-floor-v1; allocation share 0.0%; series 154/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 158, denominator source 157; total voters participating; eavs-f1a-v1:observed:native; allocation share 0.0%; series 297/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 Madison County only. The complete contest result is shown below for comparison.
Madison 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 · 79 precincts
Precinct data
Results by precinct
79 precincts · 197,617 votes
Precinct boundaries and identifiers are cycle-specific. This table does not join rows across years without a validated crosswalk.
| Precinct -CHASE PARK CH OF CHRISTCHASE PARK CH OF CHRIST | 2,192 | 3,409 | 109 | 5,710 | 38.4% | 59.7% | R+21.3 |
|---|---|---|---|---|---|---|---|
| Precinct -MERDIANVILLE CH CHRISTMERDIANVILLE CH CHRIST | 2,122 | 3,072 | 76 | 5,270 | 40.3% | 58.3% | R+18.0 |
| Precinct -MARK RUSSELL REC CTRMARK RUSSELL REC CTR | 1,471 | 3,534 | 136 | 5,141 | 28.6% | 68.7% | R+40.1 |
| Precinct -MT_ ZION BAPT CHMT_ ZION BAPT CH | 2,060 | 2,467 | 88 | 4,615 | 44.6% | 53.5% | R+8.8 |
| Precinct -COVE UMCCOVE UMC | 1,361 | 3,049 | 123 | 4,533 | 30.0% | 67.3% | R+37.2 |
| Precinct -ST_ JOHNS CATHOLIC CHST_ JOHNS CATHOLIC CH | 1,535 | 2,488 | 123 | 4,146 | 37.0% | 60.0% | R+23.0 |
| Precinct -FARLEY COMMUNITY CHFARLEY COMMUNITY CH | 1,502 | 2,525 | 87 | 4,114 | 36.5% | 61.4% | R+24.9 |
| Precinct -WILLOWBROOK BAPT CHWILLOWBROOK BAPT CH | 1,540 | 2,437 | 121 | 4,098 | 37.6% | 59.5% | R+21.9 |
| Precinct -MAYSVILLE CH CHRISTMAYSVILLE CH CHRIST | 954 | 2,837 | 50 | 3,841 | 24.8% | 73.9% | R+49.0 |
| Precinct -ALDERSGATE UMCALDERSGATE UMC | 1,397 | 2,097 | 93 | 3,587 | 38.9% | 58.5% | R+19.5 |
| Precinct -DAYSTAR CH-MADISONDAYSTAR CH-MADISON | 1,911 | 1,537 | 67 | 3,515 | 54.4% | 43.7% | D+10.6 |
| Precinct -MADISON BAPT CHMADISON BAPT CH | 1,598 | 1,800 | 96 | 3,494 | 45.7% | 51.5% | R+5.8 |
| Precinct -LOCUST GROVE BAPT CHLOCUST GROVE BAPT CH | 1,195 | 2,208 | 55 | 3,458 | 34.6% | 63.9% | R+29.3 |
| Precinct -MONROVIA COMM_ CTR_MONROVIA COMM_ CTR_ | 1,482 | 1,861 | 75 | 3,418 | 43.4% | 54.4% | R+11.1 |
| Precinct -TONEY UMCTONEY UMC | 1,600 | 1,727 | 62 | 3,389 | 47.2% | 51.0% | R+3.7 |
| Precinct -INDIAN CREEK BAPT CHINDIAN CREEK BAPT CH | 1,618 | 1,709 | 60 | 3,387 | 47.8% | 50.5% | R+2.7 |
| Precinct -LITTLE INDIAN CREEKLITTLE INDIAN CREEK | 1,491 | 1,737 | 85 | 3,313 | 45.0% | 52.4% | R+7.4 |
| Precinct -COVENANT PRESBYTERIAN CHCOVENANT PRESBYTERIAN CH | 1,333 | 1,866 | 78 | 3,277 | 40.7% | 56.9% | R+16.3 |
| Precinct -RESTORATION CHRESTORATION CH | 1,361 | 1,767 | 118 | 3,246 | 41.9% | 54.4% | R+12.5 |
| Precinct -FIRST BAPT CHFIRST BAPT CH | 1,546 | 1,593 | 75 | 3,214 | 48.1% | 49.6% | R+1.5 |
| Precinct -MADISON MISSION 7TH DAYMADISON MISSION 7TH DAY | 1,634 | 1,471 | 87 | 3,192 | 51.2% | 46.1% | D+5.1 |
| Precinct -MADISON CITY HALLMADISON CITY HALL | 1,437 | 1,622 | 123 | 3,182 | 45.2% | 51.0% | R+5.8 |
| Precinct -HILLWOOD BAPT CHHILLWOOD BAPT CH | 1,362 | 1,733 | 86 | 3,181 | 42.8% | 54.5% | R+11.7 |
| Precinct -WEATHERLY HGTS BAPTWEATHERLY HGTS BAPT | 1,279 | 1,723 | 86 | 3,088 | 41.4% | 55.8% | R+14.4 |
| Precinct -THE WHITESBURG CTR_THE WHITESBURG CTR_ | 1,209 | 1,790 | 80 | 3,079 | 39.3% | 58.1% | R+18.9 |
| Precinct -COMM_ FELLOWSHIPCOMM_ FELLOWSHIP | 1,151 | 1,829 | 81 | 3,061 | 37.6% | 59.8% | R+22.1 |
| Precinct -PLAINVIEW CH CHRISTPLAINVIEW CH CHRIST | 784 | 2,205 | 52 | 3,041 | 25.8% | 72.5% | R+46.7 |
| Precinct -FAITH LUTHERAN CHFAITH LUTHERAN CH | 1,427 | 1,448 | 80 | 2,955 | 48.3% | 49.0% | R+0.7 |
| Precinct -NEW HOPE CITY HALLNEW HOPE CITY HALL | 438 | 2,422 | 32 | 2,892 | 15.1% | 83.7% | R+68.6 |
| Precinct -MONROVIA CH CHRISTMONROVIA CH CHRIST | 1,182 | 1,596 | 74 | 2,852 | 41.4% | 56.0% | R+14.5 |
| Precinct -HAMPTON COVE CH CHRISTHAMPTON COVE CH CHRIST | 783 | 1,962 | 64 | 2,809 | 27.9% | 69.8% | R+42.0 |
| Precinct -TRIANA CITY HALLTRIANA CITY HALL | 1,728 | 976 | 71 | 2,775 | 62.3% | 35.2% | D+27.1 |
| Precinct -OAKWOOD UNIVERSITY CHOAKWOOD UNIVERSITY CH | 2,241 | 474 | 43 | 2,758 | 81.3% | 17.2% | D+64.1 |
| Precinct -INTERGRAPH CORP_INTERGRAPH CORP_ | 1,406 | 1,278 | 65 | 2,749 | 51.1% | 46.5% | D+4.7 |
| Precinct -PROVIDENCE BAPT CHPROVIDENCE BAPT CH | 1,298 | 1,355 | 37 | 2,690 | 48.3% | 50.4% | R+2.1 |
| Precinct -CO_ COMMISSION DIST_ 1CO_ COMMISSION DIST_ 1 | 684 | 1,934 | 30 | 2,648 | 25.8% | 73.0% | R+47.2 |
| Precinct -CH OF JESUS CHRIST LDSCH OF JESUS CHRIST LDS | 1,404 | 1,093 | 57 | 2,554 | 55.0% | 42.8% | D+12.2 |
| Precinct -CROSS ROADS COMM CTRCROSS ROADS COMM CTR | 580 | 1,925 | 43 | 2,548 | 22.8% | 75.5% | R+52.8 |
| Precinct -HOPE CHURCHHOPE CHURCH | 1,328 | 1,115 | 58 | 2,501 | 53.1% | 44.6% | D+8.5 |
| Precinct -W HUNTSVILLE CH CHRISTW HUNTSVILLE CH CHRIST | 1,448 | 954 | 73 | 2,475 | 58.5% | 38.5% | D+20.0 |
| Precinct -PINEVIEW BAPT CHPINEVIEW BAPT CH | 1,287 | 1,109 | 52 | 2,448 | 52.6% | 45.3% | D+7.3 |
| Precinct -ST_ PAUL'S UMCST_ PAUL'S UMC | 1,383 | 966 | 46 | 2,395 | 57.7% | 40.3% | D+17.4 |
| Precinct -PINE GROVE BAPT CHPINE GROVE BAPT CH | 938 | 1,315 | 68 | 2,321 | 40.4% | 56.7% | R+16.2 |
| Precinct -HAROLD HARBIN GYMHAROLD HARBIN GYM | 426 | 1,826 | 38 | 2,290 | 18.6% | 79.7% | R+61.1 |
| Precinct -A & M UNIVERSITY NEW GYMA & M UNIVERSITY NEW GYM | 2,062 | 116 | 26 | 2,204 | 93.6% | 5.3% | D+88.3 |
| Precinct -TRINITY UMCTRINITY UMC | 1,151 | 980 | 60 | 2,191 | 52.5% | 44.7% | D+7.8 |
| Precinct -SOUTHWOOD PRESBYTERIANSOUTHWOOD PRESBYTERIAN | 721 | 1,398 | 68 | 2,187 | 33.0% | 63.9% | R+31.0 |
| Precinct -BROWNSBORO BAPT CHBROWNSBORO BAPT CH | 550 | 1,589 | 30 | 2,169 | 25.4% | 73.3% | R+47.9 |
| Precinct -OPTIMIST PARK REC CTR_OPTIMIST PARK REC CTR_ | 1,019 | 1,061 | 50 | 2,130 | 47.8% | 49.8% | R+2.0 |
| Precinct -ST_ LUKE CHRISTIAN CHST_ LUKE CHRISTIAN CH | 1,665 | 399 | 40 | 2,104 | 79.1% | 19.0% | D+60.2 |
| Precinct -BOB HARRISON SR_ CTR_BOB HARRISON SR_ CTR_ | 1,726 | 330 | 25 | 2,081 | 82.9% | 15.9% | D+67.1 |
| Precinct -FIRST BAPT MERDIANVILLEFIRST BAPT MERDIANVILLE | 984 | 1,029 | 39 | 2,052 | 48.0% | 50.1% | R+2.2 |
| Precinct -MADISON PUBLIC LIBRARYMADISON PUBLIC LIBRARY | 838 | 1,005 | 65 | 1,908 | 43.9% | 52.7% | R+8.8 |
| Precinct -OWENS CROSS ROADS CHOWENS CROSS ROADS CH | 501 | 1,369 | 32 | 1,902 | 26.3% | 72.0% | R+45.6 |
| Precinct -JACKSON WAY BAPT CHJACKSON WAY BAPT CH | 997 | 797 | 53 | 1,847 | 54.0% | 43.2% | D+10.8 |
| Precinct -BOBO VFDBOBO VFD | 484 | 1,323 | 33 | 1,840 | 26.3% | 71.9% | R+45.6 |
| Precinct -HOUSE OF HOPE & RESTORATIONHOUSE OF HOPE & RESTORATION | 1,627 | 181 | 20 | 1,828 | 89.0% | 9.9% | D+79.1 |
| Precinct -OWENS CROSS ROADSOWENS CROSS ROADS | 440 | 1,296 | 30 | 1,766 | 24.9% | 73.4% | R+48.5 |
| Precinct -CORNERSTONE PRESBYTERIANCORNERSTONE PRESBYTERIAN | 689 | 973 | 62 | 1,724 | 40.0% | 56.4% | R+16.5 |
| Precinct -WALL HWY BAPT CHWALL HWY BAPT CH | 884 | 784 | 44 | 1,712 | 51.6% | 45.8% | D+5.8 |
| Precinct -HOPE VALLEY BIBLE CHHOPE VALLEY BIBLE CH | 774 | 887 | 46 | 1,707 | 45.3% | 52.0% | R+6.6 |
| Precinct -FIRST MISSIONARY BAPTFIRST MISSIONARY BAPT | 1,443 | 209 | 30 | 1,682 | 85.8% | 12.4% | D+73.4 |
| Precinct -NEW MARKET REC CTRNEW MARKET REC CTR | 340 | 1,265 | 19 | 1,624 | 20.9% | 77.9% | R+57.0 |
| Precinct -MOVEMENT CHMOVEMENT CH | 710 | 788 | 43 | 1,541 | 46.1% | 51.1% | R+5.1 |
| Precinct -MARY KELLY JOHNSTON GYMMARY KELLY JOHNSTON GYM | 518 | 791 | 25 | 1,334 | 38.8% | 59.3% | R+20.5 |
| Precinct -SHERWOOD BAPT CHSHERWOOD BAPT CH | 753 | 533 | 45 | 1,331 | 56.6% | 40.0% | D+16.5 |
| Precinct -GURLEY REC_ CTR_GURLEY REC_ CTR_ | 266 | 1,033 | 16 | 1,315 | 20.2% | 78.6% | R+58.3 |
| Precinct -CAVALRY HILL COMMUNITY CTRCAVALRY HILL COMMUNITY CTR | 966 | 299 | 31 | 1,296 | 74.5% | 23.1% | D+51.5 |
| Precinct -DR_ RICHARD SHOWERS CTR_DR_ RICHARD SHOWERS CTR_ | 1,077 | 121 | 8 | 1,206 | 89.3% | 10.0% | D+79.3 |
| Precinct -ST_ MATTHEW PB CHURCHST_ MATTHEW PB CHURCH | 847 | 245 | 17 | 1,109 | 76.4% | 22.1% | D+54.3 |
| Precinct -LAKEWOOD COMM_ CTR_LAKEWOOD COMM_ CTR_ | 847 | 192 | 13 | 1,052 | 80.5% | 18.3% | D+62.3 |
| Precinct -WEST HUNTSVILLE BAPTWEST HUNTSVILLE BAPT | 662 | 343 | 16 | 1,021 | 64.8% | 33.6% | D+31.2 |
| Precinct -CLUBHOUSE ON GREEN MTNCLUBHOUSE ON GREEN MTN | 292 | 678 | 18 | 988 | 29.6% | 68.6% | R+39.1 |
| Precinct -MONTE SANO UMCMONTE SANO UMC | 523 | 361 | 20 | 904 | 57.9% | 39.9% | D+17.9 |
| Precinct -UNIVERSITY BAPT CHUNIVERSITY BAPT CH | 498 | 384 | 20 | 902 | 55.2% | 42.6% | D+12.6 |
| Precinct -PLEVNA/NEW MARKET FIRE DEPTPLEVNA/NEW MARKET FIRE DEPT | 93 | 644 | 1 | 738 | 12.6% | 87.3% | R+74.7 |
| Precinct -LINCOLN CH OF CHRISTLINCOLN CH OF CHRIST | 359 | 121 | 8 | 488 | 73.6% | 24.8% | D+48.8 |
| Precinct -LEWIS CHAPEL C_ P_ CHLEWIS CHAPEL C_ P_ CH | 285 | 41 | 3 | 329 | 86.6% | 12.5% | D+74.2 |
| Precinct -WESTSIDE COMM_ CTR_WESTSIDE COMM_ CTR_ | 127 | 24 | 4 | 155 | 81.9% | 15.5% | D+66.5 |
presidential history
Party record book
Madison County, AL · the strongest Democratic and Republican presidential performances recorded here, measured three ways.
1892–2024 (partial returns from 1876) · 38 presidential cycles · 38 with a vote-share denominator · 34 with a national benchmark
Highest vote share
Largest share of the presidential candidate vote cast here.
Democratic
Alton B. Parker1904
91.6%
2,119 votes · D+83.7
Runner-up · Franklin D. Roosevelt, 1944 · 91.3%
Republican
Richard Nixon1972
73.4%
38,899 votes · R+48.7
Runner-up · George H. W. Bush, 1988 · 67.1%
Most votes
Largest number of votes cast for the party’s presidential nominee here.
Democratic
Kamala Harris2024
87,824votes
44.4% of the vote · R+8.9
Runner-up · Joe Biden, 2020 · 87,286 votes
Republican
Donald Trump2024
105,430votes
53.4% of the vote · R+8.9
Runner-up · Donald Trump, 2020 · 102,780 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
Alton B. Parker1904
+103.4pts D vs U.S.
Place D+83.7 · U.S. R+19.7
Runner-up · James M. Cox, 1920 · +96.0 pts
Republican
Barry Goldwater1964
+74.5pts R vs U.S.
Place R+51.9 · U.S. D+22.6
Runner-up · George H. W. Bush, 1988 · +27.0 pts
Current officeholders
Seats representing Madison County, AL. A county elects none of these itself — they are the members for the 1 congressional, 4 state senate and 6 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.
Registered voters
Total registered voters, over time
| Year | Total registered |
|---|---|
| 2018 | 268,929 |
| 2020 | 303,191 |
| 2022 | 309,787 |
| 2024 | 333,091 |
Who moves in and out
Net migration over time, and who arrivals are — where they came from and what those places vote
+8,719 net domestic migration · 2025
Net +55,863 over 2011–2025 · gain loss
Arrivals reported $69,582 in average income, against $100,828 for residents who stayed — 31% lower. (IRS SOI, 2022–23)
The places arrivals came from lean R+22.3 on average — 13 points more Republican-leaning than Madison County, AL itself (R+8.9).
Where arrivals came from lean of each source
- Limestone County, AL1,040R+43.7
- Morgan County, AL508R+52.4
- Jefferson County, AL455D+10.4
- Marshall County, AL301R+71.5
- Lincoln County, TN208R+64.6
- Lauderdale County, AL202R+51.3
Where departures went households, 2022–23
- Limestone County, AL1,569
- Morgan County, AL562
- Jefferson County, AL350
- Marshall County, AL329
- Lincoln County, TN189
- Jackson County, AL168
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 | +1,424 |
| 2012 | +1,095 |
| 2013 | +2,324 |
| 2014 | +1,319 |
| 2015 | +1,506 |
| 2016 | +2,067 |
| 2017 | +3,687 |
| 2018 | +3,817 |
| 2019 | +4,721 |
| 2021 | +5,819 |
| 2022 | +5,682 |
| 2023 | +7,160 |
| 2024 | +6,523 |
| 2025 | +8,719 |
Home to Huntsville and a dense concentration of aerospace and defense engineers, Madison County has trended more competitive than most of Alabama, with the R+8.9 margin in 2024 reflecting a college-educated suburban electorate that has moderated the traditional statewide gap.
Across the recorded series it reached a Democratic high of 83.7 points in 1904 and a Republican high of 51.9 points in 1964. Between 2020 and 2024 the county moved 1.0 points toward the Republican candidate; the 2024 margin was 8.9 points.
A population of 405,718, a 62% non-Hispanic-white share, and a median household income of $86,499 describe the county. The county's voting pattern over the last decade is most similar to that of Hamilton County and Cobb 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 →
Madison County, Alabama. Akashic. https://akashic.app/county/01089/. Accessed May 20, 2026. License: CC BY 4.0.