
Soil, Forage & Water Testing Laboratory
About us
The Soil, Forage and Water Testing Lab at Auburn University serves the farming communities of Alabama through testing and analysis of a variety of agricultural materials, including soil, water, plant tissue, poultry litter, forages and feeds. This research testing laboratory also serves the citizens of Alabama by providing routine testing, commercial testing, and analysis of soil and tissue samples from lawns and gardens, as well as water from households, wells and other water resources.
We also offer online calculators for use in determining the required amounts of chemical fertilizer, lime and organic fertilizer for your field, lawn or garden.
Our lab is located in the ALFA Building on South Donahue Dr. on the Auburn University campus.
How to Take a Proper Soil Sample
Learn about correct soil sampling in the video below:
Analysis & Testing Services
New Testing & Analysis Forms Available!
Dear Auburn University soil/forage testing customers,
The online soil analysis and forage analysis applications that the lab is currently utilizing for customers will be updated to a new system beginning October 1, 2025. All current and new customers will need to create an account and log in to submit samples in the new portal. After October 1st, 2025, all samples will need to be logged into the system prior to submission.
Please make sure to download all previous laboratory reports prior to October 1, 2025, from BOTH the soil analysis login tab and the forage analysis login tab below.
For researchers and large batch customers (lawn services and farms) please contact the lab after October 1st to help with setting up new accounts.
Routine Soil Analysis
Soil samples are analyzed for pH, phosphorus, potassium, magnesium, and calcium. A soil test report detailing soil test values, ratings and, lime and fertilizer recommendations is sent to the customer by e-mail and/or regular mail within 3-7 days after the samples are received by the lab by e-mail and/or regular mail.
- Routine Soil Testing & Analysis Form
(primary soil testing form) - Soil Analysis Login
Forage & Feed Analysis
Forage and feed samples are routinely analyzed for percent moisture, crude protein, acid detergent fiber, neutral detergent fiber, nitrate-N, ash, pH, crude fat, lignin, total digestible nutrients (TDN), and elemental contents (Ca, K, Mg, P, Cu, Fe, Mn, Zn, etc.,) Relative forage quality (RFQ) will be provided for known common grass species when the analysis are done using near infrared reflectance (NIR). The turnaround time is 2-4 weeks. The report includes name and e-mail of the Regional Extension agent or specialist for Animal Science and Forages.
Plant Tissue Nutrient Analysis
Plant and leaf tissues are often analyzed by the lab to detect and diagnose various nutrient deficiencies during the growing season. For a more complete plant diagnostic regimen that includes diseases, insects and other maladies, samples can be sent directly to the AU Plant Diagnostic Lab.
Water Analysis
Water samples from irrigation systems, wells, and ponds are analyzed for NO3-N, calcium, potassium, pH, magnesium, phosphorus, copper, iron, manganese, zinc, boron, molybdenum, aluminum, cobalt, chromium, lead, sodium and soluble salts Limited interpretation of the test results will be provided.
*Note – The laboratory is not EPA certified for drinking water analysis.
Chicken Litter Analysis
Chicken litter can be analyzed by sending the samples to the lab. Please allow 2-4 weeks for sample turnaround.
Other Testing & Analysis
Speciality analyses (i.e., organic matter %) and research sample analyses can be requested. Please email a completed form (PDF) below to: soillab@auburn.edu.
Publications
Home Soil Testing: Taking a Sample
Every square foot of soil can be different. Soil acidity and nutrients vary across the surface of the soil and with the depth of the soil.
Home Soil Testing: Using The Soil Test Report
The Auburn University Soil Testing Laboratory report includes: your intended crop(s), the soil group your sample belongs to, soil pH, results/extractable nutrients, nutrient rating, lime and fertilizer recommendations, as well as comments specific to your crop. Be able to interpret your soil sample test results and recommendations with clear, detailed figures.
Collecting Forage Samples for Laboratory Analysis
With any type of forage sample, the goal is to collect a representative sample. The following provides some guidelines.
The Basis of Soil Testing in Alabama
Most soils in Alabama must be fertilized for optimum production. Unfertilized soils are naturally low in plant nutrients because the parent materials from which they were formed were low in phosphorus (P), and many were low or medium in potassium (K).
Nutrient Content & Composition of Poultry Litter
Poultry litter can be a nutritionally rich fertilizer for forages and row crops. But not all litter is created equal. Learn the benefits of litter and the factors that cause variations in nutrient content.
Nutrient Recommendations for Alabama Crops
The following document contains, data tables, interpretation of the Soil Test and recommendations by crop based on soil test rating (low, medium, high, etc.) for P and K.
Nutrient Removal by Alabama Crops
Nutrient removal should be an important consideration in overall soil fertility management for Alabama farmers. However, fertilizing based solely on nutrient removal could lead to nutrient deficiencies or result in overuse of some fertilizer nutrients. The behavior of each nutrient, soil properties, and crops to be grown must also be considered.
Calculators
Chemical Fertilizer Calculator
Disclaimer: While the information generated from this site is believed to be accurate, any actions taken based upon the results are the sole responsibility of the user.
This calculator computes ounce, pound or ton of a given fertilizer required per unit area based on one (match) fertilizer at a time. The three numbers prominently displayed on fertilizer labels are N-P-K that stand for percentages of nitrogen (N), phoshate (P2O5), and potash (K2O).
- Enter your fertilizer recommendation for N-P-K as provided from AU Soil Testing lab (usually in lbs/acre).
- Select a fertilizer from the dropdown menu.
- If your choice is not in the menu, select User Defined and enter your fertilizer grade.
- Select Your Application Rate (ton/A, lbs/A, lbs/1000 square feet, etc.) from the dropdown menu.
- If you know your exact area, select “lbs/any square feet” and enter your total area by clicking on “Type your square feet”.
- Select Match by clicking in the radio icon and then click Calculate.
- The Output will indicate the amount of fertilizer needed for the selected (Match) and the amount of deficit or surplus for the unmatched two.
- You can print a hardcopy by clicking on Print, or click on Reset to start over.
- You may choose a single nutrient source fertilizer to complete your deficit.
Lime Calculator
This Lime Calculator computes pounds of an agricultural limestone (aglime) required per unit area.
Here is how it works:
- Enter your recommendation (tons/A) in the space next to Lime Recommendation.
- Select your Application Rate from the menu or select “lbs/any square feet” and enter your area (in square feet) without units.
- Click on Calculate.
- The Output will indicate the amount of lime needed that is equal to your recommendation.
- Click on Print if you desire a hardcopy or Click on Reset to start over.
- Please consult your county agent for appropriate methods and practicality of applying lime for your specific condition.
Organic Fertilizer Calculator
This calculator computes pounds or tons of a given organic fertilizer required per unit area based on one nutrient of the material at a time. The recommendation rates of N-P-K values that stand for pounds per acre of nitrogen (N), phoshate (P2O5) and potash (K2O), and organic fertilizer analysis (lbs/ton)are needed to use the calculator.
Here is how it works:
- Enter your fertilizer recommendation for N-P-K as provided from AU Soil Testing lab in the space next to Recommendation Rates (lbs/acre).
- Locate your organic fertilizer in the organure dropdown menu and select.
- If your organic fertilizer is NOT in the list, select User Defined from the list and enter the Analysis values (lbs/ton).
- Select User Application Rate (ton/acre, lbs/acre, lbs/1000 sq ft, etc.) from the dropdown menu.
- If your area is different, select “lbs/any square feet” and enter your total area number (in square feet) by clicking on “Enter your square feet “.
- Click in the radio icon to select your Match fertilizer and then click Calculate.
- The Output will indicate the amount of organure fertilizer needed for the selected (Match) and the amount of deficit or surplus for the unmatched two in lbs/acre.
- You can print a hardcopy by clicking on Print or click on Reset to start over.
Contact Us
Soil, Forage, & Water Testing Laboratory
ALFA Building
961 S. Donahue Drive
Auburn University, AL 36849-5411
Email soillab@auburn.edu
Phone (334) 844-3958
Fax (334) 844-4001
Lime Calculator
Please fill in the fields below, then click on "Calculate"
Lime Recommendation | tons/acre | |
Lime Application Rate | lbs/square feet lbs/square yard lbs/1000 square feet lbs/100 square feet lbs/50 square feet lbs/any square feet | |
OUTPUT |
function l_lbsLimeCalc(form) { fertunitSelected = form.fertunit.selectedIndex; if (fertunitSelected == 5) { if (form.unseen.value != "") { if (l_isNumber(form.unseen.value) == false) { alert("Please use numeral only for square feet."); form.unseen.focus(); return false; } } } lime = form.lbsLime.value; if (l_isNumber(lime) == false) { alert("Please use numeral only for Lime Recommendation."); form.lbsLime.focus(); return false; } convert = l_unitConvert(form) * lime; if (form.fertunit.selectedIndex < 5) { outdata = "" + lime + " tons/acre aglime is equal to " + l_roundNumber(convert, 2) + " " + form.fertunit.options[form.fertunit.selectedIndex].value + ""; } if (form.fertunit.selectedIndex == 5) { outdata = "" + lime + " tons/acre Lime is equal to " + l_roundNumber(convert, 2) + " lbs/" + form.unseen.value + "sq ft" + ""; } document.getElementById("text1").innerHTML = outdata; } function l_unitConvert(form) { var convert = 1; fertunitSelected = form.fertunit.selectedIndex; if (fertunitSelected == 0) convert = 2000 / 43560; if (fertunitSelected == 1) convert = 2000 / 4840; if (fertunitSelected == 2) convert = ((2000 / 43560) * 1000); if (fertunitSelected == 3) convert = ((2000 / 43560) * 100); if (fertunitSelected == 4) convert = ((2000 / 43560) * 50); if (fertunitSelected == 5) convert = ((2000 / 43560) * form.unseen.value); return convert; } function l_roundNumber(num, dec) { var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); return result; } function l_anyunit(form) { fertunitSelected = form.fertunit.selectedIndex; var doc = document; var f = doc.getElementById('limecal'); var el = f.elements.unseen; if (fertunitSelected == 5) { // show hidden el.style.display = ""; } if (fertunitSelected != 5) { // hidden again el.style.display = "none"; } } function l_isNumber(form) { inputStr = form.toString(); for (var i = 0; i < inputStr.length; i++) { oneChar = inputStr.charAt(i); if ((oneChar "9" && oneChar != ".")) { return false; } } return true; } function PrintElem(elem) { var mywindow = window.open('', 'PRINT', 'height=400,width=600'); mywindow.document.write('
' + document.title + '
'); mywindow.document.write(document.getElementById(elem).innerHTML); mywindow.document.write(''); mywindow.document.close(); // necessary for IE >= 10 mywindow.focus(); // necessary for IE >= 10*/ mywindow.print(); mywindow.close(); return true; }Chemical Fertilizer Calculator
N | P2O5 | K2O | Reccommendation | |
Recommendation | lbs/acre | |||
Fertilizer (%): | NH4NO3.MgNo3.dolomite(27% N) Ammonium nitrate(34% N) Ammonium of sulfate(21% N) Anhydrous ammonia (82% N) DAP(18-46-0) MAP(10-50-0) Muriate of potash (60% K2O) Nitrate of soda(16% N) Nitrogen solution (28% N) Nitrogen solution (30% N) Nitrogen solution (32% N) Sulfate of potash(50%K2O) Sulfate of potash-mag(22%K2O) Tankage(Processed) TSP(46% P2O5) Urea(46% N) 0-10-30 0-20-20 0-23-30 0-26-26 4-16-4 5-10-15 5-20-20 6-12-12 6-24-24 9-23-30 10-10-10 10-20-20 10-34-10 12-12-12 12-24-24 13-13-13 15-0-15 15-15-15 15-30-15 17-17-17 18-2-4 19-19-19 20-10-10 20-20-20 28-3-3 User Defined | Your Application Rate | ||
Grade: | lbs/acre lbs/1000 sq ft lbs/100 sq ft oz/100 sq ft tons/acre lbs/customize sq ft | |||
Match: | ||||
Output |
Organic Fertilizer Calculator
N | P2O5 | K2O | Rec. Unit | |
Recommendation Rate: | lbs/acre | |||
Organure: | Beef fresh manure Dairy fresh manure Horse fresh manure Poultry (broiler litter) Poultry (caged layer) Poultry (Dead bird compost) Poultry (breeder hen and rooster) Sheep or goat fresh manure Swine fresh manure Blood meal (dried) Bone meal Compost (yard and garden) Cottonseed meal Cotton motes (ginning operation) Fish scraps (wet) Fish meal (dried) Hay dried clippings (legume) Hay dried clippings (grass) Municipal biosolids Septage (wet) Wood Ash (dry) User Defined | |||
Analysis (lbs/tons): | ||||
User Application Rate: | lbs/acre lbs/1000 sq ft lbs/100 sq ft lbs/sq ft tons/acre lbs/any square feet | |||
Match: | ||||
|
||||
Output |
function o_lbsOrganicCalc(form) { lbsN = form.lbsN.value; lbsP = form.lbsP.value; lbsK = form.lbsK.value; for (i = 0; i < form.match.length; i++) { if ((i == 0) && (form.match[i].checked) && (form.fertN.value == "0")) { document.getElementById("text3").innerHTML = ""; alert("This fertlizer does not contain N!"); } if ((i == 1) && (form.match[i].checked) && (form.fertP.value == "0")) { document.getElementById("text3").innerHTML = ""; alert("This fertlizer does not contain P!"); } if ((i == 2) && (form.match[i].checked) && (form.fertK.value == "0")) { document.getElementById("text3").innerHTML = ""; alert("This fertlizer does not contain K!"); } if (form.fertunit.selectedIndex < 5) { unit = form.fertunit.options[form.fertunit.selectedIndex].value; } if (form.fertunit.selectedIndex >= 5) { unit = "lbs/" + form.unseen.value + "sq ft"; } fertindex = (form.fert.selectedIndex) - 1; if ((i == 0) && (form.match[i].checked) && (form.fertN.value != "0")) { convert = o_unitConvert(lbsN, (form.fertN.value), form); npound = o_matchConvert(lbsN, (form.fertN.value), form); ppound = roundNumber(o_deficitConvert(convert, lbsP, (form.fertP.value), form), 2); kpound = roundNumber(o_deficitConvert(convert, lbsK, (form.fertK.value), form), 2); if (ppound > 0) { defineP = " with a deficit of "; colorP = ""; } if (ppound <= 0) { defineP = " with a surplus of "; colorP = ""; ppound = ppound * (-1); } if (kpound > 0) { defineK = " a deficit of "; colorK = ""; } if (kpound <= 0) { defineK = " a surplus of "; colorK = ""; kpound = kpound * (-1); } outdata = "
" + roundNumber(npound, 2) + " " + unit + " " + o_getname(fertindex) + " is needed to match N recommendation rate (" + + lbsN + " lbs/acre" + defineP + colorP + ppound + " " + unit + " P2O5 and" + defineK + colorK + kpound + " " + unit + " K2O.)"; document.getElementById("text3").innerHTML = outdata; } if ((i == 1) && (form.match[i].checked) && (form.fertP.value != "0")) { convert = o_unitConvert(lbsP, form.fertP.value, form); ppound = o_matchConvert(lbsP, form.fertP.value, form); npound = roundNumber(o_deficitConvert(convert, lbsN, (form.fertN.value), form), 2); kpound = roundNumber(o_deficitConvert(convert, lbsK, (form.fertK.value), form), 2); if (npound > 0) { defineN = " with a deficit of "; colorN = ""; } if (npound <= 0) { defineN = " with a surplus of "; colorN = ""; npound = npound * (-1); } if (kpound > 0) { defineK = " a deficit of "; colorK = ""; } if (kpound <= 0) { defineK = " a surplus of "; colorK = ""; kpound = kpound * (-1); } outdata = "
" + roundNumber(ppound, 2) + " " + unit + " " + o_getname(fertindex) + " is needed to match P2O5 " + "recommendation rate (" + lbsP + " lbs/acre) " + defineN + colorN + npound + " " + unit + " N and" + defineK + colorK + kpound + " " + unit + " K2O."; document.getElementById("text3").innerHTML = outdata; } if ((i == 2) && (form.match[i].checked) && (form.fertK.value != "0")) { convert = o_unitConvert(lbsK, form.fertK.value, form); kpound = o_matchConvert(lbsK, form.fertK.value, form);; npound = roundNumber(o_deficitConvert(convert, lbsN, (form.fertN.value), form), 2); ppound = roundNumber(o_deficitConvert(convert, lbsP, (form.fertP.value), form), 2); if (npound > 0) { defineN = " with a deficit of "; colorN = ""; } if (npound <= 0) { defineN = " with a surplus of "; colorN = ""; npound = npound * (-1); } if (ppound > 0) { defineP = " a deficit of "; colorP = ""; } if (ppound <= 0) { defineP = " with a surplus of "; colorP = ""; ppound = ppound * (-1); } outdata = "
" + roundNumber(kpound, 2) + " " + unit + " " + o_getname(fertindex) + " is needed to match K2O recommendation" + " rate (" + lbsK + " lbs/acre) " + defineN + colorN + npound + " " + unit + " N and" + defineP + colorP + ppound + " " + unit + " " + "P2O5."; document.getElementById("text3").innerHTML = outdata; } } } function o_matchConvert(labvalue, fertvalue, form) { var convert = 1; fertunitSelected = form.fertunit.selectedIndex; if (fertunitSelected == 0) convert = labvalue / (fertvalue / 2000); if (fertunitSelected == 1) convert = (labvalue / (fertvalue / 2000)) * (1000 / 43560); if (fertunitSelected == 2) convert = (labvalue / (fertvalue / 2000)) * (100 / 43560); if (fertunitSelected == 3) convert = (labvalue / (fertvalue / 2000)) * (1 / 43560); if (fertunitSelected == 4) convert = labvalue / (fertvalue); if (fertunitSelected == 5) convert = (labvalue / (fertvalue / 2000)) * (form.unseen.value / 43560); return convert; } function o_unitConvert(labvalue, fertvalue, form) { var convert = 1; convert = labvalue / (fertvalue / 2000); return convert; } function o_deficitConvert(convert, labvalue, fertvalue, form) { var deficit = 1; fertunitSelected = form.fertunit.selectedIndex; if (fertunitSelected == 0) deficit = (labvalue - convert * (fertvalue / 2000)); if (fertunitSelected == 1) deficit = (labvalue - convert * (fertvalue / 2000)) * (1000 / 43560); if (fertunitSelected == 2) deficit = (labvalue - convert * (fertvalue / 2000)) * (100 / 43560); if (fertunitSelected == 3) deficit = (labvalue - convert * (fertvalue / 2000)) * (1 / 43560); if (fertunitSelected == 4) deficit = ((labvalue - convert * fertvalue / 2000) * 2000) / 2000; if (fertunitSelected == 5) deficit = (labvalue - convert * (fertvalue / 2000)) * (form.unseen.value / 43560); return deficit; } function roundNumber(number, decimal_points) { var exponent = Math.pow(10, decimal_points); var num = Math.round((number * exponent)).toString(); var newnum = num.slice(0, -1 * decimal_points) + "." + num.slice(-1 * decimal_points); if (newnum.substring(0, 1) == ".") newnum = "0" + newnum; return newnum; } function o_gradeCalc(form) { fertSelected = form.fert.selectedIndex; fertvalue = form.fert.options[fertSelected].value; if (fertSelected == 22) { form.fertN.value = " "; form.fertP.value = " "; form.fertK.value = " "; } if (fertvalue != "") { if (fertvalue.substring(0, 1) == "0") { form.fertN.value = "0"; } else { form.fertN.value = fertvalue.substring(0, 3); } if (fertvalue.substring(4, 5) == "0") { form.fertP.value = "0"; } else { form.fertP.value = fertvalue.substring(4, 7); } if (fertvalue.substring(8, 9) == "0") { form.fertK.value = "0"; } else { form.fertK.value = fertvalue.substring(8); } } } function o_anyunit(form) { fertunitSelected = form.fertunit.selectedIndex; var doc = document; var f = doc.getElementById('organiccal'); var el = f.elements.unseen; if (fertunitSelected == 5) { // show hidden el.style.display = ""; } if (fertunitSelected != 5) { // hidden again el.style.display = "none"; } } function o_getname(listindex) { var fertname = new Array(22); fertname[0] = "Beef fresh manure"; fertname[1] = "Dairy fresh manure"; fertname[2] = "Horse fresh manure"; fertname[3] = "Poultry (broiler litter)"; fertname[4] = "Poultry (caged layer)"; fertname[5] = "Poultry (Dead bird compost)"; fertname[6] = "Poultry (breeder hen and rooster)"; fertname[7] = "Sheep or goat fresh manure"; fertname[8] = "Swine fresh manure"; fertname[9] = "Blood meal (dried)"; fertname[10] = "Bone meal"; fertname[11] = "Compost (yard and garden)"; fertname[12] = "Cottonseed meal"; fertname[13] = "Cotton motes (ginning operation)"; fertname[14] = "Fish scraps (wet)"; fertname[15] = "Fish meal (dried)"; fertname[16] = "Hay dried clippings (legume)"; fertname[17] = "Hay dried clippings (grass)"; fertname[18] = "Municipal biosolids"; fertname[19] = "Septage (wet)"; fertname[20] = "Wood Ash (dry)"; fertname[21] = "User Defined"; return (fertname[listindex]); }