Estimate posts, rails, pickets, and concrete for your project.
2 Rails
3 Rails
4 Rails
Material Requirements
Total Posts Required0
Total Pickets Required0
Total Rails Required0
Concrete Bags (80lb)0
How to Estimate Fence Materials: A Complete Guide
Planning a DIY fence project requires precision. Ordering too little material leads to extra delivery fees and project delays, while ordering too much wastes money. Our fence calculator helps you determine exactly what you need for a standard wood privacy fence, decorative picket fence, or ranch-style rail fence.
Understanding the Components
Before you start digging, you need to understand the four primary components of most residential fences:
Posts: The vertical structural members anchored in the ground. Standard spacing is usually 6 or 8 feet.
Rails: The horizontal boards that connect the posts. Most 6-foot privacy fences require three rails (top, middle, and bottom).
Pickets: The vertical boards that provide the "face" of the fence. Their quantity depends on the width of the picket and the desired gap.
Concrete: Used to anchor posts. Generally, you need 1.5 to 2 bags of 80lb concrete per post hole.
Step-by-Step Calculation Logic
1. Measuring Your Perimeter
Walk your property line and measure the total linear footage. Subtract the width of any structures (like a house wall) that will serve as part of the boundary. For example, if you have a 50′ x 50′ backyard but one 50′ side is the back of your house, your total length is 150 feet.
2. Determining Post Count
The basic formula is: (Total Length / Post Spacing) + 1. However, you must add extra posts for every corner and every gate in your layout. Our calculator adds one extra post for each gate specified.
3. Calculating Pickets
To find the number of pickets, convert your total length to inches (Length x 12). Divide this by the sum of the picket width and the gap width.
Example: For a 100ft fence using 5.5″ pickets with no gap: (100 * 12) / 5.5 = 219 pickets.
Pro Tips for Fence Installation
Check Local Codes: Always check your local building codes and HOA rules for height restrictions (usually 6ft for backyards and 4ft for front yards).
Call Before You Dig: Dial 811 to have underground utility lines marked before you start post-hole digging.
Account for Waste: Always order 5-10% extra pickets to account for warped, split, or damaged boards.
Leveling: Use a string line and a post level to ensure your fence is straight and plumb.
Example Calculation
Suppose you are building a 100-foot fence with 8-foot post spacing, using 5.5-inch pickets (butt-jointed with no gap) and 3 rails per section:
Posts: 100 / 8 = 12.5. Round up to 13, then add 1 for the end = 14 posts.
Rails: (100 / 8) * 3 = 12.5 sections * 3 rails = 38 rails (round up to 39 or 40).
function calculateFence() {
var totalLength = parseFloat(document.getElementById("totalLength").value);
var postSpacing = parseFloat(document.getElementById("postSpacing").value);
var picketWidth = parseFloat(document.getElementById("picketWidth").value);
var picketGap = parseFloat(document.getElementById("picketGap").value);
var numRailsPerSec = parseInt(document.getElementById("numRails").value);
var numGates = parseInt(document.getElementById("numGates").value);
if (isNaN(totalLength) || totalLength <= 0) {
alert("Please enter a valid total length.");
return;
}
if (isNaN(postSpacing) || postSpacing <= 0) {
alert("Please enter a valid post spacing.");
return;
}
// 1. Calculate Posts
// Base sections
var sections = Math.ceil(totalLength / postSpacing);
// Posts = sections + 1 (for the end) + 1 for each gate (simplification for corner/gate logic)
var totalPosts = sections + 1 + numGates;
// 2. Calculate Pickets
// Length in inches / (picket width + gap)
var lengthInches = totalLength * 12;
var totalPickets = Math.ceil(lengthInches / (picketWidth + picketGap));
// 3. Calculate Rails
// Each section needs N rails. Note: Rails are often sold in lengths matching spacing.
var totalRails = Math.ceil(sections * numRailsPerSec);
// 4. Calculate Concrete
// Usually 2 bags per post for standard 6ft fence
var totalConcrete = totalPosts * 2;
// Display Results
document.getElementById("resPosts").innerText = totalPosts;
document.getElementById("resPickets").innerText = totalPickets;
document.getElementById("resRails").innerText = totalRails;
document.getElementById("resConcrete").innerText = totalConcrete;
document.getElementById("fenceResults").style.display = "block";
}