ForHosting KIT · Developer Utilities

Parse chess time control notation and calculate game duration

Chess time controls such as 90+30 compress two important clock settings into a short notation: the initial minutes available to each player and the seconds added after every completed move.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

This calculator separates those values and estimates the maximum clock time available across both players for a specified number of complete moves. It is useful when planning tournament rounds, comparing formats, documenting an event, or checking that a notation has been entered correctly before it reaches pairing software or a published schedule.

Read base-plus-increment notation correctly

A time control written as 90+30 means that each player starts with 90 minutes and receives an additional 30 seconds after completing each move. The value before the plus sign is always interpreted here as whole minutes, while the value after it is interpreted as whole seconds. Enter the notation without spaces, words, decimal points, or extra stages. This capability deliberately accepts one clear base-plus-increment form instead of guessing what a loosely formatted value might mean. That strictness matters when a schedule or tournament rule depends on the result: 5+3, 15+10, and 90+30 are unambiguous, while labels such as “rapid 15” or multi-stage controls require additional rules that are not encoded in the string. The parsed response repeats the notation and exposes base_minutes and increment_seconds separately, making it convenient for validation, storage, or use by another deterministic calculation. A malformed string returns an input error rather than a plausible but incorrect interpretation.

Understand the maximum-duration calculation

The duration estimate accounts for both clocks. First, the starting allocation is doubled because both White and Black receive the stated base minutes. Next, the increment is multiplied by the requested move count and doubled again because a complete move consists of one move by White and one move by Black. For 40 complete moves, a 90+30 control therefore includes two starting allocations and up to 80 increment awards. The result is returned in seconds for exact downstream arithmetic and in minutes for convenient reading. This is a maximum based on clock allocations, not a prediction of how long players will actually sit at the board. A game can end early, players can move before consuming all available time, and operational pauses may extend the real event outside the chess clocks. The calculation also assumes that every counted move by each player earns the stated increment; it does not model delays, penalties, time forfeits, or controls whose increment begins only after a particular move.

Use the result for planning and validation

Tournament organizers can use the maximum figure as a conservative clock-time input when designing round intervals, but should add separate allowances for resetting boards, publishing pairings, player movement, arbiter decisions, and breaks. Software developers can parse notation at an input boundary and store the two numeric components instead of repeatedly splitting a string throughout an application. Publishers can check that a stated move count produces a schedule consistent with the advertised control. The move_count field means complete moves by each player, not individual half-moves or plies; entering 40 models up to 40 moves by White and 40 by Black. Values must be whole numbers within the published limits, and the time control must contain non-negative whole numbers on both sides of exactly one plus sign. A zero base or zero increment is accepted when the other component is positive, so formats such as 0+1 and 10+0 remain representable. The all-zero control is rejected because it provides no playable clock allocation.

Plan tournament round intervals

Estimate the greatest amount of chess-clock time available to both players, then add operational buffers to build a practical schedule.

Validate pairing-software input

Reject malformed base-plus-increment strings before storing them or passing their parsed components into event software.

Compare chess formats

Calculate controls against the same move count to compare their maximum allocated playing time on a consistent basis.

What does 90+30 mean in chess?

Each player starts with 90 minutes and receives 30 additional seconds after each completed move.

Does move_count mean plies or complete moves?

It means complete moves by each player. A move_count of 40 models 40 White moves and 40 Black moves, for up to 80 increment awards.

Is the result the expected real-world round length?

No. It is the maximum time allocated on both chess clocks under the stated assumptions. Scheduling buffers and non-clock delays are separate.

Can the base time or increment be zero?

Yes, provided the other component is positive. Controls such as 0+1 and 10+0 are valid, while 0+0 is rejected.

Are multi-stage controls supported?

No. This parser handles one base-plus-increment stage only. A control with additional time after a specified move needs a richer format.

What does an API request cost?

Each API request costs $0.002. The same deterministic calculation can run in the browser where offered.

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/misc2/chess-clock-time-control

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/misc2/chess-clock-time-control \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"time_control":"90+30","move_count":40}'
{
  "time_control": "90+30",
  "move_count": 40
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "misc2.chess_clock_time_control",
  "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.

Read the full KIT documentation →