Isosceles triangle area calculator
Give the base and the length of the two equal sides and get the area of an isosceles triangle: a base of 10 with sides of 13 has a height of 12 and an area of 60. Side lengths that cannot close a triangle are flagged. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Base
- 10
- Side
- 13
- Area
- 60
An isosceles triangle is fully determined by two numbers: the base and the length of its two equal sides. From those, this capability drops the altitude onto the midpoint of the base, applies the Pythagorean theorem to one of the two congruent right triangles it creates, and returns the area in a single deterministic call. No unit conversion, no approximation beyond your chosen rounding: just the closed-form answer h = sqrt(side^2 - (base/2)^2) and area = base*h/2, validated so that impossible triangles are rejected instead of silently producing a square root of a negative number.
Two inputs, one answer
The contract is deliberately narrow: you send base (the unequal side) and side (the length shared by the two equal sides), both positive numbers in whatever unit you like — meters, inches, pixels — and you receive the area in the corresponding square unit. An optional decimals field (0 to 10, default 6) controls half-up rounding of the result, so output stays stable across machines and programming languages. Internally the tool halves the base, computes the altitude with the Pythagorean theorem, multiplies, and rounds once at the end.
Why some inputs are rejected
Not every pair of positive numbers describes a real isosceles triangle. If the two equal sides together are not strictly longer than the base — that is, when 2*side <= base — the apex would have to sit on or below the base line and the figure degenerates into a segment. Geometrically this shows up as a negative or zero value under the square root in the altitude formula.
The same treatment applies to zero or negative lengths, non-numeric values, and out-of-range decimals settings: validation happens before any arithmetic, and the error message names the exact field and the exact constraint that failed.
Determinism you can diff
Every response is produced by a pure function with no network access, no randomness, and no clock. For most practical inputs six decimals are far beyond measurement precision; set decimals lower if you want human-friendly output for a report or an invoice, or higher (up to 10) if the result feeds a downstream computation and you want to defer rounding to the last possible step in your own pipeline.
What you can do with it
Fabrication and CNC layout
Brackets, gussets, and decorative panels are often drawn as isosceles triangles. Given the blank width and the leg length, the area drives material take-off and nesting decisions before a single cut is made.
FAQ
What inputs does it need?
Exactly two positive numbers: base (the unequal side) and side (the length of each of the two equal sides). An optional decimals field (0-10, default 6) controls rounding of the returned area.
How is the area computed?
The altitude to the base is h = sqrt(side^2 - (base/2)^2), from the Pythagorean theorem on either half of the triangle, and the area is base*h/2. The result is rounded half-up to the requested decimals.
What units does the result use?
Whatever unit you measure in: if base and side are in centimeters the area is in square centimeters, if they are in feet it is in square feet. The tool does no unit conversion.
Why are some side lengths rejected?
Because the two equal sides together must be longer than the base. If twice the side is equal to or shorter than the base, as with a base of 10 and sides of 5, the apex would lie on the base and there is no triangle.
How many decimals does the result have?
Six by default, and you can choose anything from 0 to 10. Use fewer for a report people will read, or more when the area feeds another calculation and you prefer to round at the very end.
Related tools
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/math/isosceles-triangle-a \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base":10,"side":13}'const res = await fetch("https://api.kit.forhosting.com/math/isosceles-triangle-a", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base": 10,
"side": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/isosceles-triangle-a",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base": 10,
"side": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/isosceles-triangle-a", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base":10,"side":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base":10,"side":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/isosceles-triangle-a", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"base": 10,
"side": 13
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.isosceles_triangle_a",
"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. |
Technical notes
Two inputs, one answer
There is no guessing, no unit inference, and no hidden state between calls: the same JSON in always produces the same JSON out. If you also send the value under an alias (b for base, a or equal_side for side) the canonical field wins, which keeps integrations that grew organically compatible with the documented schema.
Why some inputs are rejected
Rather than returning NaN, Infinity, or a silently clamped number, the capability checks the strict triangle inequality up front and answers with a typed invalid_input error explaining the violated condition, so the caller is never billed for a meaningless result.
Determinism you can diff
The single rounding step at the end uses half-up semantics on a power-of-ten scale, which is stable across IEEE-754 implementations, unlike repeated floating-point accumulation.
Integration use cases
Roof and gable estimating
A gable end is an isosceles triangle: the span is the base and the rafter length is the equal side. Feed both into the endpoint to get the triangle area for sheathing, siding, or paint estimates without touching a calculator.
Education and homework checking
Students verifying the classic altitude-plus-Pythagoras method can compare their hand-computed area against a deterministic reference, and the invalid_input response teaches the triangle inequality when the numbers cannot form a triangle.
Technical questions
What happens if the sides cannot form a triangle?
When 2*side <= base the inputs are geometrically impossible and the endpoint returns a typed invalid_input error naming the violated condition, instead of a NaN or a wrong number.
Does the free web version compute the same result as the API?
Yes. The same pure module runs in the browser widget and in the API handler, with identical validation and rounding, so both return byte-identical output for the same input.