Home & Decor · Backyard Planner

Bocce Court Size Calculator

Plan a regulation or backyard bocce court: official dimensions, a full bocce court materials list, bocce court cost estimates, timber takeoff, drainage, yard fit and DIY vs pro pricing — computed instantly, 100% in your browser.

Scope note: this tool plans bocce courts (crushed stone / decomposed granite / oyster-shell surface with timber borders, no net). For hard courts with a net, see our pickleball-court-lab.

1 · Court Dimensions

Pick a standard size or enter custom dimensions. The official size is 13 × 91 ft (USBF Open Rules: 86.92 × 13.12 ft); a 10x60 bocce court is the most common backyard bocce court size.

Court size

Reverse: fit a court into your space

Enter the space you have; we compute the largest court that fits, including buffers.

2 · Surface Material Estimator

Whether you're pricing a decomposed granite bocce court, a crushed oyster shell bocce court or a blend: volume in cubic yards from length × width × depth, with a compaction allowance.

3 · Bocce Court Border & Timber Takeoff

Pressure-treated 4×4 or 6×6 timbers around the perimeter, with stakes — and #4 rebar when you stack two layers.

4 · Bocce Court Drainage & Base Planner

Base depth, bedding, weed barrier and the 1–2% slope that keeps water moving off the court.

Build note: excavate 4–6 in (deeper for full base layering), lay geotextile, then compact the base in lifts. Slight dampness helps decomposed granite and fines bind; keep the finished surface just off level so rain sheets off instead of ponding.

5 · Court Orientation & Clearance

Total footprint with play buffers, setback check against your property line, and sun-smart orientation.

6 · Backyard Fit Checker

Enter your yard size — get a straight fits / doesn't-fit verdict with play buffers included, plus a scaled-down recommendation.

7 · Cost Estimator

Material takeoff priced with editable local rates, then your bocce court estimate: DIY vs professional-install totals.

Material prices (edit for your area)

 

Prices are editable US estimates — check your local landscape supplier. Delivery fees and tools (plate compactor rental) are not included.

Bocce Court Sizing FAQ

Quick answers, all computed from the official 13 × 91 ft court above.

What are the official bocce court dimensions?

An official bocce court is 13 ft wide by 91 ft long. The United States Bocce Federation Open Rules list 86.92 ft by 13.12 ft (28 m by 4 m); 13 x 91 ft is the commonly rounded official size used by builders.

How many square feet is a regulation bocce court?

A regulation 13 x 91 ft court covers 1,183 sq ft, with a 208 ft perimeter and a 91.92 ft diagonal you can use to square the bocce court layout.

How much bocce court surface material do I need?

For a 2-inch playing layer on a 13 x 91 ft court you need 7.30 cu yd compacted. Order 8.76 cu yd loose (20% compaction allowance), about 12 tons of a decomposed-granite and oyster-shell blend, finished with an oyster shell flour bocce top dressing.

How deep should the bocce court base be?

Use 4-6 inches of compacted Class II road base over the subgrade, then 2-3 inches of coarse decomposed-granite bedding, then 1.5-3 inches of playing surface. For a 91 x 13 ft court the road-base layer alone is 14.60 cu yd compacted (17.53 cu yd loose, about 26.3 tons), plus 1,301.3 sq ft of bocce court weed barrier.

What kind of timber border does a bocce court need?

The most common bocce court timbers are 4x4 or 6x6 pressure-treated lumber staked in place as the border; a club-grade option is two staggered layers of 6x6 timbers anchored with #4 rebar. A 91 x 13 ft court needs 20 pieces of 12-ft timber (22 with 10% waste) and 52 stakes spaced about 4 ft apart.

What bocce court slope works for drainage?

Grade the base at 1-2% (1.5% is the default here). Over a 91 ft court, a 1.5% slope is a 16.4-inch drop from the high end to the low end.

How much total backyard space does a bocce court take?

For a bocce ball court backyard project, plan 3 ft of side buffer and 5 ft of end buffer for throwing and retrieving balls. A 13 x 91 ft court then needs a 101 x 19 ft footprint, or 1,919 sq ft total.

Where do the foul lines go on a bocce court?

The USBF recommends one foul line 13 ft from each back wall, marked on both the surface and the side boards, plus a center line at mid-court. On shorter backyard courts, scale the foul line proportionally (court length x 13 / 91).

What is the typical bocce court cost?

For an official-size court, a diy bocce court build runs about $4,014 in materials (road base, bedding, surface blend, timbers, stakes, weed barrier, oyster-shell flour). This bocce court estimate uses the default prices; a professional install runs about $6,624 at 1.65x materials. Edit the prices in the cost tab for your area.

Is a bocce court the same as a pickleball court?

No. Bocce is played on a crushed-stone, decomposed-granite or oyster-shell court with timber borders and no net. Pickleball is a hard-court net sport covered by our pickleball-court-lab tool. This calculator is for bocce courts only.

How to build a bocce court, step by step?

Standard bocce court construction follows this sequence. 1) Draw up bocce court plans: choose your bocce ball court size - a 13x91 bocce court is official, while small bocce court dimensions like 8 x 48 ft suit tight yards - and mark the bocce court layout with 3 ft of side buffer and 5 ft of end buffer. 2) Excavate, lay the bocce court weed barrier, then build the base: 4-6 in of compacted road base graded to a 1-2% bocce court slope for drainage. 3) Set the bocce court border with bocce court timbers staked every 4 ft. 4) Spread the bocce court surface (decomposed granite or crushed oyster shell) and finish with oyster-shell flour. Price the full bocce court materials list in the tabs above - no pre-boxed bocce court kit needed.

Free tool by NRTechStudio

/*ENGINE-START*/ var BocceEngine = (function () { "use strict"; var YD3 = 27; function r1(x) { return Math.round(x * 10) / 10; } function r2(x) { return Math.round(x * 100) / 100; } function num(x) { return Number(x) || 0; } function area(L, W) { return num(L) * num(W); } function perim(L, W) { return 2 * (num(L) + num(W)); } function diag(L, W) { return Math.sqrt(num(L) * num(L) + num(W) * num(W)); } function aspect(L, W) { return W > 0 ? num(L) / num(W) : 0; } function foulLine(L, official) { L = num(L); if (official) { return 13; } return r1(L * 13 / 91); } function centerLine(L) { return r2(num(L) / 2); } function reverseFit(spaceL, spaceW, sideBuf, endBuf) { var maxL = num(spaceL) - 2 * num(endBuf); var maxW = num(spaceW) - 2 * num(sideBuf); return { maxL: r1(maxL), maxW: r1(maxW), ok: maxL > 0 && maxW > 0 }; } function recommendPreset(maxL, maxW) { var presets = [ { name: "Official 13 x 91 ft", L: 91, W: 13 }, { name: "Club 13 x 76 ft", L: 76, W: 13 }, { name: "Recreational 10 x 60 ft", L: 60, W: 10 }, { name: "Compact 8 x 48 ft", L: 48, W: 8 } ]; for (var i = 0; i < presets.length; i++) { if (presets[i].L <= maxL && presets[i].W <= maxW) { return presets[i]; } } return null; } function volYd3(sqft, depthIn) { return num(sqft) * num(depthIn) / 12 / YD3; } function surfacePlan(L, W, depthIn, compPct, density) { var sqft = area(L, W); var compact = volYd3(sqft, depthIn); var loose = compact * (1 + num(compPct) / 100); return { sqft: sqft, compactYd3: compact, looseYd3: loose, tons: loose * num(density) }; } function basePlan(L, W, baseIn, bedIn, compPct, densityBase, densityBed) { var sqft = area(L, W); var bCompact = volYd3(sqft, baseIn), dCompact = volYd3(sqft, bedIn); var k = 1 + num(compPct) / 100; return { sqft: sqft, baseCompactYd3: bCompact, baseLooseYd3: bCompact * k, baseTons: bCompact * k * num(densityBase), bedCompactYd3: dCompact, bedLooseYd3: dCompact * k, bedTons: dCompact * k * num(densityBed), weedBarrierSqft: sqft * 1.10 }; } function slopeDrop(L, slopePct) { var dropFt = num(L) * num(slopePct) / 100; return { dropFt: dropFt, dropIn: dropFt * 12 }; } function timberTakeoff(L, W, timberLen, layers, wastePct) { var p = perim(L, W); var perLayer = 2 * Math.ceil(num(L) / num(timberLen)) + 2 * Math.ceil(num(W) / num(timberLen)); var pieces = perLayer * Math.max(1, Math.round(num(layers))); var withWaste = Math.ceil(pieces * (1 + num(wastePct) / 100)); var stakes = Math.ceil(p / 4); var rebar = (num(layers) > 1) ? pieces : 0; return { perLayer: perLayer, pieces: pieces, withWaste: withWaste, stakes: stakes, rebar: rebar, linearFt: p * num(layers) }; } function footprint(L, W, sideBuf, endBuf) { var fL = num(L) + 2 * num(endBuf), fW = num(W) + 2 * num(sideBuf); return { L: fL, W: fW, sqft: fL * fW }; } function fitCheck(yardL, yardW, courtL, courtW, sideBuf, endBuf) { var fp = footprint(courtL, courtW, sideBuf, endBuf); var yA = num(yardL) * num(yardW); var fits = fp.L <= num(yardL) && fp.W <= num(yardW); var usage = yA > 0 ? (fp.sqft / yA) * 100 : 0; var scale = Math.min(num(yardL) / fp.L, num(yardW) / fp.W); var rec = null; if (!fits && scale > 0) { rec = { L: r1(num(courtL) * scale), W: r1(num(courtW) * scale) }; } return { fits: fits, usagePct: usage, fp: fp, scaled: rec }; } function costDIY(lines, proMult) { var total = 0, items = []; for (var i = 0; i < lines.length; i++) { var c = lines[i].qty * lines[i].price; total += c; items.push({ name: lines[i].name, qty: lines[i].qty, price: lines[i].price, cost: c }); } return { items: items, diy: total, pro: total * num(proMult) }; } return { area: area, perim: perim, diag: diag, aspect: aspect, foulLine: foulLine, centerLine: centerLine, reverseFit: reverseFit, recommendPreset: recommendPreset, volYd3: volYd3, surfacePlan: surfacePlan, basePlan: basePlan, slopeDrop: slopeDrop, timberTakeoff: timberTakeoff, footprint: footprint, fitCheck: fitCheck, costDIY: costDIY }; })(); /*ENGINE-END*/