How Ratings Work

1307scout shows every statistic we can, so you can look at the numbers and draw your own conclusions. Ratings and the other derived stats on this page are there to supplement those numbers, not replace them. A grade is a quick summary to help you decide where to look, and the stats behind it are always shown next to it.

Two ratings, never blended

Every team can have two separate grades. Neither one knows the other exists.

Scouting ratingOfficial rating
Built fromMatch and pit entries from our own scoutsMatch results synced from FRC Events and The Blue Alliance
MeasuresWhat this robot did on its ownAbout how many points this team adds to its alliance per match (OPR)
SeasonsThis season's form only (2026 REBUILT)Every synced match
UpdatesAs soon as an entry is savedWithin about a minute of a sync

They're kept apart so a team is rated on whichever data it actually has. A team with a full official record but no scouting coverage still gets an official grade, and when the two grades disagree, that's useful to see.

Letter grades

Both ratings turn into a letter the same way. Each team gets a score (0 to 100 for scouting, points per match for official), then the grade comes from the share of rated teams with the same score or lower. A grade is a ranking among the teams in our database, not a measure against all of FRC.

GradeShare of rated teams at or below this scoreIn other words
S90% or moreTop 10%
A75% to 90%Next 15%
B50% to 75%Next 25%
C25% to 50%Next 25%
D10% to 25%Next 15%
FUnder 10%Bottom 10%
NRNot rated: fewer than 3 matches of that kind of data (for the official rating, 3 qualification matches)
TTest team: tagged by staff and left out of the grading

The scouting rating

A team's score is a weighted blend of seven parts, each from 0 to 100. These are the bars in the Rating breakdown on the Team Database. "Ranked" means the share of scouted teams at or below this team on that measure, so 80 means it's level with or ahead of 80% of them.

WeightPartHow it's measured
32FUEL scoringAverage FUEL points per match, ranked. Matches where the scout marked the role as Defense or Feeder are left out, so a good defender isn't graded as a bad scorer.
16ClimbingAverage TOWER points per match (auto and teleop), ranked.
16Reliability1 − (disabled rate + 0.6 × broke-down rate + 0.4 × stuck rate), never below 0. Not ranked.
11Shooting efficiencyThe average of two things: FUEL per volley (ranked) and scouted accuracy, where 1 to 5 maps to 0 to 100.
11Robot capabilityThe team's latest pit entry, scored in the table below. Not ranked.
9Autonomous80% average auto points (ranked) and 20% how often it left the starting zone.
5Fouls avoided1 − foul or card rate. Not ranked.

Points used

From Table 6-4 of the 2026 game manual. Avg pts / match on a team's card is FUEL plus TOWER points, across all of its matches.

ActionPoints
FUEL in an active HUB (auto or teleop)1 each
TOWER L1 in auto15
TOWER L1 / L2 / L3 in teleop10 / 20 / 30

Robot capability scoring

Each pit question answered scores from 0 to 1, and the answers are averaged. Questions left blank are skipped. The robot photo and notes aren't scored.

QuestionScore
Highest TOWER levelNone 0, L1 0.33, L2 0.67, L3 1
Fits under a TRENCHNo 0, Yes 1
Ground intakeNone 0, Front or Side 0.7, Front and side 1
Shooter typeFixed flywheel 0.4, Other 0.5, Adjustable hood 0.7, Turret 1
DrivetrainMecanum or Other 0.5, Tank 0.65, West Coast 0.8, Swerve 1
Max FUEL heldCapacity ÷ 30, up to 1
Max shooting rangeRange in feet ÷ 20, up to 1
Uses AprilTag visionNo 0, Yes 1

When data is missing

Example. A team scores FUEL 80, Climbing 60, Reliability 90, Efficiency 70, Capability 40, Autonomous 50 and Fouls avoided 100.
(32×80 + 16×60 + 16×90 + 11×70 + 11×40 + 9×50 + 5×100) ÷ 100 = 71.2
With no pit entry, Capability is skipped and the remaining weights add up to 89:
(32×80 + 16×60 + 16×90 + 11×70 + 9×50 + 5×100) ÷ 89 = 75.1

The official rating

One number, from results only: the team's OPR, which estimates how many points it adds to its alliance each match. An OPR of 64 means "about 64 points per match, on top of its partners". It's worked out from the qualification matches at each event, then averaged across the team's events:

Score = average of the team's event OPRs, each weighted by matches played × event tier

Results against a tougher field say more about a team, so each event also counts by the tier staff set on it:

Event tierMatch weight
FIRST Championship2.0×
District Championship1.5×
Qualifier1.0×
Off-season0.75×
Example. A team had an OPR of 60 over 12 matches at a qualifier, and 80 over 10 matches at a District Championship.
Score = (60×12×1 + 80×10×1.5) ÷ (12×1 + 10×1.5) = 1920 ÷ 27 = 71.1 points per match

Playoff matches aren't used, and neither is win rate. Both depend heavily on partners: a robot picked onto a dominant alliance wins and scores a lot without doing much itself. Record and average alliance score are still shown next to the rating as plain stats.

Why OPR. This replaced an earlier score (60% average alliance score + 40% win rate) after both were tested on the full 2026 season. Built from matches before the FIRST Championship, OPR picked the winner of 76% of Championship qualification matches, against 71% for the old score, and its grades matched an independent rating (Statbotics EPA) far more often. Adjusting OPR for how high each event or week scored was tested too, and made it worse.

Reading ratings carefully

Alliance grades and win chance

The Alliance View adds two estimates for a full red and blue match-up. Our Matches shows the same win chance for each upcoming match.

Alliance grade

Each alliance gets a Scouting grade and an Official grade, kept separate like team grades. The three teams' scores are added together, then compared against every possible 3-team alliance from the rated teams, using the same S to F cutoffs as above. An S alliance has a combined score in the top 10% of all alliances those teams could form. All three teams must be rated, otherwise the grade is NR, and a test team counts as not rated.

Win chance

This estimates how likely each alliance is to outscore the other, from two separate sources. A source is only used if all six teams have at least 3 matches in it.

ScoutedOfficial
Expected scoreThe three robots' Avg pts / match, added upThe three teams' OPRs (official rating scores), added up
UncertaintyThe three robots' variances, added upThe average of the three teams' alliance-score variances

A team's variance measures how far its scores swing from match to match, and is increased by 1/n for a team with n matches, so less data means less certainty. It's never treated as less than a 5 point swing. Each source then turns the expected gap into a chance:

Chance = 1 ÷ (1 + e−1.702 × gap ÷ √(red uncertainty + blue uncertainty))

The headline number is the average of the sources available, and it's kept between 5% and 95%. Both sources are shown beside it, because when they disagree, that's worth knowing.

Example. Red is expected to lead by 20 points, and the two alliances' uncertainty adds up to 900, a typical swing of 30 points.
1 ÷ (1 + e−1.702 × 20 ÷ 30) = 76% for red, leaving 100 − 76 = 24% for blue

Treat this as a rough guide:

Playoff Selection ranking

The Playoff Selection page ranks every team at the event that hasn't joined an alliance. It adds no new score: the two ratings stay separate, and the raw stats sit beside them.

Event rankings

Pick an event at the top of the Team Database to see its qualification standings. They're worked out from the synced FRC Events / TBA qualification matches, since the sync doesn't bring in the official ranking table.

Estimated contribution (OPR)

Official scores cover a whole alliance. OPR (offensive power rating) estimates how much of that one team adds. It treats each alliance's number as the sum of its three robots' numbers, then finds the per-team values that best fit every qualification match at the event.

Vision estimates

A program on a team laptop reads match video and saves an estimate for each robot. It reads the scoreboard and the clock from the stream overlay, follows each robot's bumpers on the wide shot, and tells robots apart by reading their bumper numbers. These numbers are shown in their own Vision section and never enter a rating.

Bumper numbers are often too small or blurry to read on a broadcast. When a robot's number can't be read, the program compares how the robot looks with how that team's robot looked in other matches of the season where its number was read clearly. Matches from the same event count first, since robots change between events. If that doesn't settle it either, a robot is only identified when it's the one team on its alliance left.

StatHow it's worked out
Estimated FUEL scoredEvery rise in the alliance's score is split between its robots. A robot in its own alliance zone just before counts most, one elsewhere counts a little, and one out of view counts in between. The end of auto and the end of the match are skipped, since TOWER points land then. The split is then scaled to the official FUEL points: the alliance score minus each robot's official TOWER points and the foul points.
Left starting zone (auto)The robot crossed its alliance-zone line during auto.
Distance drivenSecond-by-second movement on the field, skipping gaps and impossible jumps.
Time in each zoneSeconds the robot was tracked in its own zone, the neutral zone and the opponent's zone.
Time stoppedSeconds in teleop, before endgame, where the robot moved less than 6 inches in a second. A long stop can mean a disabled robot.
Close contactsSeparate times the robot came within 40 inches of an opponent.
Identified by number, by lookThe share of the robot's tracked time it was identified by reading its bumper number, and by how it looks. The rest was by being the only team left.
ConfidenceThe share of the match the robot was tracked, cut by up to half when it wasn't identified. Being identified by look counts a little over half as much as by bumper number. Under 50% is shown as low.

Match Flags checks

The Match Flags page runs these checks on each played qualification match. Test teams are left out.

FlagLevelWhen it's raised
Team isn't in this matchHighAn entry's team isn't in that match's line-up, or the match is past the end of the schedule.
TOWER doesn't matchHighA scouted auto or endgame TOWER level differs from the official result for that robot.
Not scoutedMedium, or Low with visionNo one scouted the robot. It's Low when vision covered it with 50% confidence or more.
Scouts disagreeMediumTwo entries for one robot differ by more than 10 FUEL and 30% of their average, or give different TOWER levels.
Alliance FUEL doesn't add upMediumAll three robots are scouted, and their FUEL total is more than 20 points and 35% away from the official FUEL points.
FRC Events and TBA disagreeMediumThe two sources have different scores for the match.
Vision saw the robot stoppedMediumVision saw a stop of 20 seconds or more, and no scout marked the robot disabled or broken down.
FUEL far from usualLowThe entry is more than 15 FUEL and 3 spreads from the team's median at the event, with 3 or more other matches. The spread is 1.48 times the median distance from the median, which matches a standard deviation when there are no outliers.
Vision disagreesLowVision's FUEL estimate differs from the scouts by more than 15 FUEL and more than half of the larger number, or it disagrees on leaving the starting zone.
Vision scoreboard read is offLowVision's final score differs from the official score by more than 5, both with and without foul points (the broadcast scoreboard usually doesn't show those until after the match), so its numbers for that match may be off. Not checked when the video ends before the match does.

Who to scout next lists the next three unplayed qualification matches. It highlights the three robots in each with the smallest share of their played matches scouted by a person.

Other derived stats

These appear on the Team Database and Alliance View. They use plain, unweighted numbers, so they won't always match the rating's inputs.

StatHow it's calculated
Win %Wins ÷ matches played. A tie counts as played but not as a win, and matches aren't weighted by event tier.
Qualification / Playoff win %The same, for just those matches. The number in brackets is the match count.
Avg score marginAverage of alliance score − opponent score, across wins and losses.
Score swingStandard deviation of alliance score, shown from 3 matches. Lower means steadier.
Red / Blue / Station win %Win % for just the matches on that alliance color or at that driver station.
Biggest win / Biggest lossThe largest positive and negative score margin.
Longest win streakMost wins in a row, by event date and match order. Ties and losses end a streak.
Last 5The last five results, by event date and match order.
Teleop FUEL trendAverage of the last 3 entries minus the average of all earlier ones, shown from 5 entries.
Scouting / Official rankPosition by score among rated teams, leaving out test teams. Teams level on score share a rank.
All scouted statsFor every form field: average, low and high for numbers, Yes % for yes/no answers, and each answer's share for choices. Blank answers aren't counted.
Score breakdownThe same summary for everything FRC Events or TBA report per match. These are alliance totals unless marked "this robot".
Estimated contribution (OPR)One team's share of each alliance number, explained above.
Climb rateShare of entries with a teleop TOWER level other than None.
Usual role / Main FUEL sourceThe most common answer, with how often it was chosen.
Combined scouted ptsOn the Alliance View, the sum of each team's Avg pts / match.
OPR (pts added / match)On the Alliance View and Team Database, the team's official rating score, explained above.

The calculations live in team_ratings() and team_official_ratings() in SQL/rebuild_all.sql, and the Team Database applies the final grading. OPR is in js/opr.js, the vision estimates in the vision/ worker, and the flag checks in flags.html. If they change, this page should change with them.