untested marks a team that has not played anyone ranked in this division’s top 20 — or any outside opponent of top-20 strength — so its rating rests entirely on games against the middle and bottom of the field. One game against top-20 opposition, win or lose, clears it. It is a prompt to read the résumé, not a penalty. Full explanation in Method & Policy.
Click any column header to sort by it; click again to reverse. Use Columns to choose what the committee sees. Click a team to open its full résumé — tier record, best wins, worst losses, and the arithmetic behind its numbers. All teams in the pool are rated together; only the selected division is listed. The Massey column is Kenneth Massey's published rating, loaded from masseyratings.com on the Data tab; nothing Massey-like is computed here.
By district
By program
| # | Team | District | Years qualified | Apps | NationalsW-L-T | Win % | Semis | Finals | Titles | NowRPI rank |
|---|
Edit the history file
One line per program: team, district, years (space separated), W, L, T, semifinals, finals, titles. Paste over it from the committee spreadsheet and press Load. This is per gender and division — switch the toggles at the top to edit another pool.
Automatic qualifiers
| District | Team | Record | RPI | Rank |
|---|
Rank = position in the Div RPI table. A low-ranked AQ is normal — that's the point of automatic bids.
At-large pool
| # | Team | Record | Last 10 | vs Top 25in RPI | vs D1 · D2 · D3 | Road | RPI | Colleyrank | AQ |
|---|
Ranked
Next up
Committee ballots
Previous week's submission (optional — paste last week's exported submission CSV, or type rank,team lines) to get ▲▼ movement, new entries and drop-outs:
Weekly release
How to get the file by hand (fallback only — see the warning inside)
1. Open this link in a new tab — it shows raw data, not a web page:
https://0wtr7r0cl7.execute-api.us-east-2.amazonaws.com/prod/tenant/stats?tenant_id=404933495157163011&season=2026-27&sport=msoc&include_players=false&include_games=true&division=div22. Press ⌘S and save it (call it
div2.json).3. For the other divisions change
division=div2 to div1 or div3; for women’s soccer change sport=msoc to sport=wsoc. Save each one.4. Come back here, press Choose NJCAA file(s), and select them all at once — men’s and women’s files can be loaded together; each file is routed to the right side automatically by the
sport value inside it.You should not normally need any of this: the sync job mirrors these feeds several times a day and the board refreshes itself when you open it. Press Refresh from feed to pull the mirror on demand. Loading a file by hand stays available as a fallback.
Load results
Paste CSV, one game per line: date,home,away,home_score,away_score,neutral,score_known (last two optional, 1/0). Leave both scores blank for a scheduled game — it shows on the Results tab as a fixture, stays out of the ratings, and is filled in automatically when you later append the final with the same date and teams. Games load per gender; the division selector filters which teams are listed. Team names must match the roster — unmatched names show in the check below.
Current data
This page does not remember anything when reloaded. Export before you close it. Persistence, ballots and snapshots are what the hosted version adds.
Feed health
Whether the results being ranked are actually current. The NJCAA feed has changed shape before and the failure was silent — the sync kept running and reporting success while the files it wrote held no results — so this checks the outcome rather than the process.
Massey ratings
The published ratings from masseyratings.com — the figure the Sport Codes sanction. It cannot be fetched automatically (bot challenge, no CORS), so paste it here: open the ratings page for this division, select the table, copy, and paste below. Select the whole table and copy — it arrives as one block per team and is read that way. Include the footer line if you can: it carries the Massey run time, which gets recorded alongside the ratings. Loads for the current gender and division, and is shared with the committee.
Roster check
Teams in the results that aren't on the NJCAA roster (non-NJCAA opponents, or names to fix):
What RPI cannot see
RPI is three quarters strength of schedule, so it looks like it should punish a soft schedule. It often does not, and the reason is worth understanding before a seeding call. Everything in this section is about the published, record-based NCAA RPI — it is the argument for why the committee number on the Rankings tab measures schedule differently. See Committee RPI below for what is actually computed.
A closed region manufactures its own .500. RPI measures opponents by their winning percentage. If a group of teams mostly plays itself, that group's win percentages average out near .500 no matter how strong or weak it is in absolute terms. RPI has no way to tell a closed strong region from a closed weak one — it only sees the wins traded inside the loop. Colley and Massey solve every team at once and do detect it, which is why a big gap between a team's RPI rank and its Massey rank is a red flag rather than noise.
Repeat opponents inflate OWP. The NCAA definition removes games against the team being rated from each opponent's record, so that nobody is credited for beating themselves. That is exact when you play an opponent once. Play them three times and you strip three losses out of their record, and they arrive in your strength of schedule looking far better than they are. A team that goes 11-1 against five opponents, three of them met three times, can post an OWP near .550 when its opponents' true combined record is barely .400. Use the Opponents' win % control on the Rankings tab to see both numbers.
Re-weighting RPI does not fix it. The obvious move is to cut the winning-percentage share from 25% to 20% and give it to the schedule. It barely moves anything, because the problem is not how much weight OWP carries — it is that OWP measures opponents by winning percentage, and a closed group manufactures .500 records whatever its true level. Dropping the WP weight far enough to matter (10-15%) starts crowning teams with losing records and brutal schedules, which is worse. The weights are editable on the Rankings tab if you want to see this for yourself; leave them at .25 / .50 / .25 for anything published, because that is the definition of RPI.
What to do about it. The first answer is built in: the committee RPI replaces the record-based schedule terms with True SOS, which measures opponents by the joint solve across the whole pool rather than by their win-loss records, so a closed region cannot launder itself through the schedule half. Three habits on top of that, none of which require abandoning RPI: sort by Consensus to see the mean of the RPI, Colley and Massey ranks and catch teams that only one system likes; turn on the Opponents, In district and vs Top 10 columns, which between them expose an untested schedule in one glance; and treat the red untested badge — no games against top-20 opposition, in this division or outside it — as a prompt to look at the résumé rather than the rating. A team with no win over anyone in the top half of the division has not earned a seed regardless of what the number says.
NJCAA Sport Codes compliance
Checked against the 2026-27 NJCAA Handbook, Sport Codes Section 11 (Sport Committee & Poll Process). Each rule below is enforced by the tool rather than left to the operator.
| Sport Codes rule | How this tool handles it |
|---|---|
| Games against non-member programs (club, JV, Prep) are not included in rankings, seeding or at-large — except NJCAA-approved military, NWAC and California Junior Colleges. | Non-member games are dropped from every rating by default. NWAC and CCCAA opponents in the file are allow-listed and always count. The toggle to include them is there for what-ifs and warns you when it is on. |
| Poll size: soccer Division I 20, Division II 20, Division III 10. | The ballot length follows the division automatically. Override it and the tool still shows you the Sport Codes number. |
| The highest and lowest vote for each team is omitted from each poll. A no vote counts as the lowest vote. | Collation drops one high and one low score per team, with no votes scored as zero so they drop as the low. Raw totals stay visible underneath. Needs at least three ballots. |
| A dropped first-place vote still counts for receiving votes but not points. Ties at No. 1 break on first-place votes. | First-place votes are counted across every ballot, shown in their own column, and used as the first tiebreak. |
| Teams receiving votes but outside the poll are listed highest to lowest by votes; committees may not pre-select them. | Everything below the cut line is listed automatically in points order and flagged RV. Nothing is hand-picked. |
| Poll voting criteria: overall body of work, record since last poll, last 10, record vs district, record vs DI/DII/DIII. | All five are available as columns — Since last poll, Last 10, vs District, and vs D1/D2/D3 — alongside the ratings. |
| Individual votes are shared internally and listed by Voter 1, 2, 3 rather than by name. | A toggle on the ballot tab anonymises every voter column for sharing. |
| Votes open 8:00 am ET Monday and are due 1:00 pm ET. | The ballot deadline defaults to the next Monday at 1:00 pm and late submissions are stamped LATE. |
| Massey Ratings may be used as a committee tool for soccer rankings, seeding and at-large from 2026-27. | Yes. Kenneth Massey's published ratings are loaded on the Data tab (his final 2025 tables ship with the site) and are the only Massey figure anywhere on it: they fill the Massey column, feed the schedule half of the committee RPI through True SOS, and count as one of the three ranks in the Consensus. Nothing Massey-like is computed here. If nothing has been loaded for a division that week, the column is empty and RPI and Consensus run on Colley alone — and the Rankings tab says so. |
| Each district champion earns the automatic bid; the rest of the field is at-large. | The At-Large Board projects one AQ per district and ranks everyone else in a single national pool, with the cut line drawn at the number of at-large bids. |
Not yet handled: conference records (the feed has no conference field), and the at-large nomination form requirement — a team must file one to be considered, and this tool does not know who filed.
How the numbers are built
Every game in the pool counts for both teams. Men's ratings are computed across every men's game loaded — Div I, II and III together, plus non-NJCAA opponents when they appear. Rankings are then listed by division. There are no divisional multipliers: a win is worth what the opponent's rating says it is worth, not what the letter next to their name says. That is what makes cross-division scheduling neutral for both sides.
Committee RPI
This is not the published NCAA RPI, and the difference is the whole point. It keeps the RPI shape — a quarter your own weighted record, three quarters your schedule — but measures the schedule by network strength rather than by opponents' win-loss records, for the reason set out at the top of this page: a closed region manufactures its own .500 and record-based OWP cannot see it. Classic OWP and OOWP are still computed and still shown as columns, for reference and for comparison with the NCAA number; they no longer feed the rating.
neti = team i's percentile across the whole pool on Colley, averaged with its percentile on Massey's published rating where he lists the team
True SOS = mean of opponents' net, counted once per game played (a repeat opponent counts every time)
opp TSOS = mean of opponents' True SOS
both schedule terms are then rescaled to the mean and spread of classic OWP, so record and schedule keep the traditional RPI balance
RPI = 0.25·WP + 0.50·True SOSs + 0.25·opp TSOSs
The 0.6 / 1.4 weights are the NCAA's (adopted for soccer from the men's basketball RPI). They reward road results and penalise home losses in the team's own win percentage only; the schedule side is measured on the joint solve, so one team's schedule doesn't distort everyone else's. Toggle the weighting on the Rankings tab to see exactly what it moves. Adopt these numbers because they are recognised, not because they have been fitted to JUCO soccer — and fix them in the policy before the season.
OWP = mean of opponents' unweighted WP, each excluding games vs this team
OOWP = mean of opponents' OWP
NCAA RPI = 0.25·WP + 0.50·OWP + 0.25·OOWP
Colley
Solves (2 + ni)·ri − Σj rj = 1 + (wi − li)/2 across the whole pool, ties as ½ W + ½ L. Wins and losses only; no margin, no arbitrary weights, no home/away. Because it is solved jointly, beating a strong D1 moves you a lot, beating a weak D1 barely moves you, and beating a top-3 D2 moves you as much as beating a D1 of equal strength. Use it as the tiebreak and as the check on RPI's label-blind schedule measure.
Massey
The Massey column is Kenneth Massey's published rating, used with his permission. He rates every NJCAA program jointly, so his Division I, II and III tables sit on one scale; the tool loads whichever have been pasted and merges them into the joint pool. His rating, power, offence, defence, home advantage and strength of schedule are shown as he publishes them, with his rank in each. His figure drives the rankings, not just the display: it is averaged with Colley into the network strength behind True SOS and the committee RPI, and it is one of the three ranks in the Consensus. A team he does not list is measured on Colley alone. Nothing Massey-like is computed here.
masseyratings.com cannot be read automatically: it sits behind a bot challenge and sends no CORS headers, so neither this page nor the sync worker can fetch it. Paste each division's table weekly before the poll; the tool records his run date and who loaded it, so a published poll can say which run it used. His final 2025 tables ship with the site.
Policy lines this implies
1. All NJCAA soccer games count for both teams. Ratings are computed across the full men's or women's pool. Rankings are published by division. No divisional multipliers are applied.
2. RPI uses NCAA home/away weighting (0.6 / 1.4) on the team's own win percentage. Neutral-site games are unweighted.
3. The schedule half of the committee RPI is measured by network strength (True SOS), not by opponents' win-loss records, at the traditional .25 / .50 / .25 weighting. The published NCAA RPI is computed alongside it and shown for reference. Anything released must say which of the two it is.
4. RPI seeds the ballot. Colley breaks ties. Massey is committee-only.
5. Unreported results are not eligible for ranking that week.