Concrete & Masonry · Material Takeoff

Rebar Calculator

Answering “how much rebar do I need” three ways — bar count, total linear feet and weight. This rebar calculator is a rebar take off calculator for slabs, footings, columns and beams: a concrete slab rebar calculator with bar sizes #3–#11, a rebar weight calculator, a rebar spacing calculator with lap splices, and a rebar cost calculator — all computed instantly, 100% in your browser.

Structural reinforcement must be designed by a licensed professional engineer. This tool estimates material quantities only — it does not design rebar, and it is not a substitute for structural drawings or engineering judgment.

Scope note: this is the dedicated rebar takeoff tool (bar sizes, weight table, laps, pieces, cost). Our concrete-calculator plans concrete volume and shows only a basic two-way grid length helper — it has no bar sizes, no weight table and no lap or cost math.

1 · Rebar Quantity — Slab, Footing, Column & Beam

A rebar quantity calculator and concrete rebar calculator for the four common elements: enter dimensions and spacing to get bar counts, total linear feet, weight and pieces. Bar counts use ceil(span ÷ spacing) + 1 so both perimeter bars are included; bar length deducts concrete cover at each end.

Slab — two-way grid

How many rebar for a slab, answered three ways: count, length and weight. Default: the 24 × 20 ft example from the FAQ.

Takeoff note: bar size and spacing come from your structural drawings — this footing rebar calculator, column rebar calculator and beam rebar calculator count material; they do not select reinforcement. Lap/overlap length is extra: use Mode 3.

2 · Rebar Weight Estimator

Look up any bar’s rebar weight per foot from the ASTM A615 table, then multiply by your length. Rebar weight per linear foot is the bridge between a bar count and the tonnage on the delivery ticket.

Rebar size chart — diameter, area & weight (ASTM A615)

Nominal dimensions per ASTM A615 Table 1. This rebar weight chart and rebar diameter chart cover the sizes this tool estimates (#3–#11).

BarDiameter (in)Diameter (mm)Area (in²)Weight (lb/ft)Weight (kg/m)
#30.3759.50.110.3760.560
#40.50012.70.200.6680.994
#50.62515.90.311.0431.552
#60.75019.00.441.5022.235
#70.87522.20.602.0443.042
#81.00025.40.792.6703.973
#91.12828.71.003.4005.060
#101.27032.31.274.3036.404
#111.41035.81.565.3137.907

3 · Grid & Spacing Solver

Enter the slab area and target spacing: bars per direction, steel area per foot of slab, and the rebar lap splice length — the 40×-diameter field rule of thumb (minimum 12 in), clearly labeled as an estimating starting point.

Estimating rule, not a design value: the rebar overlap length from a ×-diameter rule never replaces the development and lap lengths on your structural drawings (ACI 318 accounts for concrete strength, cover, coating and bar position).

4 · Cost Estimator

Price rebar two ways — by weight ($/lb) or by the piece. Both are labeled estimates: edit the rates for your supplier.

By weight

By the piece

This rebar cost calculator / rebar estimator reports material cost only — no delivery, cutting, bending, tying labor or waste factor. Add your own waste percentage on top.

Rebar FAQ

Worked answers, every number computed by the engine from the 24 × 20 ft slab example above.

How much rebar do I need for a 24x20 ft concrete slab?

For a 24 × 20 ft slab with #5 rebar at 12 in spacing (3 in cover), this rebar quantity calculator gives 46 bars — 21 running the 24 ft direction and 25 running the 20 ft direction — for 981 linear feet total. By hand: bars across a width = ceil(width in inches ÷ spacing) + 1, including both perimeter bars.

How much does that slab rebar weigh?

981 linear feet of #5 rebar × 1.043 lb per foot = 1,023.2 lb, about 0.51 tons. Use the rebar weight calculator tab above for any bar size and any length.

How much does #5 rebar weigh per foot?

The #5 rebar weight per foot is 1.043 lb (0.625 in diameter, 0.31 in² cross-section) per the ASTM A615 rebar weight chart. For comparison, the #4 rebar weight per foot is 0.668 lb — see the full rebar size chart in the weight tab.

What is the diameter of #5 rebar?

#5 rebar is 0.625 in (5/8 in) in diameter. Bar numbers equal eighths of an inch of nominal diameter for sizes #3 through #8 (for example #4 = 4/8 = 1/2 in). Sizes #9 and larger use the ASTM table values: #9 = 1.128 in, #10 = 1.270 in, #11 = 1.410 in — see the rebar diameter chart in the weight tab.

How many pieces of rebar in a slab?

Divide total linear feet by the stock stick length and round up — that is how this rebar pieces calculator works. For the 24 × 20 ft example: 981 ÷ 20 ft = 50 sticks of 20-ft rebar. Common US stock lengths are 20, 40 and 60 ft.

What does the rebar cost?

Two ways to price it, both labeled estimates rather than quotes. By the piece: 50 sticks × $8.50 = $425.00. By weight: 1,023.2 lb × $0.55 per lb = $562.75. Edit the rebar price per foot or per piece in the cost tab for your supplier.

What is the lap splice length for #5 rebar?

The field rule of thumb is 40 bar diameters: 40 × 0.625 in = 25 in (2 ft 1 in) for #5. Never lap less than 12 in, and always confirm the actual lap against your structural drawings — ACI 318 development lengths depend on concrete strength, cover, coating and bar position, so this rebar lap splice length is an estimating starting point, not a design value.

How much rebar for a 100 ft footing?

A 100 ft footing with 4 runs of #4 and #4 ties at 12 in (16 × 8 in section): 400 linear feet longitudinal + 101 ties (2.0 ft each) = 602 linear feet total, weighing 402.1 lb. The rebar overlap length adds extra — count one 40-diameter lap at every stock-length joint.

How much rebar for a 10 ft column?

A 10 ft, 12 × 12 in column with four #6 verticals and #4 ties at 12 in: 40 linear feet of vertical bar + 11 ties (3.0 ft each) = 73 linear feet, 82.1 lb total. Vertical steel size and tie spacing come from the structural design — this column rebar calculator only takes off quantities.

How much rebar for a 20 ft beam?

A 20 ft, 12 × 18 in beam with 2 top + 2 bottom #6 bars and #4 stirrups at 8 in: 80 linear feet longitudinal + 31 stirrups (4.0 ft each) = 204 linear feet, 203.0 lb. This beam rebar calculator reports stirrup count, length and weight separately.

How do I calculate rebar spacing and steel area?

Bars across a width = ceil(width in inches ÷ spacing in inches) + 1 — that is how to calculate rebar counts by hand. Steel area per foot of slab = bar area × 12 ÷ spacing: #5 at 12 in gives 0.31 in² per foot. The rebar spacing calculator tab above does both directions at once.

Can I design the rebar myself with this tool?

No. Structural reinforcement must be designed by a licensed professional engineer — bar size, spacing, laps, hooks and development lengths depend on loads, soil, concrete strength and code provisions this rebar estimator does not evaluate. Use this tool for material takeoffs and learning only.

Free tool by NRTechStudio

/*ENGINE-START*/ var RebarEngine = (function () { "use strict"; var BAR = {"3":{"area":0.11,"dia":0.375,"wt":0.376},"4":{"area":0.2,"dia":0.5,"wt":0.668},"5":{"area":0.31,"dia":0.625,"wt":1.043},"6":{"area":0.44,"dia":0.75,"wt":1.502},"7":{"area":0.6,"dia":0.875,"wt":2.044},"8":{"area":0.79,"dia":1.0,"wt":2.67},"9":{"area":1.0,"dia":1.128,"wt":3.4},"10":{"area":1.27,"dia":1.27,"wt":4.303},"11":{"area":1.56,"dia":1.41,"wt":5.313}}; var LAP_FACTOR = 40; var MIN_LAP_IN = 12; var STOCK_LENGTHS = [20,40,60]; var COVER_SLAB = 3.0; var COVER_COL = 1.5; var KG_PER_LBFT = 1.4881639; function num(x) { var n = Number(x); return isFinite(n) ? n : 0; } function bar(n) { n = Math.round(num(n)); return BAR[n] || null; } function barsAcross(widthFt, spacingIn) { widthFt = num(widthFt); spacingIn = num(spacingIn); if (spacingIn <= 0 || widthFt <= 0) { return 0; } return Math.ceil(widthFt * 12 / spacingIn) + 1; } function barLenFt(spanFt, coverIn) { return Math.max(0, num(spanFt) - 2 * num(coverIn) / 12); } function tieLenFt(wIn, dIn, coverIn) { return Math.max(0, 2 * ((num(wIn) - 2 * num(coverIn)) + (num(dIn) - 2 * num(coverIn))) / 12); } function slab(L, W, spacing, size, cover) { var b = bar(size); L = num(L); W = num(W); spacing = num(spacing); cover = (cover === undefined || cover === null || cover === "") ? COVER_SLAB : num(cover); if (!b || L <= 0 || W <= 0 || spacing <= 0) { return null; } var nL = barsAcross(W, spacing), nW = barsAcross(L, spacing); var lenL = barLenFt(L, cover), lenW = barLenFt(W, cover); var totalLF = nL * lenL + nW * lenW; return { nL: nL, lenL: lenL, nW: nW, lenW: lenW, bars: nL + nW, totalLF: totalLF, totalLB: totalLF * b.wt, size: Math.round(num(size)) }; } function footing(len, runs, longSize, tieSize, tieSpacing, wIn, dIn, cover) { var bl = bar(longSize), bt = bar(tieSize); len = num(len); runs = Math.round(num(runs)); tieSpacing = num(tieSpacing); cover = (cover === undefined || cover === null || cover === "") ? COVER_SLAB : num(cover); if (!bl || !bt || len <= 0 || runs < 1 || tieSpacing <= 0) { return null; } var longLF = len * runs; var ties = Math.ceil(len * 12 / tieSpacing) + 1; var tieLen = tieLenFt(wIn, dIn, cover); var tieLF = ties * tieLen; return { longLF: longLF, ties: ties, tieLenFt: tieLen, tieLF: tieLF, totalLF: longLF + tieLF, lbLong: longLF * bl.wt, lbTie: tieLF * bt.wt, totalLB: longLF * bl.wt + tieLF * bt.wt }; } function column(h, nVert, vertSize, tieSize, tieSpacing, wIn, dIn, cover) { var bv = bar(vertSize), bt = bar(tieSize); h = num(h); nVert = Math.round(num(nVert)); tieSpacing = num(tieSpacing); cover = (cover === undefined || cover === null || cover === "") ? COVER_COL : num(cover); if (!bv || !bt || h <= 0 || nVert < 1 || tieSpacing <= 0) { return null; } var vertLF = h * nVert; var ties = Math.ceil(h * 12 / tieSpacing) + 1; var tieLen = tieLenFt(wIn, dIn, cover); var tieLF = ties * tieLen; return { vertLF: vertLF, ties: ties, tieLenFt: tieLen, tieLF: tieLF, totalLF: vertLF + tieLF, lbVert: vertLF * bv.wt, lbTie: tieLF * bt.wt, totalLB: vertLF * bv.wt + tieLF * bt.wt }; } function beam(len, nTop, nBot, longSize, stirSize, stirSpacing, wIn, dIn, cover) { var bl = bar(longSize), bs = bar(stirSize); len = num(len); stirSpacing = num(stirSpacing); nTop = Math.round(num(nTop)); nBot = Math.round(num(nBot)); cover = (cover === undefined || cover === null || cover === "") ? COVER_COL : num(cover); if (!bl || !bs || len <= 0 || stirSpacing <= 0) { return null; } var longLF = len * (nTop + nBot); var stirs = Math.ceil(len * 12 / stirSpacing) + 1; var stirLen = tieLenFt(wIn, dIn, cover); var stirLF = stirs * stirLen; return { longLF: longLF, stirs: stirs, stirLenFt: stirLen, stirLF: stirLF, totalLF: longLF + stirLF, lbLong: longLF * bl.wt, lbStir: stirLF * bs.wt, totalLB: longLF * bl.wt + stirLF * bs.wt }; } function weightLF(totalLF, size) { var b = bar(size); totalLF = num(totalLF); if (!b || totalLF < 0) { return null; } var lb = totalLF * b.wt; return { lb: lb, tons: lb / 2000 }; } function grid(L, W, spacing, size) { var b = bar(size); L = num(L); W = num(W); spacing = num(spacing); if (!b || L <= 0 || W <= 0 || spacing <= 0) { return null; } var nL = barsAcross(W, spacing), nW = barsAcross(L, spacing); return { nL: nL, nW: nW, bars: nL + nW, steelAreaPerFt: b.area * 12 / spacing }; } function lapLenIn(size, factor) { var b = bar(size); if (!b) { return null; } factor = (factor === undefined || factor === null || factor === "") ? LAP_FACTOR : num(factor); return Math.max(factor * b.dia, MIN_LAP_IN); } function lapsForRun(runFt, stockFt) { runFt = num(runFt); stockFt = num(stockFt); if (runFt <= 0 || stockFt <= 0) { return 0; } return Math.max(0, Math.ceil(runFt / stockFt) - 1); } function piecesForLF(totalLF, stockFt) { totalLF = num(totalLF); stockFt = num(stockFt); if (totalLF <= 0 || stockFt <= 0) { return 0; } return Math.ceil(totalLF / stockFt); } function costWeight(totalLB, pricePerLB) { totalLB = num(totalLB); pricePerLB = num(pricePerLB); if (totalLB < 0 || pricePerLB < 0) { return null; } return totalLB * pricePerLB; } function costPiece(pieces, pricePerPiece) { pieces = num(pieces); pricePerPiece = num(pricePerPiece); if (pieces < 0 || pricePerPiece < 0) { return null; } return pieces * pricePerPiece; } function kgPerM(size) { var b = bar(size); return b ? b.wt * KG_PER_LBFT : null; } function ftIn(inches) { inches = num(inches); var ft = Math.floor(inches / 12), rem = inches - ft * 12; var parts = []; if (ft) { parts.push(ft + " ft"); } var r = Math.round(rem * 10) / 10; if (r || !ft) { parts.push(r + " in"); } return parts.join(" "); } return { bar: bar, slab: slab, footing: footing, column: column, beam: beam, weightLF: weightLF, grid: grid, lapLenIn: lapLenIn, lapsForRun: lapsForRun, piecesForLF: piecesForLF, costWeight: costWeight, costPiece: costPiece, kgPerM: kgPerM, ftIn: ftIn, LAP_FACTOR: LAP_FACTOR, MIN_LAP_IN: MIN_LAP_IN, STOCK_LENGTHS: STOCK_LENGTHS }; })(); /*ENGINE-END*/