Home range density calculator
This home range density calculator estimates how many individual animals occur per unit of the total home-range area they occupy.
Run — free
Enter the number of individuals, the combined area used in your analysis, and its unit; the calculator applies density equals individuals divided by area. It reports the result in your chosen unit and also normalizes it to individuals per hectare and per square kilometre for easier comparison between studies. The calculation is deterministic and runs without network access. Use it for wildlife surveys, telemetry summaries, habitat planning, or classroom exercises. Browser calculations are free, while each successful API request costs $0.002 when you need the same calculation in a reproducible workflow.
What home range density represents
Home range density is a simple ratio: the number of individual animals represented in a study divided by the total home-range area assigned to those animals. If 24 animals occupy a combined 12 square kilometres, the calculated density is 2 individuals per square kilometre. The measure gives researchers, students, and land managers a compact way to compare the concentration of animals across sites or reporting periods. It is important to define the denominator before calculating. A total derived by summing every tracked animal's estimated home range is not necessarily the same as the union of all occupied polygons, because individual ranges may overlap. Either interpretation can be useful, but they answer different questions. A summed area describes individuals relative to accumulated range estimates, while a non-overlapping union describes individuals relative to the landscape footprint used by the group. This calculator does not inspect maps or remove overlap; it uses the total area you provide. Record the area method, estimator, season, and population criteria alongside the result so readers can interpret the density correctly. The response repeats the inputs, gives density in the selected area unit, and provides comparable values per hectare and per square kilometre. A zero count is allowed and returns zero density, but area must be greater than zero because division by an empty area has no finite ecological meaning.
How to enter area and interpret the converted results
Enter individuals as a non-negative whole number and total_home_range_area as a positive finite number. Select m2 for square metres, ha for hectares, km2 for square kilometres, acre for acres, or mi2 for square miles; if no unit is supplied, the calculator uses square kilometres. The primary density divides the count directly by the entered area, so its unit always matches the selection. The standardized fields convert the same denominator through exact or established area factors: one hectare is 10,000 square metres, one square kilometre is 1,000,000 square metres, one acre is 4,046.8564224 square metres, and one square mile is 2,589,988.110336 square metres. Conversion does not add biological precision. If a home-range estimate is uncertain, heavily rounded, seasonally biased, or based on only a few fixes, the density inherits that limitation even when the returned decimal has several digits. Keep enough digits for reproducibility, then round for presentation according to the uncertainty in the source data. Also keep the population count aligned with the area: do not combine an annual count with a breeding-season home-range footprint unless that mismatch is deliberate and disclosed. The calculator rejects fractional individual counts, negative counts, zero or negative areas, unsupported units, and non-finite numbers. These checks prevent common spreadsheet mistakes from silently producing plausible-looking but invalid ecological ratios.
Using density responsibly in wildlife analysis
The result is most useful when comparing observations produced with compatible methods. Researchers can summarize a telemetry cohort, compare seasonal concentrations, or create standardized table columns for several species and study areas. Conservation planners can use a clearly documented ratio as one input to discussions about habitat availability, monitoring effort, or potential crowding. Students can verify exercises involving animal counts and home-range totals, while developers can call the API to generate stable values for dashboards and data pipelines. However, this ratio is not automatically a population-density estimate for every animal in a landscape. Tagged individuals may not be a census, detection probability may vary, and home ranges can overlap or extend beyond a survey boundary. Territoriality, sex, age, season, habitat quality, and the home-range estimator can all change the denominator. Avoid using this result alone to infer carrying capacity, population viability, causal habitat preference, or management thresholds. When comparing studies, confirm that their counts refer to similar populations and that their areas use the same definition, such as summed kernels, minimum convex polygons, or unioned occupied habitat. Report the selected unit and area construction method with the number. Interactive use in the browser is free, and a successful API request costs $0.002; both paths run the same deterministic formula, so moving a checked calculation into automation does not change its mathematical meaning.
What you can do with it
Telemetry study summaries
Convert a tracked cohort and its documented total home-range area into a transparent density ratio for reports and tables.
Habitat comparison
Normalize compatible animal counts and occupied areas to individuals per hectare or square kilometre across sites.
Ecology teaching and data pipelines
Check classroom calculations or generate deterministic density fields for wildlife dashboards, scripts, and reproducible analyses.
FAQ
What formula does the home range density calculator use?
It uses density = individuals / total home-range area. The primary result uses your selected area unit, with additional values per hectare and per square kilometre.
Should overlapping home ranges be counted more than once?
That depends on the study question. You may enter summed individual ranges or the non-overlapping union, but document the choice because the two denominators describe different ecological quantities.
Is this the same as total population density?
Not necessarily. A tracked or observed cohort may not represent every animal in the landscape, and detection probability or sampling design can affect the count.
Which area units are supported?
The calculator accepts square metres (m2), hectares (ha), square kilometres (km2), acres, and square miles (mi2). The default is km2.
How much does the calculator cost?
It is free to use in the browser. Each successful API request costs $0.002; invalid input is rejected.
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/home-range-density \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"individuals":24,"total_home_range_area":12}'const res = await fetch("https://api.kit.forhosting.com/bio/home-range-density", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"individuals": 24,
"total_home_range_area": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/home-range-density",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"individuals": 24,
"total_home_range_area": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/home-range-density", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"individuals":24,"total_home_range_area":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"individuals":24,"total_home_range_area":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/home-range-density", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"individuals": 24,
"total_home_range_area": 12
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.home_range_density",
"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. |