To calculate cut and fill from contour lines by hand, you read existing and proposed elevations off the contours at regular points, find the cut or fill depth at each point, and turn those depths into volume. The grid method averages depths over squares. The cross-section method measures cut and fill areas on parallel sections and averages each pair of neighboring sections times the distance between them. Divide cubic feet by 27 for cubic yards.
Below, both methods are worked in full on the same example site so you can check every number, followed by the shrink and swell math and the faster way to do it from a PDF.
The example site
Example: a 75 ft × 75 ft building pad on a slope. The grading plan shows existing contours at a 1-ft interval running roughly east-west, with the ground falling to the south. The proposed pad is flat at elevation 101.0.
We lay a 25-ft grid over the pad: four rows of points (A at the north edge through D at the south edge) and four columns (1 at the west edge through 4 at the east edge). That's 16 grid points and 9 squares, each 25 × 25 = 625 SF.
To keep the example clean, the pad edges are treated as vertical. On a real plan you'd extend the grid past the pad to where the side slopes meet existing grade (the daylight line) so the slopes are counted too.
Reading elevations off the contours
At each grid point, find the two contours it falls between and interpolate. Grid point B2 sits between the 102 and 103 contours, 40% of the way from 102 toward 103, so its existing elevation is 102 + 0.4 = 102.4.
Existing elevations read at all 16 points:
| Col 1 | Col 2 | Col 3 | Col 4 | |
|---|---|---|---|---|
| Row A (north) | 104.0 | 104.4 | 104.8 | 105.2 |
| Row B | 102.0 | 102.4 | 102.8 | 103.2 |
| Row C | 100.0 | 100.4 | 100.8 | 101.2 |
| Row D (south) | 98.0 | 98.4 | 98.8 | 99.2 |
Cut and fill depth at each point
Depth = existing − proposed (101.0). Positive is cut, negative is fill.
| Col 1 | Col 2 | Col 3 | Col 4 | |
|---|---|---|---|---|
| Row A | +3.0 | +3.4 | +3.8 | +4.2 |
| Row B | +1.0 | +1.4 | +1.8 | +2.2 |
| Row C | −1.0 | −0.6 | −0.2 | +0.2 |
| Row D | −3.0 | −2.6 | −2.2 | −1.8 |
The north half is cut, the south half is fill, and the zero line (where proposed meets existing) runs between rows B and C, angling south toward the east.
Method 1: The grid method
All-cut and all-fill squares
When all four corners of a square are cut (or all fill), volume = square area × average of the four corner depths.
| Square | Corner depths | Average | Volume |
|---|---|---|---|
| A1-B2 | 3.0, 3.4, 1.0, 1.4 | 2.2 | 625 × 2.2 = 1,375 CF cut |
| A2-B3 | 3.4, 3.8, 1.4, 1.8 | 2.6 | 625 × 2.6 = 1,625 CF cut |
| A3-B4 | 3.8, 4.2, 1.8, 2.2 | 3.0 | 625 × 3.0 = 1,875 CF cut |
| C1-D2 | 1.0, 0.6, 3.0, 2.6 (fill) | 1.8 | 625 × 1.8 = 1,125 CF fill |
| C2-D3 | 0.6, 0.2, 2.6, 2.2 (fill) | 1.4 | 625 × 1.4 = 875 CF fill |
Transition squares (some corners cut, some fill)
Four squares straddle the zero line. If you just average the corners, cut and fill cancel inside the square and you lose both. Use the transition formula for a square with mixed corners:
- Cut = (A ÷ 4) × (ΣC)² ÷ (ΣC + ΣF)
- Fill = (A ÷ 4) × (ΣF)² ÷ (ΣC + ΣF)
where A is the square's area, ΣC is the sum of the cut depths and ΣF is the sum of the fill depths (as positive numbers). Here A ÷ 4 = 156.25.
| Square | ΣC | ΣF | Cut | Fill |
|---|---|---|---|---|
| B1-C2 | 1.0 + 1.4 = 2.4 | 1.0 + 0.6 = 1.6 | 156.25 × 5.76 ÷ 4.0 = 225.0 CF | 156.25 × 2.56 ÷ 4.0 = 100.0 CF |
| B2-C3 | 1.4 + 1.8 = 3.2 | 0.6 + 0.2 = 0.8 | 156.25 × 10.24 ÷ 4.0 = 400.0 CF | 156.25 × 0.64 ÷ 4.0 = 25.0 CF |
| B3-C4 | 1.8 + 2.2 + 0.2 = 4.2 | 0.2 | 156.25 × 17.64 ÷ 4.4 = 626.4 CF | 156.25 × 0.04 ÷ 4.4 = 1.4 CF |
| C3-D4 | 0.2 | 0.2 + 2.2 + 1.8 = 4.2 | 156.25 × 0.04 ÷ 4.4 = 1.4 CF | 156.25 × 17.64 ÷ 4.4 = 626.4 CF |
A quick check: in each transition square, cut minus fill should equal area × the plain average of the signed corner depths. For B1-C2: 225.0 − 100.0 = 125.0, and 625 × (1.0 + 1.4 − 1.0 − 0.6) ÷ 4 = 125.0. It checks.
Grid method totals
- Cut: 1,375 + 1,625 + 1,875 + 225.0 + 400.0 + 626.4 + 1.4 = 6,127.8 CF ÷ 27 = 227.0 CY
- Fill: 1,125 + 875 + 100.0 + 25.0 + 1.4 + 626.4 = 2,752.8 CF ÷ 27 = 102.0 CY
- Net: 6,127.8 − 2,752.8 = 3,375 CF ÷ 27 = 125.0 CY export
Shortcut for net volume only
If you only need the net, weight each point by how many squares share it: corners × 1, edge points × 2, interior points × 4.
- Corners: 3.0 + 4.2 − 3.0 − 1.8 = 2.4
- Edges: 3.4 + 3.8 − 2.6 − 2.2 + 1.0 − 1.0 + 2.2 + 0.2 = 4.8, × 2 = 9.6
- Interior: 1.4 + 1.8 − 0.6 − 0.2 = 2.4, × 4 = 9.6
- Net = (625 ÷ 4) × (2.4 + 9.6 + 9.6) = 156.25 × 21.6 = 3,375 CF = 125.0 CY
Same net, a fraction of the work. But it can't give you cut and fill separately, and those are what you price.
Method 2: Cross sections (average end area)
Now cut the same site with four north-south cross sections, one along each grid column, at stations 0+00 (column 1), 0+25, 0+50 and 0+75 (column 4).
Cut and fill area on each section
On each section, the existing ground falls 6 ft over the 75-ft length (2 ft every 25 ft), and the pad is flat at 101.0. The cut area is the triangle between existing ground and the pad north of the zero point. The fill area is the triangle south of it.
Section at column 1 (0+00): existing runs from 104.0 to 98.0. It crosses 101.0 at 37.5 ft from the north edge. - Cut = ½ × 37.5 × 3.0 = 56.25 SF - Fill = ½ × 37.5 × 3.0 = 56.25 SF
Section at column 2 (0+25): existing 104.4 to 98.4, falling 0.08 ft per ft. Zero point = 3.4 ÷ 0.08 = 42.5 ft. - Cut = ½ × 42.5 × 3.4 = 72.25 SF - Fill = ½ × 32.5 × 2.6 = 42.25 SF
Section at column 3 (0+50): zero point = 3.8 ÷ 0.08 = 47.5 ft. - Cut = ½ × 47.5 × 3.8 = 90.25 SF - Fill = ½ × 27.5 × 2.2 = 30.25 SF
Section at column 4 (0+75): zero point = 4.2 ÷ 0.08 = 52.5 ft. - Cut = ½ × 52.5 × 4.2 = 110.25 SF - Fill = ½ × 22.5 × 1.8 = 20.25 SF
Volumes between sections
Volume = (A₁ + A₂) ÷ 2 × L, with L = 25 ft between sections.
| Between | Cut | Fill |
|---|---|---|
| 0+00 and 0+25 | (56.25 + 72.25) ÷ 2 × 25 = 1,606.25 CF | (56.25 + 42.25) ÷ 2 × 25 = 1,231.25 CF |
| 0+25 and 0+50 | (72.25 + 90.25) ÷ 2 × 25 = 2,031.25 CF | (42.25 + 30.25) ÷ 2 × 25 = 906.25 CF |
| 0+50 and 0+75 | (90.25 + 110.25) ÷ 2 × 25 = 2,506.25 CF | (30.25 + 20.25) ÷ 2 × 25 = 631.25 CF |
| Total | 6,143.75 CF = 227.5 CY | 2,768.75 CF = 102.5 CY |
Net = 6,143.75 − 2,768.75 = 3,375 CF = 125.0 CY export, matching the grid.
How close are the two methods?
Because the example ground is a perfect plane, we can compute the exact answer with calculus: 227.1 CY cut and 102.1 CY fill. The grid method came in at 227.0 / 102.0 and the cross sections at 227.5 / 102.5. Average end area runs slightly high here because the section areas change non-linearly between stations.
On real ground the differences are bigger and come mostly from spacing, not the formula. Contours that bend between grid points, a swale that falls between two sections, or a wall that sits between stations all get smoothed over. The fix in both methods is the same: tighter spacing where the ground or design changes fast.
| Grid method | Cross sections | |
|---|---|---|
| Best for | Pads, parking lots, broad sites | Roads, channels, long linear work |
| Gives cut and fill separately | Yes (with transition formula) | Yes |
| Main error source | Grid spacing vs. contour detail | Section spacing, features between sections |
| Hand effort | Two elevations per point | Area of every section |
From bank yards to truck loads
Both methods give bank cubic yards. Before you price it:
Example (placeholder factors, use your geotech): - Fill needed: 102 CY compacted. At 10% shrink, it takes 102 ÷ 0.90 = 113 BCY of cut to make it. - Export in bank yards: 227 − 113 = 114 BCY. - Export in loose yards at 25% swell: 114 × 1.25 = 143 LCY. - At 12 LCY per truck: 143 ÷ 12 = 11.9, so 12 loads.
Notice the raw net said 125 CY of export, but because compacted fill needs more bank dirt than its own volume, the real export is 114 BCY, and the trucks haul 143 loose yards. Label every number with its unit (BCY, LCY or CCY). For more on this, see how to calculate cut and fill from a grading plan.
The faster way: trace the contours on the PDF
The hand methods above took 16 interpolated elevations, a transition formula, and four section drawings for a site smaller than most parking lots. A real grading plan has hundreds of contour crossings.
In Foreman AI's earthwork takeoff, you work from the same PDF grading plan:
- Calibrate the sheet in Takeoff Studio.
- Trace the existing contours, entering the first elevation. The tool auto-steps by the contour interval as you go to the next line. Or ask the AI to work the grading plan.
- Trace the proposed contours and drop spot grades for pads, floors and curbs.
- The tool builds both surfaces from everything you traced and differences them, returning cut CY, fill CY and net import/export. No hand interpolation at grid points.
- Check the color heat map and 3D view, then export the PDF cut/fill report or CSV.
Volumes come out as bank yards. Dig tools carry a swell factor for truck yards, and you apply shrink for compacted fill. The traced contours stay on the sheet as objects you can check against the plan, which is what you want if someone asks where the number came from. If you want to see what's happening at each step, read how AI cut and fill works.
Hand math is still worth knowing: it's how you sanity-check any software. Run a rough grid on the area with the most dirt and compare. Upload a plan set and try it free.
FAQ
How do you calculate cut and fill manually?
Lay a grid over the grading plan, read the existing and proposed elevation at each grid point by interpolating between contours, and find the depth (existing minus proposed). Multiply each square's area by its average corner depth, use the transition formula for squares with both cut and fill, add them up, and divide cubic feet by 27.
What is the average end area method?
It's the cross-section method: measure the cut and fill area on parallel cross sections, average each pair of neighboring sections, and multiply by the distance between them. It is the standard for roads and other linear work.
Which is more accurate, grid or cross-section?
Neither formula is inherently better. Accuracy depends on spacing compared to how fast the ground and design change. Use grids for broad areas like pads and lots, cross sections for long, narrow work like roads and channels.
How do you read elevations from contour lines?
Find the two contours a point sits between, measure its distance from each, and interpolate. A point 40% of the way from the 102 contour to the 103 contour is at 102.4.