Tree height calculator
Standing 50 m from the trunk and sighting the crown at 30 degrees puts it 28.867 m above your eye: the calculator multiplies distance by the tangent of the angle and adds your eye height. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Distance
- 50
- Angle deg
- 30
- Angle rad
- 0.5235987756
- Tan angle
- 0.5773502692
- Observer height
- 0
- Height above eye
- 28.8675134595
Foresters, arborists, ecology students, and outdoor educators routinely need a tree's height without climbing it or bringing a laser rangefinder. The classic tangent method uses two field measurements: the horizontal distance from the observer to the trunk, and the angle of elevation from eye level up to the crown. Tangent of that angle equals opposite over adjacent, so the rise from eye to crown is distance times tan of the elevation angle; adding observer eye height then yields total height from the ground. This calculator takes a positive distance in any consistent linear unit, an elevation angle in degrees strictly between zero and ninety, and an optional non-negative observer height that defaults to zero. It converts the angle to radians, applies that closed identity, and returns the tree height in the same unit as the distance. Angles at or outside the open interval (0, 90) are rejected because tan(0) is a degenerate flat sight and tan(90°) is undefined.
How distance and elevation angle fix tree height
Picture a right triangle whose adjacent side is the horizontal distance from your standing point to the tree trunk and whose opposite side is the vertical rise from your eye up to the crown. The angle at the observer is the elevation angle you measured with a clinometer, hypsometer, smartphone inclinometer, theodolite, or a homework protractor. By definition, the tangent of that elevation angle equals opposite over adjacent, so tan(θ) equals height above the eye divided by distance.
Rearranging gives the working formula used in every forestry tangent-method worksheet: height above the observer's eye equals distance times tan(θ). The angle must be converted from degrees to radians before most programming runtimes evaluate the tangent, multiplying by pi over one hundred eighty. Classic textbook checks include a thirty-degree elevation at a fifty-unit standoff, which yields a rise of fifty over the square root of three, and a forty-five-degree elevation where the rise equals the distance exactly because tan(45°) is one.
Because every quantity after the validation steps is a single tangent and a multiply-add, the path is fully deterministic: the same finite distance, angle, and eye height always produce the same tree height within floating-point rounding.
Where a tree height calculator earns its keep
Secondary-school trigonometry constantly asks students to find how tall a tree is when they stand a known distance away and measure the angle of elevation to the top; a trusted calculator with hard open-interval checks speeds homework grading and removes spreadsheet mistakes where someone multiplies by tan of a blank cell or of ninety degrees.
Forestry, arboriculture, and ecology labs use the same tangent method with a clinometer or hypsometer: tape or pace the horizontal distance, shoot the crown, add instrument height, and record total height for stand tables, competition entries, and carbon or biomass allometry that starts from height and diameter. Outdoor educators and citizen-science projects need a worksheet key that matches the formula printed in the field guide, including the optional eye-height offset that beginners forget.
Urban tree inventories and playground-risk assessments need a repeatable height when a laser rangefinder is unavailable or when the trunk is close enough that a trigonometric shot is safer than walking under the crown. Game and simulation tutorials use the identical distance-times-tangent path for placing a camera or an observer relative to a known object, but this landing is for the tree-height query, not a generic opposite-side solver.
If you later need the inverse problem of recovering ground distance from a known height and angle, recovering the elevation angle from run and rise, or a full two-angle hypsometer reduction from shots to both crown and base, treat those as separate search intents rather than overloading this tree-height landing.
What you can do with it
Clinometer field worksheets
Add observer eye or instrument height to distance times tan of the crown shot so a forestry lab book records total height from the ground, not just rise above the eye.
Stand inventory without a laser
Batch the same closed tangent identity for urban or plot trees when a rangefinder is unavailable, using one consistent linear unit for distance, eye height, and height.
FAQ
How do you calculate tree height from distance and angle?
Height above the eye is distance times tan of the elevation angle. The angle is converted from degrees to radians before the tangent is evaluated.
Why must the elevation angle be between 0 and 90 degrees?
The tangent method is defined for an open interval strictly between 0° and 90°. At 0° the sight is horizontal and the rise is zero; at 90° the tangent is undefined.
Does the result include my eye height?
Add your eye height in the same unit as distance to get height from the ground.
What units should I use for distance and height?
Any consistent linear unit: metres, feet, yards, and so on. The calculator does not convert units.
What does the tree height calculator cost?
The browser tool is free and runs locally.
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/bio/tree-height \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"distance":50,"angle_deg":30}'const res = await fetch("https://api.kit.forhosting.com/bio/tree-height", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"distance": 50,
"angle_deg": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/tree-height",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"distance": 50,
"angle_deg": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/tree-height", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"distance":50,"angle_deg":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"distance":50,"angle_deg":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/tree-height", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"distance": 50,
"angle_deg": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.tree_height",
"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
The free browser tool and the API share one pure function, so a lab worksheet and a batch inventory script never silently disagree.
How distance and elevation angle fix tree height
Adding the observer's eye height, or the height of a staff-mounted clinometer, then yields total tree height from the ground: H equals observer_height plus distance times tan(θ).
What you send and what you get back
An angle of zero is a flat sight with zero rise; an angle of ninety degrees places the observer at the foot of a vertical line where the tangent is undefined. Wire the free browser tool for a field-day sanity check, then call the identical contract from scripts when you need bulk inventory without reimplementing the open-interval gate in every language. Provide two required finite numbers and one optional offset. distance (aliases d, dist, horizontal_distance, ground_distance) is the strictly positive horizontal standoff from observer to trunk, in any consistent linear unit such as metres, feet, or yards. angle_deg (aliases angle, elevation, elevation_angle, theta) is the elevation angle in degrees strictly between zero and ninety exclusive. observer_height (aliases eye_height, eye, instrument_height, hi) is the optional height of the eye or clinometer above the ground in the same unit; it defaults to zero so school problems that ignore eye height still run on this contract, and it must be finite and not negative. Missing required fields, non-numeric strings, NaN, and Infinity are rejected with invalid_input and are not charged. After parsing, the service checks that distance is greater than zero, that observer_height is at least zero, and that angle_deg lies in the open interval (0, 90). On success the JSON response echoes the normalized distance, angle_deg, and observer_height, returns angle_rad as the converted elevation in radians, returns tan_angle as the tangent used in the product, returns height_above_eye as the opposite side, and returns height as the total tree height observer_height plus that rise. formula and method document the identity for logs and teaching UIs. Example checks: distance fifty and angle thirty degrees with observer height zero yield roughly twenty-eight point eight seven height units; distance twenty and angle forty-five degrees with observer height one point six yield twenty-one point six; angle zero or ninety fails with an error message that names angle_deg.
Where a tree height calculator earns its keep
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Homework and exam checks
Compute tree height from a taped standoff and an elevation angle, and reject 0° or 90° readings with a clear invalid_input error that names angle_deg.