Political biography · State presidential returns
Texas
election history.
Presidential votes, closest contests and political movement from 2000 through 2024.
Saved history is ready below. Interactive controls require JavaScript.
State context · blue toward D · red toward R · gray unavailable
How Texas voted
In 2000, Texas recorded 2,433,746 Democratic votes and 3,799,639 Republican votes out of 6,407,637 ballots. In 2024, the corresponding counts were 4,835,250, 6,393,597 and 11,388,674. The margin was R +21.32 in 2000 and R +13.68 in 2024.
The closest available D/R contest was 2020, with a R +5.58 margin. Movement relative to the country is local margin change minus national margin change; it distinguishes a local shift from a nationwide wave.
| Election | Democratic votes | Republican votes | Other ballots | Total ballots | D share | R share | D−R margin | U.S. margin |
|---|---|---|---|---|---|---|---|---|
| 2000 | 2,433,746 | 3,799,639 | 174,252 | 6,407,637 | 37.98% | 59.30% | R +21.32 | D +0.49 |
| 2004 | 2,832,704 | 4,526,917 | 51,128 | 7,410,749 | 38.22% | 61.09% | R +22.86 | R +2.43 |
| 2008 | 3,528,633 | 4,479,328 | 69,834 | 8,077,795 | 43.68% | 55.45% | R +11.77 | D +7.40 |
| 2012 | 3,308,124 | 4,569,843 | 115,884 | 7,993,851 | 41.38% | 57.17% | R +15.78 | D +3.94 |
| 2016 | 3,877,868 | 4,685,047 | 406,311 | 8,969,226 | 43.24% | 52.23% | R +9.00 | D +2.18 |
| 2020 | 5,259,126 | 5,890,347 | 165,583 | 11,315,056 | 46.48% | 52.06% | R +5.58 | D +4.45 |
| 2024 | 4,835,250 | 6,393,597 | 159,827 | 11,388,674 | 42.46% | 56.14% | R +13.68 | R +1.47 |
Texas county election histories
- Walker County →
- Brooks County →
- Deaf Smith County →
- Hockley County →
- Shackelford County →
- Tom Green County →
- Wise County →
- Cottle County →
- Taylor County →
- Armstrong County →
- Hutchinson County →
- Irion County →
- Mitchell County →
- Yoakum County →
- Childress County →
- Gillespie County →
- Dickens County →
- La Salle County →
- Hansford County →
- Potter County →
- Falls County →
- Hamilton County →
- Runnels County →
- Hale County →
- San Jacinto County →
- Duval County →
- Moore County →
- Martin County →
- Limestone County →
- Zavala County →
- Cochran County →
- Fisher County →
- Baylor County →
- Panola County →
- Jack County →
- Coryell County →
- Lipscomb County →
- Donley County →
- Atascosa County →
- Briscoe County →
- Goliad County →
- Gray County →
- Hall County →
- Brown County →
- Gaines County →
- Bell County →
- Sutton County →
- San Augustine County →
- King County →
- Uvalde County →
- Wilson County →
- Schleicher County →
- Swisher County →
- Motley County →
- Lynn County →
- Menard County →
- Nolan County →
- Sterling County →
- Garza County →
- Callahan County →
- Stonewall County →
- Franklin County →
- Van Zandt County →
- Hunt County →
- Madison County →
- Hood County →
- Mason County →
- Gregg County →
- Hemphill County →
- Castro County →
- Upton County →
- Jim Hogg County →
- Lavaca County →
- Midland County →
- Kimble County →
- Carson County →
- Palo Pinto County →
- Lamb County →
- Eastland County →
- Kerr County →
- Lubbock County →
- Erath County →
- Upshur County →
- Blanco County →
- Andrews County →
- Jeff Davis County →
- Knox County →
- Llano County →
- Wheeler County →
- Crosby County →
- McMullen County →
- Roberts County →
- Kent County →
- Comal County →
- Zapata County →
- Aransas County →
- Orange County →
- Winkler County →
- Jones County →
- Sherman County →
- Chambers County →
- Hardin County →
- Hill County →
- Williamson County →
- Kinney County →
- Calhoun County →
- Ellis County →
- Clay County →
- Kaufman County →
- Foard County →
- Collin County →
- Comanche County →
- Concho County →
- Crane County →
- Jasper County →
- Gonzales County →
- Jefferson County →
- Dimmit County →
- Bowie County →
- Brewster County →
- Dallam County →
- Cass County →
- Fayette County →
- Burnet County →
- Refugio County →
- Ochiltree County →
- Matagorda County →
- Throckmorton County →
- Anderson County →
- Caldwell County →
- Medina County →
- Glasscock County →
- Kenedy County →
- Wood County →
- Liberty County →
- Travis County →
- Montgomery County →
- Howard County →
- Bastrop County →
- Trinity County →
- McLennan County →
- McCulloch County →
- Brazoria County →
- Bailey County →
- Houston County →
- San Saba County →
- Presidio County →
- Nacogdoches County →
- Washington County →
- Cooke County →
- Wilbarger County →
- Leon County →
- Karnes County →
- Randall County →
- DeWitt County →
- Ward County →
- Wichita County →
- Willacy County →
- Shelby County →
- Kendall County →
- Morris County →
- Hopkins County →
- Rockwall County →
- Hudspeth County →
- Smith County →
- Hidalgo County →
- Brazos County →
- Burleson County →
- Delta County →
- Crockett County →
- Lee County →
- Robertson County →
- Mills County →
- Loving County →
- Sabine County →
- Austin County →
- Reagan County →
- Reeves County →
- Tarrant County →
- Hays County →
- San Patricio County →
- Oldham County →
- Pecos County →
- Real County →
- Dallas County →
- Nueces County →
- Red River County →
- Coleman County →
- Rusk County →
- Terrell County →
- Tyler County →
- Victoria County →
- Webb County →
- Wharton County →
- Kleberg County →
- Harris County →
- Hardeman County →
- Newton County →
- Navarro County →
- Montague County →
- Frio County →
- Harrison County →
- Lamar County →
- Floyd County →
- Starr County →
- Stephens County →
- Parmer County →
- Marion County →
- Val Verde County →
- El Paso County →
- Coke County →
- Cameron County →
- Waller County →
- Bee County →
- Titus County →
- Camp County →
- Grimes County →
- Scurry County →
- Jim Wells County →
- Ector County →
- Rains County →
- Parker County →
- Young County →
- Polk County →
- Angelina County →
- Live Oak County →
- Dawson County →
- Haskell County →
- Terry County →
- Archer County →
- Henderson County →
- Bosque County →
- Hartley County →
- Collingsworth County →
- Somervell County →
- Colorado County →
- Freestone County →
- Borden County →
- Culberson County →
- Galveston County →
- Lampasas County →
- Edwards County →
- Guadalupe County →
- Cherokee County →
- Fannin County →
- Fort Bend County →
- Milam County →
- Bexar County →
- Johnson County →
- Denton County →
- Bandera County →
- Maverick County →
- Jackson County →
- Grayson County →
Sources and methods
Presidential votes: MIT Election Data and Science Lab county returns, 2000–2024, version 20 and MEDSL statewide presidential returns. Percentages use all recorded ballots; the margin is Democratic share minus Republican share. “Other ballots” is total ballots minus Democratic and Republican votes. It includes third-party/write-in votes and any residual or invalid ballot counts included in the source denominator; it is not necessarily a count of votes for other candidates. A swing is the difference between two margins; national-adjusted swing subtracts the U.S. change over the same period. State and national profiles use statewide returns, not sums of incomplete county returns.
The county original CSV is an archived public mirror of MEDSL’s February 25, 2026 revision, with matching revision and original file size. Direct Harvard downloads require a personal guestbook; an independent official checksum match has not been certified. Download links, provenance, selection rules and SHA-256 checksums document the source and preserve the exact bytes used here. Recorded electoral votes come from the National Archives, including split Maine/Nebraska districts, faithless electors and abstentions.
Maps use the Census-derived us-atlas legacy county boundaries. Connecticut retains eight legacy counties, matching these returns. Oglala Lakota’s FIPS rename is harmonized. Bedford city and county are added for years before their merger when valid returns exist. Comparisons crossing Broomfield’s 2001 creation are unavailable for the five affected Colorado counties. Alaska’s voting districts and separately reported Kansas City votes cannot be safely assigned to these county boundaries: use statewide history and whole-state merges. Missing or inconsistent returns stay unavailable.
Border Lab uses 2020 Census resident population bases, Vintage 2021, with legacy Connecticut counties. Alaska’s statewide population remains intact. Statewide votes not assigned to comparable counties stay with their original state; a whole-state merge transfers that residual. A move with missing historical votes makes that election replay unavailable. The population snapshot stays fixed across historical replays. Metro experiments use March 2020 Census metropolitan delineations; these statistical areas are not proposed legal states. The population-balancing preset starts from original borders and greedily transfers adjacent counties to reduce squared imbalance without increasing graph fragmentation, up to 150 transfers. It preserves 50 regions and does not promise an optimal or equal-population partition.
House seats use the Census equal-proportions method: one initial seat per region, then priority population ÷ √(n × (n + 1)). Border Lab uses resident population; Same Votes, Different Rules uses historical Census apportionment populations, which include allocated overseas residents. Proportional electoral allocation uses Hamilton largest remainder with whole electors, across D, R and a combined other-ballot bucket; exact remainder ties use D, then R, then other. Winner-takes-all ties leave electors unallocated. No majority is reported honestly; contingent-election outcomes are not simulated.
These experiments hold recorded votes fixed. They are mechanical counterfactuals, not predictions of behavior, turnout, campaigns or constitutional validity. Ordinary vote totals cannot recover ranked preferences. Twin matches require complete comparable histories across the selected period; RMS distance equally weights each election margin or each consecutive change. Equal movement does not imply similar political levels, demographics, motives or individual voters.