ForHosting KIT · Health & fitness

Calculate team win percentage

A 10-4-2 record is a .688 win percentage, because each tie counts as half a win: enter wins, losses and ties and get the figure printed in league standings. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Wins
10
Losses
4
Ties
2
You get
Games
16
Win pct
0.688
Percentage
68.8
Display
.688

The win percentage calculator takes a team's record — wins, losses and, where the sport allows them, ties — and returns the standard win percentage used in league standings. Ties count as half-wins, so a 10-4-2 season is not the same as 10-4-0. You get the classic three-decimal figure from the standings table, the equivalent percentage, the display form as printed in newspapers, and the exact formula used, all in one deterministic call.

Why ties count as half-wins

Many leagues — the NFL, NHL before the shootout era, association football standings in some formats, chess and countless amateur competitions — allow games to end in a draw. If you simply ignored ties, a team with ten wins, four losses and two ties would be rated exactly like one with ten wins and four losses, which undervalues the two games it did not lose. The standard solution, adopted by major league standings for decades, is to count each tie as half a win and half a loss.

The win percentage calculator implements that convention exactly: effective wins are wins plus half the ties, and the divisor is every game played. A 10-4-2 team therefore earns (10 + 1) ÷ 16 = .688, sitting correctly between the 10-4 club at .714 and a hypothetical 10-5-1 at .656, which is precisely where its results put it. The result is the number you see in printed standings, rounded to three decimal places so that .643 means the same thing everywhere, in every league and on every site.

Edge cases and when the calculation is undefined

A win percentage only has meaning once at least one game has been played. Everything else works as you would expect: a winless team with losses returns .000, a perfect season returns 1.000, and a season made entirely of ties returns exactly .500, which is the elegant property of the half-win convention. Sports without ties — baseball, basketball, most modern hockey formats — simply omit the ties field, and the formula reduces to wins divided by games played.

Typical callers are standings generators that sort teams by the returned figure, historical databases that verify a quoted percentage against the underlying record, and journalism tools that need the classic three-decimal form for print. Because the calculation is deterministic — no network, no clock, no randomness — the same input always yields the same output, which is exactly what you want from a number that decides playoff seeding and appears under team names in a newspaper table.

Compare teams across sports with ties

Rate an NFL team's 10-4-2 season fairly against a baseball team's 10-4 by letting ties count as half-wins.

Validate a historical record before publishing

Check that a quoted win percentage matches the wins, losses and ties in your dataset before it goes into an article or report.

How are ties handled?

Each tie counts as half a win and half a loss, the standard convention in league standings. The formula is (wins + 0.5 × ties) ÷ total games.

What if my sport has no ties?

Omit the ties field; it defaults to zero and the formula reduces to wins divided by games played.

Why three decimal places?

That is the long-standing convention in standings tables, so .643 is unambiguous. The equivalent percentage with one decimal is returned alongside it.

Can I pass the numbers as strings?

Yes. Numeric strings like "10" are accepted and coerced, as long as they are finite and non-negative.

What win percentage does a 10-4-2 record give?

It gives .688. The 10 wins plus half of the 2 ties are divided by all 16 games, which places the team between a 10-4 record at .714 and a 10-5-1 record at .656.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/sports/win-percentage-calc

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/sports/win-percentage-calc \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wins":10,"losses":4}'
{
  "wins": 10,
  "losses": 4
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "sports.win_percentage_calc",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

How the numbers are computed and rounded

The formula is (wins + 0.5 × ties) ÷ (wins + losses + ties). The response also echoes back the wins, losses, ties and total games used, so a caller can store the full computation next to its own records and audit later exactly which record produced which figure. The API returns the raw result rounded to three decimals, which is the standing-table convention, plus the same figure expressed as a percentage with one decimal and a display string in the classic format — ".643" rather than "0.643" — as it appears in sports pages. Every count must be a finite, non-negative number; negative or missing values are rejected with a typed error that names the offending field, and such failed requests are not billed. Numeric strings like "10" are accepted and coerced, which keeps the endpoint friendly to form submissions and CSV-driven pipelines where everything arrives as text.

Edge cases and when the calculation is undefined

A record of 0-0-0 divides by zero, and rather than inventing an answer the endpoint returns a typed invalid_input error explaining that total games is zero. The same code runs free in the browser on this page, so you can sanity-check a record by typing it in before you wire the API into a standings pipeline.

Generate league standings

Feed each team's record into the endpoint and sort by the returned three-decimal figure, exactly as official standings do.

What does it cost?

$0.002 per request. It is also free to run in your browser on this page.

What happens with a 0-0-0 record?

The request is rejected with an invalid_input error, because a win percentage is undefined when no games have been played. Failed requests are not billed.

Read the full KIT documentation →