Go Area Score Calculator
This Go area score calculator totals the territory and living stones controlled by each player, adds komi to White, and reports the winner and winning margin.
Run — free
It is designed for area scoring, where stones remaining on the board count alongside surrounded empty points. Enter the four counts after both players agree that play is finished and dead stones have been removed, then supply the komi used for the game. The result includes both players' totals and standard shorthand such as B+3.5 or W+6.5.
Count the final position for area scoring
Area scoring measures how much of the board each player controls at the end. For Black, count every black stone that remains on the board and every empty point surrounded only by Black. Repeat the process for White. Before counting, both players should agree that the game has ended, identify dead groups, and remove those dead stones. Do not enter captured stones from the bowls: captures are not added separately under area scoring. Neutral points, often called dame, belong to neither player and should not appear in either territory count. Likewise, a shared or unsettled region should not be awarded merely because it is near one color. Enter living stones and surrounded empty points in separate fields so the calculator can show how each total was formed. The arithmetic is simple, but accurate classification of the final board is essential. If players disagree about whether a group is alive, resolve the position under the ruleset being used before treating the computed score as final.
Apply komi and read the result
Black's area score is Black territory plus Black stones. White's score before komi is White territory plus White stones, and the entered komi is then added to that subtotal. Komi compensates White for moving second; common values include a half point so that an ordinary game cannot end tied, but the correct value is the one specified for your event, server, or agreement. The calculator does not assume a default because using the wrong komi can reverse a close result. After both totals are calculated, the larger score wins and the difference becomes the margin. A result of B+2.5 means Black won by two and a half points, while W+7.5 means White won by seven and a half. If both adjusted totals are exactly equal, the result is shown as a tie. Whether a tie is called jigo, replayed, or settled another way depends on the applicable competition rules; this calculator reports the numerical equality without inventing a tournament outcome.
Know what this calculator includes and excludes
Use this tool only when the scoring method is area scoring. Some Go rules instead use territory scoring, where surrounded empty points and captured stones are counted while living stones are not directly added. Feeding a territory-scoring worksheet into an area-scoring formula can produce the wrong total even when the winner sometimes happens to remain the same. This calculator also does not inspect a board diagram, determine life and death, apply handicap-specific adjustments, enforce pass-stone rules, or decide disputes. It accepts already agreed counts and performs the final deterministic arithmetic. The count fields allow positions up to 625 points, covering boards through 25 by 25, and komi must be a finite number from zero through 100. For a normal 19 by 19 game, use the board itself as a sanity check: the combined stones, awarded territory, and neutral points account for the board's 361 intersections. Keeping a written breakdown is useful for teaching games, club records, tournament verification, and software tests because another person can reproduce every subtotal.
What you can do with it
Check a club game
Enter the agreed final territory and living-stone counts to confirm the winner before recording the result.
Teach area scoring
Show a new player exactly how stones, surrounded points, and komi contribute to the two final totals.
Test Go software
Create deterministic expected scores for end-position fixtures without relying on a board engine or network service.
FAQ
What does the calculator cost?
It runs free in the browser on this page. API requests cost $0.002 each.
Do captured stones count in area scoring?
No. Enter stones still on the board and surrounded empty territory. Do not add captures separately.
Is komi added to Black or White?
Komi is added to White's score to compensate for Black taking the first move.
Can the result be a tie?
Yes. If the adjusted totals are equal, the calculator reports a tie. A half-point komi normally prevents this.
Can I use this for Japanese territory scoring?
No. This calculator implements area scoring. Territory scoring uses a different accounting method that includes captures and does not directly count living stones.
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/game-go-area-score \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"black_territory":45,"black_stones":120,"white_territory":42,"white_stones":116,"komi":6.5}'const res = await fetch("https://api.kit.forhosting.com/hobby/game-go-area-score", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"black_territory": 45,
"black_stones": 120,
"white_territory": 42,
"white_stones": 116,
"komi": 6.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/game-go-area-score",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"black_territory": 45,
"black_stones": 120,
"white_territory": 42,
"white_stones": 116,
"komi": 6.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/game-go-area-score", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"black_territory":45,"black_stones":120,"white_territory":42,"white_stones":116,"komi":6.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"black_territory":45,"black_stones":120,"white_territory":42,"white_stones":116,"komi":6.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/game-go-area-score", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"black_territory": 45,
"black_stones": 120,
"white_territory": 42,
"white_stones": 116,
"komi": 6.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.game_go_area_score",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |