HVAC takeoff
Duct surface area, sheet weight and gauge
Enter a fitting’s dimensions and get its surface area, GI sheet weight, SMACNA gauge and a BOM schedule you can export. Six fittings — straight duct, reducer, elbow, dropper, collar and Y-piece — measured to either the commercial billing standard (mean perimeter × centreline length) or the true shop flat pattern. Metric or imperial.
Every formula, gauge band and constant it uses →
Loading the workspace…
What this is
A duct takeoff you can check by hand
DuctForge turns a fitting’s dimensions into the numbers a ductwork job is actually priced on: surface area in m² or ft², galvanised sheet weight in kg or lb, the SMACNA gauge that size calls for, and a bill of materials you can export as CSV or print as a quantity sheet.
It runs entirely in your browser. There is no account, nothing is uploaded, and a takeoff you start today is still on this device tomorrow. That also means it keeps working on a site with one bar of signal.
Every figure on screen shows its own arithmetic — the formula with your numbers substituted into it — so you can check any line against the calculator on your desk. That is the whole design: a quantity nobody can audit is a quantity nobody should invoice.
Two standards, kept apart
- Commercial billing
- Nominal mean perimeter × centreline length — BOQ / IS 655 / DW 144 practice. What a consultant, client or quantity surveyor accepts on a claim.
- Shop fabrication
- The true unfolded blank, with slant hypotenuses, heel arc expansion and gore development. What a sheet metal shop actually cuts.
The same duct is a different quantity under each. The standard you chose travels with every result, every exported row and every printed sheet.
Coverage
Nine fittings, rectangular and round
Straight duct
A plain rectangular run.
A = 2(W + H) × L
Reducer
Transition between two rectangular sizes.
A = (W₁ + H₁ + W₂ + H₂) × L
Elbow
Radiused bend through an angle.
A = 2(W + H) × [θπ/180 × (R + W/2)]
Dropper
Offset or swan neck.
A = 2(W + H) × √(L² + O²)
Collar
Branch takeoff with a flange lip.
A = 2(W + H) × (L + F)
Y-piece
Trouser splitting one duct into two.
A = A_B1 + A_B2, A_Bn = (W₁/2 + H + Wₙ + H) × θπ/180·(R + Wₙ/2)
Round duct
A plain round or spiral run.
A = πD × L
Round elbow
Gored bend in round duct.
A = πD × [θπ/180 × R]
Round reducer
Concentric cone between two diameters.
A = π(D₁ + D₂)/2 × L
Alongside the sheet it will count insulation area on the outer face, flange ends and corner pieces from the length your duct is supplied in, and hangers at your spacing. Group lines by zone — AHU, floor, area — and apply your own rate per kg or per m² to turn a quantity into a value.
Who it’s for
Estimators, surveyors and sheet metal shops
If you price ductwork you are doing this arithmetic already, usually in a spreadsheet where the formula is invisible, the measurement standard is implicit, and the gauge is a lookup somebody did once. This does the same job with the working shown and both standards named.
The drawings are there for the same reason. A reducer and a dropper are very different objects that look nearly identical as a row of numbers — seeing the fitting is how you catch that you picked the wrong one before the quantity reaches a tender.
Limits
What it does not do
- Gauge is by size only. Real SMACNA selection also depends on pressure class and reinforcement spacing, and round duct has its own lighter table that this app does not carry. Override the gauge on any line where your specification differs.
- Sheet counts are a nesting estimate. Gross area over one sheet, rounded up, per gauge. It cannot know how your shop nests.
- Transitions are concentric. Eccentric reducers and cones are not modelled, and the Y-piece excludes its crotch plate.
- It reads no drawings. Dimensions are typed. There is no DWG, DXF or PDF import, because inferring duct sizes from a drawing produces confident wrong quantities.