Skip to content
MonkeyOverlaysMonkeyOverlays

Standings

Standings with sample data

Positions by class, licenses, iRating and laps.

http://127.0.0.1:8745/w/standings?lang=en

Maximum subscription: 5 + 1 Hz.

columns selects and orders position,number,flag,driver,carModel,state,license,irating,iratingDeltaEstimate,gap,interval,bestLap,lastLap,averageLap (default order). class,laps,tire are optional. carModel=auto|always|never (auto) controls model visibility; clock=0 hides the local clock.

Common options.

top=0..10 shows the first N cars in each class. around=0..10 adds up to N cars ahead and N behind the player in their class, plus the player. Both are integers; empty, out-of-range or invalid values are ignored. With neither set, the full table is unchanged; setting just one makes the other 0. Zero explicitly enables the compact view: top=0&around=0 leaves only the player in their class.

classes=all is the default; classes=mine shows only the player’s class. Spectating/replays use the focused car. Without a player or focus, each class shows its first top cars, even with classes=mine. Using classes=mine alone filters the class without limiting its rows.

Leaders and nearby cars merge without duplicates. A ··· N cars hidden row counts only the gap between the two blocks, excluding cars after the last neighbor. Touching or overlapping blocks have no divider. With top=0, only the player block appears, without a leading divider. Other classes retain their header, first top cars and a final divider counting the rest (with top=0, just header and divider). Entry counts, SOF, model detection and best laps still use the full standings; intervals still refer to the immediately preceding car in the standings.

Stable height: for a fixed field size, the player’s class reserves min(cars, top + 2 × around + 1 + (top > 0 ? 1 : 0)) row slots. Slots left over when blocks merge or reach either end stay blank at the bottom and are excluded from the accessibility tree. With 40 cars and top=3&around=3, there are always 11 slots: P20 shows P1–3 and P17–23 with a 13-car divider; P3 shows P1–6 with no divider and five blank slots; P40 shows P1–3 and P37–40, a 33-car divider and three blank slots. Position changes, including P7 ↔ P8, do not move the footer. Height can change with field size, focused class or settings.

All three options are in Configure → Widget options, for windows and canvas items. Clear both numbers to restore all rows. For a 390 px phone, combine the row limits with narrow columns; row limits do not change the default columns or width:

/w/standings?top=3&around=3&classes=mine&columns=position,number,driver,gap&lang=en

Races use official positions and within-class F2 gaps; separation of at least a lap is shown in laps. Other sessions sort by best lap. SOF = K × ln(n / Σ exp(−iR/K)), where K = 1600/ln(2). Averages up to five observed non-pit laps without claiming clean opponent laps. Pit time includes transit. Δ iR is estimated, never official; omitted for AI or incomplete data. Footer fuel and incidents always belong to the player. Hidden without cars.

  • Race: official CarIdxPosition, breaking ties by distance traveled.
  • Other sessions: best lap.
  • Classes: fastest to slowest by the reference lap time, CarClassEstLapTime.

During a race, if the distance behind the class leader is one lap or more:

gap_laps = floor(leader_distance − car_distance)

When the difference is less than a lap:

gap_seconds = car_F2Time − class_leader_F2Time

F2Time is the time behind the overall leader. Outside races:

gap_seconds = car_best_lap − class_leader_best_lap

The interval uses the same calculation against the car immediately ahead in the class. Gaps are hidden before the green flag because all values are zero.

A stop is counted whenever the car enters pit road after its first observation. Starting in the pits is not counted as a stop. last_pit_lap stores the number of completed laps at entry.

K = 1600 / ln(2) ≈ 2308
SOF = K × ln(n / Σ exp(−iR / K))

iR is each included driver’s iRating, and n is the number included in the sum. An iRating of 1 in offline sessions is ignored. The formula gives more weight to lower iRatings; the result does not exceed the arithmetic mean (they are equal when every rating is the same).

Names arrive filtered by core settings: abbreviated by default, with flags according to preference. The widget does not reconstruct full names or expose account identifiers. Review visible content before broadcasting.

Privacy guide.