Methodology
How We Score Congress
Every number on this site traces back to an official roll-call record and a formula you can check. This page states each formula, explains where the data comes from, and is honest about what the scores cannot tell you.
Congress Vote Tracker is an independent civic project. We are not affiliated with the U.S. government, Congress, or any agency, campaign, or advocacy group. We publish the record; we do not grade anyone as good or bad.
- Collect roll calls completed
- Find the party majority position completed
- Measure agreement completed
- Publish loyalty and attendance completed
What we track
We track every recorded roll-call vote in the House and Senate of the 119th Congress: final passage votes, amendments, procedural motions, and Senate confirmation votes. If a chamber recorded how each member voted, it is in scope.
Two things are not scored, because no per-member record exists for them: voice votes and unanimous-consent agreements. Congress moves much of its routine business that way, and those decisions simply leave nothing to count. Our scores describe what members did on the record, nothing more.
Where the data comes from
Four steps take a vote from the chamber floor to a scorecard. Every number we publish links back to the official roll-call page it came from, so you can check our work against the source.
-
Pull Senate roll calls
Senate votes come from the roll-call XML that Senate.gov publishes for each vote, including how every senator voted. No API key is required; the record is public.
-
Pull House roll calls
House votes come from the Congress.gov API and the House Clerk’s roll-call records, which carry the member-by-member positions.
-
Match votes to members
Member names, parties, states, and identifiers come from the Congress.gov API. Senate votes are keyed by LIS ID and House votes by Bioguide ID; both resolve to the same member profile.
-
Recompute and publish
An automated job refetches the data and recomputes every score once a day. Nothing is entered by hand, so a score can only be wrong if the official record is wrong or our published formula is misapplied. Either way, you can catch it.
How we select key votes
Articles and topic roundups flag certain roll calls as key votes. We look for major legislation, close margins, notable bipartisan crossovers, and constitutionally significant measures.
That selection shapes what we write about. It never shapes the scores. Scorecards use all recorded votes in the window, not a curated subset, so no editorial judgment of ours can move a member’s loyalty or attendance number.
Party loyalty
For each recorded vote we find the majority position of the member’s own party: whether more of that party voted yea or nay. Party loyalty is the share of the member’s own yea and nay votes that matched that majority. A member who voted with their party on 87 of 100 qualifying votes scores 87%.
The party loyalty formula
loyalty = with_party / party_votes
with_party is the number of the member's yea or nay votes that matched their party's majority position. party_votes is the number of qualifying votes: yea or nay votes where the member's party had a majority position. Missed votes, present votes, and even party splits are excluded.
Three kinds of votes never qualify. Missed votes are excluded, because a member who was absent took no position. Present votes are excluded for the same reason. And when a member’s party splits exactly evenly, the vote is excluded for everyone in that party, because there is no majority position to match.
Attendance
Attendance measures showing up. It is the share of eligible votes a member actually cast.
The attendance formula
attendance = cast / eligible
cast is every vote the member actually recorded, including present votes. eligible is every recorded vote taken while the member held the seat, within the recent window.
Scores cover a rolling window of the most recent recorded votes, currently the latest 40 per chamber. A member sworn in mid-Congress is only measured from their start date; roll calls held before they arrived never count against them. A present vote counts as cast for attendance even though it is excluded from loyalty.
What counts where
| Vote type | Party loyalty | Attendance |
|---|---|---|
| Yea or nay, party majority exists | Counted | Counted as cast |
| Yea or nay, member’s party split evenly | Excluded | Counted as cast |
| Present | Excluded | Counted as cast |
| Missed | Excluded | Counted as missed; lowers the score |
| Voice vote or unanimous consent | Not scored | Not scored |
Crossings and defections
A defection is a single yea or nay vote cast against the majority of the member’s own party. We count them directly.
The crossings formula
crossings = party_votes - with_party
Each crossing is one qualifying vote cast against the majority of the member's own party. It is a raw count, not a rate.
The Biggest Party Defections ranking on the home page is that raw count over the recent window. It is not adjusted for how many votes a member cast, and it says nothing about why a member crossed. Some defections are conscience votes; some are procedural; some are strategic. The count reports that they happened.
Flip-flops
A flip-flop is the same member taking opposite recorded positions on the same bill, for example voting yea on the motion to proceed and nay on final passage. We compare only votes on the bill itself advancing: cloture, motions to proceed, passage, and concurrence votes. Amendment votes and side motions such as tabling or recommitting are excluded, because opposing an amendment is not a change of position on the underlying bill.
Members sometimes have defensible procedural reasons to switch, such as advancing a bill to offer amendments and then opposing the final text. The tracker links every roll call in the sequence with its date and official source. We report the switch; the reason is the member’s to explain.
Update cadence and the recent window
An automated job refreshes the vote data once a day, at about 6:30 a.m. Eastern. During active sessions, a roll call taken on the floor usually appears here the following morning.
Loyalty and attendance are computed over the most recent recorded votes in each chamber rather than the whole Congress, so the scores describe current behavior, not a career average. House figures can lag Senate figures: the House Clerk posts recorded votes on its own schedule, and House scores update once those votes reach the official feed.
Limitations and corrections
Scores are only useful if you know what they leave out. Here is what ours do not capture.
- Procedural votes count equally. A vote on a routine motion carries the same weight as final passage of a landmark bill. We do not weight votes by importance, because any weighting would substitute our judgment for the record.
- Loyalty is descriptive, not normative. A high score is not good and a low score is not bad. It tells you how often a member voted with their party’s majority, and nothing about whether they were right to.
- The window is recent, not career-long. A score reflects the latest roll calls, so it can move as new votes replace old ones.
- Absences are not judged. A missed vote lowers attendance whether the member was ill, campaigning, or attending a funeral. The number cannot tell the difference, and we do not guess.
If a number here does not match the official record, the official record wins and we want to know. See the About page for who runs this project and how to reach us; corrections are applied to the data pipeline, not patched by hand, so a fix propagates to every affected page.
Common questions
Two numbers drive every scorecard. Party loyalty is the share of a member's yea or nay votes that matched their own party's majority position, computed as with_party divided by party_votes. Attendance is votes cast divided by votes eligible. Both cover the most recent recorded roll calls in each chamber.
A missed vote is any recorded roll call a member was eligible to cast but did not, for any reason, including illness, travel, or campaign schedules. Missed votes lower attendance but never affect party loyalty, which only measures yea and nay votes. Voting present is counted as cast, not missed.
No. Every recorded roll call counts equally, so a procedural motion carries the same weight as final passage of a landmark bill. Weighting would require editorial judgment about which votes matter most, and we would rather publish a formula anyone can check than a ranking anyone can dispute.