A Program For Soil Textural Classification

By Aris Gerakis* and Brian Baer



Enter sand and clay percent of your soil sample:

% Sand:
% Clay:

Alternatively you could enter the name of a comma delimited text file that contains a list of sample IDs, sand and clay contents (one sample per line). Lines with # or ! at the beginning will be treated as comment lines.

File to upload:

How do you want the output:
As a normal Web Page (HTML):
As comma delimited text (CSV):

For example an input file might look like:

# some dummy samples
# ID      sand  clay
Sample 1,   10,   20
Sample 2,   20,   40
Sample 3,   40,   20
123     ,   30,   65
XYZ ABC ,   90,   20


For complete documentation look in:

Gerakis, A., and B. Baer. 1999. A computer program for soil textural classification. Soil Science Society of America Journal 63:807-808.

Particle-size analysis often is used to evaluate soil texture. Once the particle-size fractions (sand, silt, and clay) are measured, a textural triangle such as the USDA triangle is used to classify the soil. Each point in the textural triangle represents a unique combination of sand and clay content. For a given textural class, all combinations of sand and clay content are bound by a polygon that bears the name of the class.

The algorithm presented here counts the number of times a vector extending from the test point and parallel to the positive Y axis crosses an edge of the polygon. If the count is even or zero, the test point is outside the polygon. If the count is odd, the point is inside the polygon. For example, the vector V extending from point A crosses one edge of the polygon "sandy loam," therefore point A is inside the polygon. The same vector crosses two edges of the polygon "sandy clay loam," therefore point A lies outside that polygon.

The original algorithm was by Galacticomm Technologies, Inc. We modified Galacticomm's algorithm for the soil texture class determination. We translated it from C to Perl (for the web version), to Fortran (for the Windows console version), and to Visual Basic (for the full-blown Windows version). We modified the algorithm to work with real number versus integer coordinates. We resolved the case of a point falling on the border between adjacent polygons. A point that falls on the border is assigned to all adjacent polygons. So point C is silty clay loam/clay loam and point B is loam/clay loam/sandy clay loam.

For batch processing of many samples, you may download the Windows 95 console application or the full-blown Windows 95 application. Or, you can compile the source code on any platform with a Fortran compiler. You may use this program for any purpose as long as you don't restrict anyone else's use of the program. Give credit where credit is due. E-mail us your comments at the address found at the top of this page.

Go to the Portuguese version of this page


Windows 95/98/NT console program
(a non-graphical program that allows you process a file with a number of samples)

Zipped Windows 95/98/NT console application and test file Download here
Zipped Fortran source code for console version Download here
Version using the Portuguese classification system Download here
Caveats for using the program outside the USA

Full-blown Windows 95 application
(smaller download file, graphical, slower running, spreadsheet columns can be pasted directly)

Zipped full-blown Windows 95 application Download here
Some users may need MSVBVM60.DLL to run the full-blown Windows version Download here
Some users may need the Bookman font to run the full-blown Windows version Download here
Hellenic version Download here
Version using the Austrian classification system Download here
Troubleshooting the full-blown windows application


Zipped Excel spreadsheet to plot the results on the USDA triangle Download here
Zipped Excel spreadsheet to plot the results on the triangle from Spain, by Guillermo del Pozo Download here
Obtain pkzip or pkunzip Download here

Return to Nowlin Chair Home Page