Desired number of established plants per sq. meter
Weight of 1000 seeds (TGW)
Survival rate due to field conditions
Calculated Seed Rate:0 kg/ha
Rate in Imperial:0 lbs/acre
Seeds per Sq. Meter (sown):0 seeds
Total Seed Required:0 kg
How to Calculate Seed Rate Formula
Achieving the optimal plant population is the foundation of a high-yielding crop. Sowing too few seeds results in wasted land potential and increased weed pressure, while sowing too many leads to competition for resources, disease susceptibility, and higher input costs. This calculator uses the industry-standard agronomic formula to determine exactly how much seed (in kg/ha) you need based on your specific seed lot properties.
The Seed Rate Formula
To calculate the seed rate accurately, you must account for the weight of the seed and the losses expected during germination and emergence. The core formula used by agronomists is:
Note: If calculating manually, you often divide by 100 again to correct the percentage decimals depending on how you write the equation. Our calculator handles the unit conversions automatically (converting grams to kg and accounting for percentages).
Understanding the Variables
Target Plant Population (plants/m²): This is your goal. For winter wheat, this might be 275-350 plants/m². For spring barley, it might be 300-375 plants/m². Consult your local agronomy guides for the optimal density for your sowing date.
Thousand Grain Weight (TGW): The weight of 1,000 seeds in grams. This varies significantly between varieties and batches. A high TGW means heavier seeds, requiring a higher seed rate in kg/ha to achieve the same number of plants.
Germination (%): Found on the certified seed tag. This is the percentage of seeds that will sprout under ideal laboratory conditions.
Field Emergence (%): The percentage of germinated seeds that actually survive field conditions (soil temperature, moisture, pests, seedbed quality). This is typically lower than germination, often estimated between 80% (poor conditions) to 95% (ideal conditions).
Why "kg/ha" isn't enough
Farmers often sow at a standard weight (e.g., 180 kg/ha) regardless of the seed lot. However, if your seed batch has a large TGW (e.g., 55g) compared to a previous year (e.g., 45g), sowing at the same weight will result in 18% fewer seeds going into the ground. By calculating based on plant population numbers rather than weight, you ensure crop consistency year over year.
Example Calculation
Let's say you want to plant winter wheat with the following parameters:
Target: 300 plants/m²
TGW: 52 grams
Germination: 98%
Field Emergence: 85%
First, calculate the total Establishment %: 0.98 × 0.85 = 0.833 (83.3%).
Then apply the formula: (300 × 52) ÷ 83.3 = 15,600 ÷ 83.3 ≈ 187 kg/ha.
function calculateSeedRate() {
// Get input values
var density = parseFloat(document.getElementById('targetDensity').value);
var tgw = parseFloat(document.getElementById('tgw').value);
var germination = parseFloat(document.getElementById('germination').value);
var emergence = parseFloat(document.getElementById('emergence').value);
var area = parseFloat(document.getElementById('totalArea').value);
// Validation: Check for non-numeric or missing inputs
if (isNaN(density) || isNaN(tgw) || isNaN(germination) || isNaN(emergence)) {
alert("Please fill in all required fields (Density, TGW, Germination, Emergence) with valid numbers.");
return;
}
if (germination <= 0 || emergence 0) {
totalSeedKg = rateKgHa * area;
document.getElementById('totalSeedRow').style.display = 'flex';
document.getElementById('resTotalLoad').innerText = totalSeedKg.toLocaleString(undefined, {minimumFractionDigits: 1, maximumFractionDigits: 1}) + " kg";
} else {
document.getElementById('totalSeedRow').style.display = 'none';
}
// Display Results
document.getElementById('resRateKg').innerText = rateKgHa.toFixed(1) + " kg/ha";
document.getElementById('resRateLbs').innerText = rateLbsAcre.toFixed(1) + " lbs/acre";
document.getElementById('resSeedsM2').innerText = Math.round(seedsNeededPerM2) + " seeds/m²";
// Show result section
document.getElementById('result-section').style.display = 'block';
}