About
About the Author
I’m Sky MacAdams. I work in Democratic politics in Texas, currently as an organizing manager at a statewide campaign, and I’ve spent the last 5 years doing organizing, coalition building, and consulting work across the state. I’m reachable via the email: dylansmacadams@gmail.com.
I built this tracker because the information I wanted during a campaign cycle was scattered across a dozen tabs. Poll numbers on one site, county results on another, news in a feed reader. This puts them in one place and keeps them current automatically. It started as a tool for my own work and it still is one. I’m publishing it because other people kept asking me for the same numbers.
Disclosure
I work in Democratic politics in Texas. You should know that before you read anything else on this site.
This tracker is a personal project. It is not affiliated with, funded by, or produced on behalf of any campaign, candidate, party committee, PAC, or my employer. Nobody reviews it before it publishes and nobody pays for it. The views here are mine alone, and no part of it is coordinated with any campaign.
It is also not original reporting or original polling. Every number on this site is aggregated automatically from public sources by the methods described below. I do not adjust, weight, or exclude polls to favor a candidate. The averaging rules are applied the same way to every race, and they are written out in full below so you can check them against what you see.
Where I have made a judgment call in how the data is presented, I have tried to say so on the page rather than bury it here.
Methodology
Polling averages
Each race shows a rolling 30-day average. Every poll whose fieldwork ended in the last 30 days is included, and each candidate’s number is the simple unweighted mean of their share across those polls, rounded to one decimal. Polls are not weighted by sample size, recency, or pollster quality. No house effects are applied.
When a race has more than one matchup being polled, such as a head-to-head alongside hypothetical pairings, only the dominant matchup is averaged: the one with the most polls in the window, breaking ties toward the most recent. Hypothetical pairings never blend into the real race, but it does mean a matchup with only one or two polls may not be what the average is showing.
Partisan and internal polls are included as published. They are not excluded, down-weighted, or flagged. Wikipedia’s tables note sponsors where editors have recorded them, and I’d rather show you the same set of polls everyone else is looking at than curate it myself. When a race is polled mostly by one side’s internals, the average will reflect that, so check the poll table under each race and not just the headline number.
A race with no polling in the last 30 days shows its most recent average instead, labeled with the date it runs through. An average built from two polls is reported the same way as one built from twelve, so the poll count next to each average is worth reading.
What gets skipped
Polls are read automatically from the Wikipedia page for each race. The parser is deliberately conservative and skips any row it cannot read cleanly rather than guessing. In practice that means it ignores aggregate and polling-average sections, rows whose pollster is itself an average, and rows whose columns don’t line up with the table header, which happens when editors merge cells or restructure a table. Columns for Other, Undecided, Margin and Lead are not treated as candidates. The consequence worth knowing: a poll can be missing here while being present on Wikipedia, and the site will not tell you it skipped one.
I sometimes add a poll by hand from a pollster’s public release before it reaches Wikipedia. Hand-entered polls follow exactly the same averaging rules, and when the Wikipedia version appears later the two are reconciled into a single record with Wikipedia’s values.
Party lean on the map
Texas has no party registration. No official record exists of which party a Texas voter belongs to, so every “lean” measure on this site is a proxy inferred from past behavior, never a count of Democrats and Republicans. Counties are shaded by whichever proxy you select:
- Presidential or governor margin. Each party’s share of the two-party vote in that county in the most recent such election, expressed as the Republican share minus the Democratic share.
- Primary turnout lean. The Republican share of primary votes cast in that county, using each party’s top-of-ballot race in the most recent primary where both parties’ results are loaded. This measures who bothered to vote in a primary, which is not the same as who lives there.
Shading bins are fixed: Heavy Dem at D+15 or more, Lean Dem from D+5 to D+15, Tossup under 5 points either way, Lean Rep from R+5 to R+15, Heavy Rep at R+15 or more. Counties and districts with no usable result for that measure are grey, and grey means no data, not a tossup. District maps shade each seat by the two-party margin of its most recent election for that seat, so staggered Texas Senate terms mean some seats are showing a 2022 result.
Election night
On election night this site will switch to live county-level returns, sourced from the New York Times results feed with the Texas Secretary of State as a fallback. Everything shown that night is unofficial. Early returns are not a random sample of the county. Mail and early votes are often reported first and can lean sharply one way, so a margin at 20% reporting should not be read as a small version of the final result. Official canvassed results come from the county and the Secretary of State days to weeks later, and those are what this site backfills to.
Data Sources
- Polling. The Wikipedia page for each statewide and district race, re-read several times a day.
- Election results, 2016 to 2024. The Texas Legislative Council’s precinct-level datasets, aggregated to counties. These cover general, primary and runoff elections, plus municipal races where the Council has them.
- Voter registration. Registration totals by county from the Texas Secretary of State.
- 2026 primary results. Loaded by hand from Secretary of State reports.
- Election-night returns. The New York Times results feed, with the Texas Secretary of State’s results site as a fallback.
- News. Direct feeds from the Texas Tribune and KXAN, topic and outlet queries via Google News, and the New York Times APIs. Headlines link straight to the publisher; this site does not reproduce article text.
- Officials and legislators. A maintained statewide list, plus Open States for the Texas Legislature.
Known limitations
- Wikipedia lags. Polls typically appear there hours to a day after release, and a poll nobody has added yet is a poll this site does not have.
- Municipal coverage is partial by nature. The Legislative Council’s city-election files cover major cities in some years and not others. A missing municipal race means missing data, not an uncontested one.
- 2026 primary county results were loaded by hand. The Secretary of State’s results site blocks automated collection, so those figures were entered from downloaded reports and checked against published statewide totals.
- Down-ballot races are barely polled. Empty sections on the polling page usually mean no public polling exists, not that the site failed to find it.
- Every lean figure is a proxy. See above. Texas does not register voters by party.
Found something wrong? Email dylansmacadams@gmail.com. Corrections are welcome and I’d rather hear about an error than not.