Fish stocking density calculator
Multiply pond size by the stocking rate you picked and get a count ready for the order: 1000 m² at 2 fish per m² means 2000 fish. Use area or volume, in the units you already work with. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Pond area
- 1,000
- Stocking density
- 2
- Basis
- area
- Pond size
- 1,000
- Fish count exact
- 2,000
- Fish count
- 2,000
Choosing how many fish to put in a pond is a density problem, not a guess. Aquaculture managers, backyard pond owners, and extension agents multiply pond size by a recommended stocking rate expressed as fish per unit area or fish per unit volume. This fish stocking density pond calculator accepts either surface area or water volume—exactly one—plus a positive stocking density in matching units, multiplies them, and returns both the exact product and a nearest-integer fish count ready for purchase lists and work orders. Units stay under your control: use square metres with fish per square metre, acres with fish per acre, cubic metres with fish per cubic metre, or any consistent pair.
What stocking density means and how fish count is computed
Stocking density is the recommended number of fish per unit of pond size. Surface rates are common for extensive and semi-intensive earthen ponds: for example fish per hectare, fish per acre, or fish per square metre when species, size class, aeration, and water quality allow a published guideline. Volume rates appear more often in intensive tanks, raceways, and recirculating systems, where biomass or headcount is limited by cubic metres of water, dissolved oxygen, and filtration load.
This calculator does not invent a biological rate for you; it applies the rate you already chose from extension tables, hatchery advice, or farm protocol. The core identity is simple: fish count equals pond size times stocking density. If the pond is one thousand square metres and the plan is two fish per square metre, the product is two thousand fish.
If the pond holds five hundred cubic metres and the plan is four fish per cubic metre, the product is two thousand fish as well. Density and size must use the same basis: never mix an area in hectares with a density stated per acre without converting first. The tool is unit-agnostic by design so you convert once offline, then multiply cleanly.
It does not model growth, mortality, carrying capacity over a season, or feed conversion; those planning layers sit above this arithmetic step.
Who relies on a pond stocking count
Farm management apps need a deterministic oracle so every client—mobile field form, desktop planner, or spreadsheet import—agrees on headcount for the same pond dimensions and protocol density. Hatcheries and co-ops batch-quote orders when customers supply pond area or volume and a shared stocking table. Education and vocational courses can auto-grade pond-stocking homework without standing up a full aquaculture model.
Failed validation does not consume balance. Always convert area and density units before calling if your source tables mix hectares and acres, and re-check density whenever species, fingerling size, or aeration regime changes.
What you can do with it
Backyard and ornamental ponds
Convert measured surface area and a hobby density guideline into an integer fish count for safe initial stocking without overloading filtration.
Aquaculture farm planning
Batch-compute headcount from pond area or tank volume and protocol stocking rates for purchase orders and season plans.
Extension tools and homework
Give students and advisors a deterministic size × density oracle that matches printed stocking tables unit for unit.
FAQ
What units does the calculator use?
Any consistent pair. The tool is unit-agnostic: if area is in acres, density must be fish per acre; if volume is in m³, density must be fish per m³. Convert mixed units before calling.
What if I send both area and volume?
A single density cannot apply to both bases at once; choose the basis that matches your stocking table.
How many fish do I stock in a 1000 m² pond at 2 fish per m²?
You stock 2000 fish. The calculator multiplies the pond area by the density you entered and also gives the nearest whole number, ready for a purchase list or a work order.
Should I use a stocking rate by area or by volume?
Area rates are the usual choice for earthen ponds, such as fish per hectare or per acre. Volume rates fit intensive tanks, raceways and recirculating systems, where water, oxygen and filtration set the limit.
Does the calculator recommend a stocking rate for my species?
No. It applies the rate you already chose from extension tables, hatchery advice or your farm protocol. Species, fish size, aeration and water quality decide that rate before you enter it.
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/fish-stocking-density \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"stocking_density":2,"pond_area":1000}'const res = await fetch("https://api.kit.forhosting.com/bio/fish-stocking-density", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"stocking_density": 2,
"pond_area": 1000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/fish-stocking-density",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"stocking_density": 2,
"pond_area": 1000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/fish-stocking-density", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"stocking_density":2,"pond_area":1000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"stocking_density":2,"pond_area":1000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/fish-stocking-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
{
"stocking_density": 2,
"pond_area": 1000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.fish_stocking_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. |
Technical notes
Invalid combinations—missing size, both area and volume, non-positive values—fail with invalid_input instead of inventing a stock number.
What stocking density means and how fish count is computed
The endpoint returns fish_count_exact as the full product (rounded only for stable floating-point display) and fish_count as the nearest integer for purchase and inventory.
Input contract, response shape, and error behaviour
Non-positive sizes or densities, missing density, empty strings, NaN, and Infinity are rejected with messages that name the field. Validation failures are not billed. POST a JSON body with stocking_density as a required finite positive number, and exactly one size field: pond_area or pond_volume, also finite and positive. Aliases are accepted—area, surface_area, pond_surface, surface for area; volume, water_volume, pond_capacity, capacity for volume; density, fish_density, stock_density, rate, fish_per_unit for density. If both area and volume are present the request fails with invalid_input, because a single density cannot mean fish per area and fish per volume at once. If neither size is present the request also fails. On success the body includes basis (area or volume), pond_size (the cleaned size used), stocking_density, fish_count_exact, fish_count as the nearest integer, formula restating the product for that basis, method fish_stocking_density, and a short message suitable for logs or UI captions. Example: pond_area one thousand and stocking_density two yields basis area, fish_count_exact two thousand, and fish_count two thousand. Example: pond_volume two hundred fifty and density one point five yields three hundred seventy-five fish exactly and as integer. Pair the result with your own species tables and water-quality limits; this endpoint only multiplies size by density and does not emit feed schedules, aeration design, or veterinary advice.
Where a fish stocking density API earns its keep
Keep requests small, pin fish_count and fish_count_exact in tests, and you get reproducible stocking totals for work orders, LMS plugins, and edge workers without hosting custom farm math infrastructure of your own.
Technical questions
How do I calculate how many fish to stock in a pond?
Multiply pond size by stocking density: fish_count = size × density. Send pond_area or pond_volume (exactly one) plus stocking_density in matching units. The API returns the exact product and a nearest-integer fish count.
Should I use pond area or pond volume?
Use pond_area when your guideline is fish per unit surface (e.g. per m², hectare, or acre). Use pond_volume when the guideline is fish per unit water volume (e.g. per m³). Provide only one size field.
What does the fish stocking density calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.