Please enter valid positive numbers in all fields.
Pure Live Seed (PLS) %:–
Required Seeding Rate (PLS):–
Final Bulk Seeding Rate:–
Total Seed Required:–
Optimizing Your Cover Crop Investment
Calculating the correct seeding rate is essential for maximizing the soil health benefits of cover crops while managing costs. Planting too little can result in poor weed suppression and erosion control, while planting too much wastes money on expensive seed.
How This Calculator Works
This tool utilizes the Pure Live Seed (PLS) calculation method, which adjusts your seeding rate based on the quality of the seed lot and the specific seed count of the crop species. The core formula used is:
Seeding Rate (lbs/acre) = (Target Plants per Sq Ft × 43,560) / (Seeds per lb × PLS %)
Understanding the Inputs
Target Density: The number of plants you want established per square foot. This varies by goal (e.g., erosion control requires higher density than nitrogen scavenging).
Seeds per Pound: Seed size varies drastically. Cereal Rye is ~18,000 seeds/lb, while Red Clover is ~275,000 seeds/lb. Always check your specific bag tag if available.
Germination & Purity: These percentages (found on the seed tag) determine the PLS. If germination is 80% and purity is 95%, only 76% of the bulk weight is viable seed.
Planting Method: Seeds drilled into the soil have better establishment rates. Broadcast seeding typically requires a 20-50% increase in seeding rate to compensate for poor seed-to-soil contact.
Common Cover Crop Reference Data
Cover Crop
Approx. Seeds/lb
Typical Seeding Rate (Drilled)
Cereal Rye
18,000
60-120 lbs/acre
Oats
13,000
80-120 lbs/acre
Hairy Vetch
16,000
15-25 lbs/acre
Crimson Clover
150,000
15-20 lbs/acre
Radish
35,000
6-10 lbs/acre
function calculateSeedingRate() {
// Get Inputs
var targetDensity = parseFloat(document.getElementById('targetDensity').value);
var seedsPerPound = parseFloat(document.getElementById('seedsPerPound').value);
var germinationRate = parseFloat(document.getElementById('germinationRate').value);
var purityRate = parseFloat(document.getElementById('purityRate').value);
var totalAcres = parseFloat(document.getElementById('totalAcres').value);
var plantingMethodFactor = parseFloat(document.getElementById('plantingMethod').value);
var errorMsg = document.getElementById('errorMsg');
var resultSection = document.getElementById('resultSection');
// Validation
if (isNaN(targetDensity) || isNaN(seedsPerPound) || isNaN(germinationRate) ||
isNaN(purityRate) || isNaN(totalAcres) || targetDensity <= 0 || seedsPerPound <= 0) {
errorMsg.style.display = 'block';
resultSection.style.display = 'none';
return;
}
errorMsg.style.display = 'none';
// Constants
var sqFtPerAcre = 43560;
// 1. Calculate Pure Live Seed (PLS) Decimal
// Formula: (Germination * Purity) / 10000 (since inputs are percentages)
var plsPercentage = (germinationRate * purityRate) / 100; // Result is percentage (e.g. 85.5)
var plsDecimal = plsPercentage / 100; // Result is decimal (e.g. 0.855)
// 2. Calculate Base Required Seeds per Acre
var seedsPerAcre = targetDensity * sqFtPerAcre;
// 3. Calculate PLS Pounds per Acre (if seed was 100% perfect)
var plsLbsPerAcre = seedsPerAcre / seedsPerPound;
// 4. Calculate Bulk Pounds per Acre (Adjusting for PLS)
// If PLS is low, we need MORE bulk weight to get the same number of live seeds
var bulkLbsPerAcre = plsLbsPerAcre / plsDecimal;
// 5. Adjust for Planting Method
var finalRatePerAcre = bulkLbsPerAcre * plantingMethodFactor;
// 6. Calculate Total Seed Needed
var totalSeedNeeded = finalRatePerAcre * totalAcres;
// Update UI
document.getElementById('resPLS').innerHTML = plsPercentage.toFixed(2) + '%';
// PLS Rate (Theoretical perfect seed rate)
document.getElementById('resRatePLS').innerHTML = (plsLbsPerAcre * plantingMethodFactor).toFixed(1) + ' lbs/acre';
// Final Bulk Rate (What user actually puts in the drill)
document.getElementById('resRateBulk').innerHTML = finalRatePerAcre.toFixed(1) + ' lbs/acre';
// Total Project Amount
document.getElementById('resTotalSeed').innerHTML = Math.ceil(totalSeedNeeded).toLocaleString() + ' lbs';
// Show results
resultSection.style.display = 'block';
}