Methodology
The short version
We took 11 planks from the DSA political program, found the 45 New Hampshire roll calls that decide them, and counted how each of the 406 sitting legislators voted. House Democrats voted the DSA way 99.1% of the time. Senate Democrats, 100%. Every vote is published below with its bill number, motion, date and full tally, so you can check any of it against the official legislative journal.
The formula
score = aligned votes ÷ (aligned + opposed votes) × 100
- Absences, “present” votes, and the presiding officer’s non-vote are excluded from the denominator. No one is penalized for missing a vote.
- A legislator must have cast a recorded Yea or Nay on at least 60% of the scored votes taken while they held the seat, and must have held the seat for at least 50% of the chamber’s ballot. A roll call taken before a member was sworn in is not held against them. Someone who won a special election is measured on the votes they were actually there for. But a member seated for only a handful of them still gets no score, because a percentage built on a handful looks precise without being reliable. Below either line they are shown as “Insufficient voting record” with no score and no label. 18 sitting members currently fall here, in both parties.
- One roll call per bill, per chamber. A bill can be voted on many times: a motion to table, then passage, then a conference report. Counting more than one of them would score the same member for the same position twice and let a single bill outweigh a whole issue area. Where a bill had several recorded votes we kept the decisive one: final passage, or adoption of the conference report.
- Every roll call is weighted equally. We used only decisive votes: passage, conference report adoption, veto override, and motions to kill, table or shelve a bill. The 2025 budget alone had 29 recorded House votes, almost all procedural floor amendments. Including them would have let one bill swamp the other 10 issue areas, so they were left out.
- The House and Senate are scored separately. The two chambers did not vote on the same bills: representatives are scored on 36 roll calls, senators on 9. Senators have no score at all on Raise Taxes to Expand Government, A New Tax on Batteries, Green New Deal Energy Mandates, Force Workers Into Unions, Government Control of Rental Property and Government-Mandated Wages because no Senate roll call exists on those bills. Scores are comparable within a chamber, not across chambers.
The grades
The percentage is the measurement. The grade is a label on top of it, and nothing about it changes the arithmetic. Every grade in the table below is read straight off the score, and the score is printed next to the grade everywhere it appears.
| Grade | Alignment | Legislators |
|---|---|---|
| Fully Socialist | 90% and above | 168 |
| Comrade | 80% to under 90% | 0 |
| Diet Socialist | 70% to under 80% | 1 |
| Somewhat Socialist | 60% to under 70% | 1 |
| Not a Socialist | 10% to under 60% | 30 |
| Certified Anti-Socialist | under 10% | 188 |
| No score | Not enough recorded votes to score | 18 |
A grade of Comrade or Fully Socialist is the same thing as the 80% threshold: 168 legislators, the same 168 flagged as DSA Preferred Candidates. The bands cover the whole range, so every member with a published score is graded. The only members with no grade are the 18 who did not cast enough recorded votes to be scored at all.
Why the line is at 80%
Because that is where the gap is. Legislators do not spread evenly across the range. They cluster hard at both ends. No sitting legislator scores between 77.8% and 90.9%, a 13.1-point band with nobody in it. The 80% threshold sits inside that empty range, so it cannot have been drawn to include or exclude any particular member. Move the line anywhere in the gap and exactly the same 168 legislators are labelled.
Red bars are at or above the 80% threshold. The nearest member below the line scores 77.8%; the nearest above scores 90.9%.
Party averages
Averaged over votes, not members: total aligned votes divided by total counted votes for the group. Averaging over members would let someone who cast two votes move the number as much as someone who cast all 45. Members below the participation floor are excluded.
| Group | Members | DSA Preferred | Average alignment |
|---|---|---|---|
| House Democrats | 162 | 160 | 99.1% |
| House Republicans | 202 | 0 | 4.3% |
| House, all members | 364 | 160 | 46.5% |
| Senate Democrats | 8 | 8 | 100% |
| Senate Republicans | 15 | 0 | 3% |
| Senate, all members | 23 | 8 | 36% |
The issues, and where each comes from
Each issue area is tied to a named plank of the Democratic Socialists of America political program, quoted directly, so the “DSA position” on each bill is not our assertion.
How the match is made. The DSA program is a national platform, so it names no New Hampshire bill. We identified the state roll call that decides each plank. The minimum wage bill for the living wage plank, the 287(g) bills for Abolish ICE, and so on. Every one of those choices is listed below and on the votes page, with the full tally, so you can inspect the selection yourself.
Tax businesses and the wealthy as hard as the law allows, and treat every tax cut as money stolen from the state.
Drawn from the Economic Democracy section of the DSA political program.
Abolish ICE, end deportations, and grant amnesty to everyone who crossed the border illegally. No state or local police may help enforce federal immigration law.
Drawn from the Abolish ICE section of the DSA political program.
Reject any budget that restrains government. More spending is the goal, and no amount is ever enough.
Drawn from the Economic Democracy section of the DSA political program.
Put a government fee on everyday goods to punish the products bureaucrats disapprove of.
Drawn from the Green New Deal section of the DSA political program.
Another state-mandated fee on an everyday product, collected and administered by a new government program.
Drawn from the Green New Deal section of the DSA political program.
Phase out fossil fuels, build a permanent climate bureaucracy, and bill ratepayers for it.
Drawn from the Green New Deal section of the DSA political program.
No worker may opt out. Union membership and dues stay compulsory, and bargaining for yourself is forbidden.
Drawn from the Democracy At Work section of the DSA political program.
One government school system. No vouchers, no school choice, and ever-higher mandated spending.
Drawn from the Freedom To Flourish section of the DSA political program.
Treat housing as a state entitlement. Bind property owners with new mandates and move toward government-owned housing.
Drawn from the Housing For All section of the DSA political program.
Government-run health care for everyone at taxpayer expense, with abortion and gender procedures written into state law.
Drawn from the Healthcare For All section of the DSA political program.
The state sets your pay, not your employer. Mandate a wage floor, then raise it automatically forever.
Drawn from the Freedom To Flourish section of the DSA political program.
See every roll call with its full tally and party split.
Reading motions correctly
29 of the 45 roll calls are motions to kill, table or shelve a bill instead of passing it. On those, a legislator who supports the bill votes Nay on the motion. The motion text therefore appears next to every vote on this site, and the build fails if a stored position ever contradicts its motion type.
Where the data comes from
The public database published by the New Hampshire General Court. Every score is computed at build time from the official rollcallsummary and rollcallhistory records. Nothing is entered by hand. Every vote on this site lists its session year, chamber and vote sequence number so you can check it against the official legislative journal.
Membership is read from the General Court’s active roster: 382 representatives and 24 senators. 16 towns, all in Coos County, currently sit in a House district with no sitting member. Those are shown as vacant.
Scorecard version 6.0.0. Data last built October 14, 2026 at 3:23 PM Eastern.
Scope
The index covers 45 roll calls across 11 issues. It records how legislators voted on those bills. It is not a summary of everything they have done in office.
“DSA Preferred Candidate” is a rating published by Granite Solutions. The Democratic Socialists of America did not produce it and has not endorsed anyone on this site.
Candidates are scored differently
Everything above describes sitting legislators, scored on recorded votes. Most people running for a seat they do not hold have cast no votes, so none of it applies to them. They are scored instead on their answers to a published candidate questionnaire, a statement of intent rather than a record of action. That ballot and its questions are set out on the candidates page. The two are never ranked against each other.
A candidate who returns no answers at all may instead be scored on positions published on their own campaign website, against the same eleven questions. Every such position quotes the sentence it was read from, that sentence is checked against an archived copy of the page, and a reading that takes any chain of reasoning to reach is printed on the candidate’s page and left out of the arithmetic. A question their site never raises counts against nobody, exactly as an unanswered survey question does. A published score is never part survey and part website. One clear survey answer and the website is not read at all. Rows scored this way are marked website wherever they appear.
A former member’s own record
Some candidates have sat in the General Court before and are running again. For them a questionnaire is the weaker evidence, because there is a record: the roll calls they cast. A 2026 filing is matched to a former member only when chamber, given name, surname and party all agree, a House filing is in the county of the seat they held, and exactly one person fits; a name that fits two former members, or a namesake from another county, is scored on the survey like anyone else. The few pairings made by hand (a party that changed mid-term, one person under two employee numbers) are listed with their reason and a source in data/former-member-overrides-2026.json and printed on the page. There is one record card per two-year term (data/record-terms.json): the sitting-member scorecard itself for 2025–2026, and a card of that term’s own roll calls on the same issue areas for 2023–2024, 2021–2022 and 2019–2020. A former member is scored on the most recent term they served that has a card, and the page names it; a vote in 2024 beats a vote in 2022 and the two are never blended. The arithmetic is the sitting-member arithmetic exactly: aligned votes over yea-or-nay votes, an absence left out of the denominator, a roll call taken before they were seated not counted at all, with the same 60% participation gate and a 50% tenure gate for anyone seated at a special election. A vote beats a sentence: where a record exists it is the whole score, and nothing they said on the survey or on a website is blended into it. Rows scored this way are marked record wherever they appear, and the counts beside them are roll calls, not answers. It is not the sitting-member scorecard and is not comparable to it, because it rests on a different session and different bills, and it is never ranked against one.
The governor is scored differently again
A governor casts no roll calls, so the scorecard above cannot reach one. And neither person running for governor in 2026 returned the candidate survey, so the ballot on the candidates page is blank for both of them. What is left is two different kinds of evidence, and each candidate is scored on the stronger one they have: the bills on this scorecard that reached the governor’s desk and were signed or vetoed, or the positions they have published since 2020. Which ballot a candidate lands on is derived from the evidence, never assigned. Both ballots are computed for both people and printed side by side, so a reader can see the question set was not built backwards from a result. It is all set out, bill by bill and answer by answer, on the governor page.