Turn an HVAC duct sizing spreadsheet into a phone calculator
Quick answer
Equal friction sizing finds the round duct whose friction loss per meter equals your design rate: Darcy-Weisbach with a Colebrook or Altshul-Tsal friction factor, then Huebscher's 1.30 × (ab)^0.625 / (a + b)^0.25 for a rectangle. An AI can rewrite the sheet, Goal Seek included, as one HTML file you test and publish.
For your team only, publish it on a private link or behind a password, both with Pro.
Make your team's version
Convika's AI rewrites this calculator from what you write. You try it on your phone before you keep it, with no account.
On this page
- What equal friction sizing computes
- The formulas, with units and sources
- Goal Seek becomes a solver in the page
- Worked examples, checked against published ones
- The prompt for ChatGPT, Claude, or Gemini
- Test cases, SI and IP
- Where a sheet and its JavaScript drift apart
- Ways to put a duct calculator on the site team's phones
- Publish the calculator for your site team in 5 steps
- Frequently asked questions
- Sources
The duct sizing workbook has a friction chart pasted in, a Goal Seek someone has to remember to run, and a fitting table copied from a handbook years ago. The installer on site wants one answer: what size for this branch, round or 250 mm deep. This guide gives you the formulas a duct sizing sheet uses, with units, limits, and sources, the solver that replaces Goal Seek, worked examples checked against published ones, the prompt that turns the sheet into one HTML file, SI and IP test cases, and how to give the site team the link. Sources were read on November 6, 2026.
The formulas are standard, but your firm's friction rate, velocity limits, and fitting data are its own. Check the page's results against your own sheet and design standard before anyone sizes from it.
What equal friction sizing computes
Equal friction sizing picks one friction loss per length for the whole low-pressure system and sizes every section to it. For each section's airflow, the sheet finds the round diameter whose friction loss per meter (or per 100 ft) equals the design rate, rounds it up to a size you can buy, checks the velocity, and converts it to a rectangle if the ceiling needs one. The fittings then add their own losses.
The US Department of Veterans Affairs' HVAC Design Manual (revised March 1, 2024) sets this out for its own buildings: "Use equal friction method for sizing low-pressure ductwork," and "Both maximum air velocity and maximum static pressure drop shall be maintained when sizing ductwork." Its Table 3-3 gives the limits:
| Duct | Maximum air velocity | Maximum static pressure drop |
|---|---|---|
| Low pressure supply, return, relief, exhaust | 1,500 fpm [8 m/s] | 0.08 in. of water/100 ft [0.66 Pa/m] |
| Medium/high pressure supply | 2,500 fpm [13 m/s] | 0.20 in. of water/100 ft [1.64 Pa/m] |
| Transfer air duct | 750 fpm [4 m/s] | 0.04 in. of water/100 ft [0.33 Pa/m] |
The manual adds that "The above sizing criteria can be altered to suit the project location." The examples on this page use the low-pressure row; put your own rate and limit in the calculator as inputs, not constants.
The formulas, with units and sources
| Quantity | Formula | Units | Source |
|---|---|---|---|
| Friction loss, SI | Δp = (f × L / D) × ρ V² / 2 | Pa; L and D in m; ρ in kg/m³; V in m/s | ASHRAE Fundamentals, Duct Design, as reprinted by LBNL |
| Friction loss, IP | Δp = (12 f × L / D) × ρ (V / 1097)² | in. of water; L in ft; D in in.; ρ in lb/ft³; V in fpm | As above |
| Friction factor | Colebrook: 1/√f = −2 log₁₀(ε / (3.7 D) + 2.51 / (Re √f)) | f, ε/D and Re have no units | Colebrook (1939) |
| Friction factor | Altshul-Tsal: f′ = 0.11 (ε/D + 68/Re)^0.25; f = f′ if f′ ≥ 0.018, else 0.85 f′ + 0.0028 | IP: 12ε/D with ε in ft and D in in. | ASHRAE, as reprinted by LBNL; Tsal (1989) |
| Reynolds number | Re = V × D / ν | ν in m²/s | |
| Air pressure at elevation | p = 101,325 × (1 − 0.0065 H / 288.15)^5.25588 | Pa; H the elevation in m | U.S. Standard Atmosphere, 1976, eq. 33a |
| Air density | ρ = p / (287.05 × T) | kg/m³; T in K | Ideal gas, constants from the same |
| Air viscosity | μ = 1.458 × 10⁻⁶ × T^1.5 / (T + 110.4) | Pa·s; T in K | U.S. Standard Atmosphere, 1976, eq. 51 |
| Rectangle to round | De = 1.30 × (a b)^0.625 / (a + b)^0.25 | same unit as a and b | Huebscher (1948) |
| Fitting loss | Δp = C × ρ V² / 2 | Pa | ASHRAE; OSHA |
Friction loss in a straight duct
Air in a duct follows the Darcy-Weisbach equation, the same one used for water in a pipe. Lawrence Berkeley National Laboratory's paper on flexible ducts (LBNL-49012, HVAC&R Research) reprints it from the 2001 ASHRAE Fundamentals, which for flex duct "suggests the use of the Darcy friction loss equation (Equation 1) with the Altshul-Tsal equation of friction factor (Equation 2)". Autodesk's duct sizing uses the same pair for round, rectangular, and oval ducts. In SI, Δp = (f L / D) × ρ V² / 2; in IP, Δp = (12 f L / D) × ρ (V / 1097)², with D in inches. The 12 turns inches into feet, and 1097 turns fpm and lb/ft³ into inches of water. ASHRAE's current edition keeps duct design in Chapter 21, "Duct Design," of the 2025 Fundamentals; ASHRAE sells it, so this page quotes the readable reprints.
For a rectangular duct, size the round duct first and convert it with Huebscher's equivalent diameter below. Autodesk's documentation for its duct sizing does the same: "To size friction for the rectangular or oval duct, the calculations use the equivalent round duct diameter and its velocity."
The friction factor: Colebrook or Altshul-Tsal
- Colebrook (C. F. Colebrook, "Turbulent flow in pipes, with particular reference to the transition region between the smooth and rough pipe laws," Journal of the Institution of Civil Engineers, 1939) is implicit: f appears on both sides, so it needs iteration. Starting from a reasonable guess, a simple loop on x = 1/√f, x ← −2 log₁₀(ε / (3.7 D) + 2.51 x / Re), settles to a change under 10⁻¹² in 9 steps for this page's 28 in. example.
- Altshul-Tsal is explicit, which is why sheets like it. The LBNL paper warns that it "is not applicable to the high roughness region (on a Moody chart) where the friction factor becomes independent of the Reynolds Number". On galvanized duct at the flows on this page, it lands within −0.3% to +1.2% of Colebrook:
| Flow, round size | Re | Colebrook f | Altshul-Tsal f | Difference |
|---|---|---|---|---|
| 0.05 m³/s, 100 mm | 42,272 | 0.02434 | 0.02462 | +1.2% |
| 0.3 m³/s, 250 mm | 101,453 | 0.01969 | 0.01971 | +0.1% |
| 1.0 m³/s, 450 mm | 187,876 | 0.01725 | 0.01720 | −0.3% |
| 3.0 m³/s, 800 mm | 317,041 | 0.01542 | 0.01537 | −0.3% |
Air at 20 °C and sea level, ε = 0.09 mm. Pick the one your sheet uses, so the test cases match.
Roughness. The friction factor depends on ε, the duct's absolute roughness. A Farmingdale State College course example takes "medium smooth galvanized steel" as ε = 0.0036 in. (0.09 mm, 0.0003 ft). Flexible duct is far rougher: the LBNL paper reports ASHRAE's range for fully extended flex as 0.0035 to 0.015 ft (1.0 to 4.6 mm), says values across that range move the pressure drop by 30%, and found that compressing flex duct raises it much further. Put roughness in the file as a table by material.
Air density and viscosity at your temperature and elevation
A sheet built on "standard air" fixes ρ at 1.2 kg/m³ or 0.075 lb/ft³. OSHA's ventilation chapter defines standard air as "Dry air at 68° F (20° C), 29.92 in Hg (760 mm Hg)," with "a density of 0.075 lb/cu ft." For a site at elevation or air far from 20 °C, compute it:
- Pressure. The U.S. Standard Atmosphere, 1976 (NOAA, NASA, and the US Air Force) gives pressure through the lowest layer as its equation 33a, P = P_b × [T_b / (T_b + L_b (H − H_b))]^(g₀ M₀ / (R* L_b)), with P₀ = 101,325 Pa, T₀ = 288.15 K, and a lapse rate of −6.5 K/km. Written out: p = 101,325 × (1 − 0.0065 H / 288.15)^5.25588 Pa. The Standard's H is geopotential height, within 1 m of the elevation up to 2,500 m, so this page, its prompt, and its test cases take H as the elevation in meters.
- Density. ρ = p / (R T) for dry air, with R = R* / M₀ = 8,314.32 / 28.9644 = 287.05 J/(kg·K) and T in kelvin.
- Viscosity. Equation 51 of the same document: μ = β T^1.5 / (T + S), with β = 1.458 × 10⁻⁶ and S = 110.4 K. Kinematic viscosity is ν = μ / ρ.
| Air | Pressure | Density | Kinematic viscosity |
|---|---|---|---|
| 20 °C, sea level | 101.33 kPa | 1.204 kg/m³ (0.0752 lb/ft³) | 1.506 × 10⁻⁵ m²/s |
| 35 °C, sea level | 101.33 kPa | 1.146 kg/m³ | 1.645 × 10⁻⁵ m²/s |
| 20 °C, 1,609 m (one mile) | 83.43 kPa | 0.991 kg/m³ | 1.829 × 10⁻⁵ m²/s |
| 20 °C, 2,500 m | 74.68 kPa | 0.888 kg/m³ | 2.043 × 10⁻⁵ m²/s |
Thinner air loses less pressure for the same volume flow: a 500 mm duct carrying 1.0 m³/s loses 0.543 Pa/m at sea level and 0.460 Pa/m at 1,609 m, 15% less. The fan also moves less air by mass at altitude, which the heating and cooling side of your sheet may already correct for; keep that correction as it is.
Rectangular and flat oval ducts
Huebscher's equation (R. G. Huebscher, 1948) gives the round diameter with the same friction loss as an a × b rectangle carrying the same airflow: De = 1.30 × (a b)^0.625 / (a + b)^0.25. Engineering ToolBox works the example: a 300 mm × 500 mm duct "= 420 mm." The formula takes any unit, as long as a and b share it. Engineers Edge describes it as the relationship "used to determine size equivalency based on equal flow, resistance, and length."
- It isn't the hydraulic diameter. 2ab / (a + b) for the same duct is 375 mm. Mix the two up and the sheet and the page disagree.
- It isn't equal area. The rectangle is larger than its equivalent round, so its air moves slower: 0.5 m³/s is 3.98 m/s in a 400 mm round and 3.59 m/s in the 557 × 250 mm rectangle that matches it.
- Solving for a side is a second Goal Seek. For a fixed depth, the page finds the width whose De equals the round size; a 400 mm round at 250 mm depth needs 556.9 mm of width, or 450.9 mm at 300 mm.
- Flat oval uses De = 1.55 × A^0.625 / P^0.25, with A and P the duct's area and perimeter (Heyt and Diaz, per Engineering ToolBox). Applied to a rectangle, that form gives 1.55 / 2^0.25 = 1.3034 in place of 1.30, which is why the Farmingdale course's table lists a 22 × 30 in. duct at 28.1 in. where Huebscher gives 28.0.
Velocity limits
Size by friction, then check velocity: a section passes only if both hold. At the VA's low-pressure 0.66 Pa/m, a round duct for 4 m³/s runs at 7.73 m/s, under 8 m/s; at 5 m³/s, friction alone gives 883 mm and 8.16 m/s, so the velocity limit takes over and sets 892 mm. In IP at 0.08 in./100 ft, velocity passes 1,500 fpm between 6,000 cfm (1,394 fpm in 28.1 in.) and 10,000 cfm (1,578 fpm). Show the velocity in every result, with which limit decided the size.
Fittings: C times the velocity pressure
Each elbow, tee, transition, and damper adds a loss of Δp = C × p_v, with C the fitting's loss coefficient and p_v = ρ V² / 2 its velocity pressure (in IP, ρ × (V / 1097)², which for 0.075 lb/ft³ is the familiar (V / 4005)²). OSHA's ventilation chapter writes the same pattern for a hood: "Hood entry loss (He) is calculated according to the following equation: He = (K)(VP)," with K the loss factor and VP the velocity pressure in the duct.
The C values themselves come from a table: your firm's, SMACNA's, or ASHRAE's Duct Fitting Database, which "includes loss coefficient tables for more than 200 round, rectangular, and flat oval duct fittings." At 6 m/s and standard air, p_v = 21.67 Pa, so a fitting with C = 0.25 costs 5.42 Pa.
ASHRAE's bookstore pages carry its AI policy notice: "ASHRAE prohibits the entry of content from any ASHRAE publication or related ASHRAE intellectual property (IP) into any AI tool, including but not limited to ChatGPT. Additionally, creating derivative works of ASHRAE IP using AI is also prohibited without express written permission from ASHRAE." (Full policy.) Keep anything copied from an ASHRAE publication out of the prompt, fitting tables, roughness tables, and charts included. The prompt below holds only the formulas written out on this page, credited to their authors (Darcy and Weisbach, Colebrook, Altshul and Tsal, Huebscher, and the U.S. Standard Atmosphere), and no ASHRAE text or tables; whether ASHRAE data can go on a page other people open depends on ASHRAE's terms and your license.
Goal Seek becomes a solver in the page
The sheet's diameter usually comes from Goal Seek: set the friction cell to the design rate by changing the diameter cell. Microsoft's help says Goal Seek "works only with one variable input value," and it's a command you run: the cell keeps the number from the last run until someone runs it again. The Colebrook cell is often a circular reference with iterative calculation turned on, which Microsoft notes "can iterate indefinitely. However, you can control the maximum number of iterations and the amount of acceptable change."
In the page, both become loops that run on every input change:
- Diameter. Friction loss per meter falls as the diameter grows, so bisection always converges. Start between 20 mm and 5 m, halve the interval until it's under 0.01 mm, and stop at 100 steps if it ever doesn't. That's 19 halvings for every case on this page.
- Colebrook. Loop on x = 1/√f until the change is under 10⁻¹⁰, with a cap of 50 steps.
- The other side of a rectangle. The same bisection on Huebscher's equation.
Ask for the solver's tolerance and step count to be shown under the result, so anyone checking it sees how the number was found.
Worked examples, checked against published ones
A short Node.js script computed each case with the formulas above.
| Case | Result here | Published |
|---|---|---|
| 6,000 cfm, 28 in. round, 80 ft, ε 0.0036 in., standard air, Colebrook | 1,403 fpm, Re 336,618, f 0.01544, 0.065 in. of water (0.081 in./100 ft) | 1,400 fpm, Re 337,000, f 0.0155, 0.064 in. of water; 0.08 in./100 ft from the ASHRAE friction chart (Farmingdale State College) |
| Same duct, Altshul-Tsal | f 0.01541, 0.0649 in. of water | |
| 300 × 500 mm rectangle | De 420.0 mm | 420 mm (Engineering ToolBox) |
| 22 × 30 in. rectangle | De 28.0 in. (28.07 with the 1.55 form) | 28.1 in. (Farmingdale State College's table) |
| Velocity pressure at 1,400 fpm, 0.075 lb/ft³ | 0.1222 in. of water by ρ (V / 1097)² | (V / 4005)² = 0.1222 |
The course's Reynolds number uses its shortcut for standard air, Re = 8.6 × V × D with V in fpm and D in inches. The script works from ρ, μ, and SI units, which is why its figures differ in the third digit.
Sizing at the VA's low-pressure rate, galvanized steel (ε = 0.09 mm), 20 °C:
| Airflow | Exact round size | Size picked | Velocity | Friction in the size picked |
|---|---|---|---|---|
| 0.5 m³/s | 370.2 mm | 400 mm | 3.98 m/s | 0.452 Pa/m |
| 1.0 m³/s | 480.5 mm | 500 mm | 5.09 m/s | 0.543 Pa/m |
| 2.0 m³/s | 624.2 mm | 650 mm | 6.03 m/s | 0.541 Pa/m |
| 1.0 m³/s at 1,609 m | 464.6 mm | 500 mm | 5.09 m/s | 0.460 Pa/m |
| 400 cfm | 10.14 in. | 11 in. | 606 fpm | 0.054 in./100 ft |
| 1,000 cfm | 14.29 in. | 15 in. | 815 fpm | 0.063 in./100 ft |
| 2,000 cfm | 18.55 in. | 19 in. | 1,016 fpm | 0.071 in./100 ft |
| 4,000 cfm | 24.10 in. | 25 in. | 1,173 fpm | 0.067 in./100 ft |
The sizes picked are the next 50 mm or 1 in. step, for the example; put the sizes you actually stock in the file. Altshul-Tsal gives 369.8, 480.2, and 623.9 mm for the first three rows.
The prompt for ChatGPT, Claude, or Gemini
Two limits of a page on Convika shape the prompt. It runs the page's own scripts, inline or from an https:// address, but not eval or new Function, so a formula-parser library that turns text into code won't run: ask for plain functions. And its scripts' fetch and XHR requests reach only the page's own address on Free; Pro and MAX add the analytics tools Convika supports and up to 20 hosts you list for your own ad network. So the page can't read a live spreadsheet or a manufacturer's fitting data: the tables go into the file.
Paste the prompt with your own defaults, formulas, and tables. It builds three tabs (sizing, checking a given duct, and fittings), so the same page runs every test case below. Name every input with its unit: a factor of 12 between inches and feet, or 1,000 between L/s and m³/s, is the usual first mismatch.
Rewrite my duct sizing spreadsheet as one HTML file that works on a phone.
Three tabs that share the units and air inputs:
1. Size a duct: airflow and design friction rate -> round size and rectangle
2. Check a duct: airflow, a round diameter or a rectangle a × b, and a length
-> velocity, Re, f, friction per length and over the length
3. Fittings: a velocity (from tab 2, or typed in) and a list of fittings with C
-> velocity pressure and the loss of each
Shared inputs (name, unit, default):
- Units: SI or IP; the switch converts every input and result
- Air temperature: 20 °C; site elevation: 0 m
- Duct material: galvanized steel (roughness 0.09 mm), or a roughness typed in
Size tab inputs:
- Airflow: 1.0 m³/s (IP: cfm)
- Design friction rate: 0.66 Pa/m (IP: in. of water per 100 ft)
- Maximum velocity: 8 m/s (IP: fpm)
- Round sizes I stock: [list]
- Rectangle depth (optional): 250 mm
Formulas (keep them exactly as written):
- p = 101325 × (1 − 0.0065 × H / 288.15)^5.25588 Pa, with H the elevation in m;
ρ = p / (287.05 × T); μ = 1.458e-6 × T^1.5 / (T + 110.4); ν = μ / ρ; T in kelvin
- V = Q / (π D² / 4); Re = V × D / ν
- Colebrook: 1/√f = −2 log10(ε / (3.7 D) + 2.51 / (Re √f)); iterate on 1/√f
until the change is under 1e-10, at most 50 steps. Use Math.log10.
- Friction per meter = (f / D) × ρ × V² / 2
- Size tab:
- Friction D: bisection on D between 0.02 and 5 m until the interval is under
0.01 mm, at most 100 steps, so friction per meter equals the design rate.
This replaces my sheet's Goal Seek.
- Velocity D = √(4 × Q / (π × maximum velocity))
- Required D = the larger of the two. Say which limit decided.
- Pick the first stocked size at or above the required D; show its velocity
and friction per meter.
- If a depth is given: bisection on the width so that
1.30 × (a × b)^0.625 / (a + b)^0.25 equals the size picked; show the
rectangle's velocity, Q / (a × b).
- Check tab: for a rectangle, De = 1.30 × (a × b)^0.625 / (a + b)^0.25, and the
friction uses a round duct of diameter De carrying the same Q. Also show Q / (a × b).
- Fittings tab: velocity pressure = ρ × V² / 2; loss = C × velocity pressure for
each fitting, and the total.
Tables (write them into the file as constants):
- Roughness, mm: galvanized steel 0.09; [add yours]
- Fitting coefficients: leave the table empty; I'll fill it in.
Rules:
- Plain JavaScript functions inside the file. No eval, no new Function, no formula
parser library, no fetch or other network requests.
- Refuse a blank input with a message, instead of computing with 0. Airflow,
friction rate, maximum velocity, diameter, rectangle sides, length, and velocity
must be above zero; roughness and C may be 0; elevation and temperature may be 0
or below. The rectangle depth is the one field that may be left blank.
- Under each result, show ρ, ν, V, Re, f, and friction per length; on the size tab,
also the friction D, the velocity D, the solver's step count, and which limit decided.
- Label every input with its unit; use inputmode="decimal" on number fields.
- Show "v1, checked against [sheet name] on [date]" at the bottom of the page.
- Add a "Run test cases" button that runs the cases below on their tabs and shows
pass or fail for each, to 0.1 mm, 0.01 in., 0.001 in. of water, or 0.01 Pa.
Test cases:
[paste the test table]
If your sheet uses Altshul-Tsal, replace the Colebrook line with: "f′ = 0.11 × (ε / D + 68 / Re)^0.25; f = f′ if f′ ≥ 0.018, otherwise f = 0.85 × f′ + 0.0028."
Test cases, SI and IP
Run these in the sheet and in the page. Each row names the tab it runs on. Unless the row says otherwise: air at 20 °C (68 °F) and sea level, galvanized steel (ε = 0.09 mm), and Colebrook.
| # | Tab | Inputs | Expected |
|---|---|---|---|
| 1 | Size | 0.5 m³/s, 0.66 Pa/m, 8 m/s, sizes every 50 mm from 100 mm, depth 250 mm | Friction D 370.2 mm (Altshul-Tsal: 369.8 mm); velocity D 282.1 mm; friction decides; picks 400 mm at 3.98 m/s; rectangle 556.9 × 250 mm at 3.59 m/s |
| 2 | Size | 1.0 m³/s, 0.66 Pa/m, 8 m/s | Friction D 480.5 mm; velocity D 398.9 mm; friction decides |
| 3 | Size | 1.0 m³/s, 0.66 Pa/m, 8 m/s, elevation 1,609 m | ρ 0.991 kg/m³; friction D 464.6 mm |
| 4 | Size | 5.0 m³/s, 0.66 Pa/m, 8 m/s | Friction D 883.1 mm, at 8.16 m/s; velocity D 892.1 mm; velocity decides |
| 5 | Size, IP | 1,000 cfm, 0.08 in. of water per 100 ft, 1,500 fpm, ε 0.0003 ft | Friction D 14.29 in.; velocity D 11.06 in.; friction decides |
| 6 | Check, IP | 6,000 cfm, 28 in. round, 80 ft, ε 0.0036 in. | 1,403 fpm; f 0.01544; 0.065 in. of water |
| 7 | Check | 0.5 m³/s, rectangle 300 × 500 mm, 10 m | De 420.0 mm; 3.33 m/s in the rectangle; 0.356 Pa/m; 3.56 Pa over 10 m |
| 8 | Fittings | Velocity typed in: 6 m/s; one fitting, C = 0.25 | Velocity pressure 21.67 Pa; loss 5.42 Pa |
Add your own at the edges: the smallest and largest airflow you size, a flow that lands exactly on a stocked size, a blank input, and the IP and SI versions of the same duct, which must agree after conversion. How to check an AI-made page before you send it covers the rest of the page.
Where a sheet and its JavaScript drift apart
- Logarithms. Excel's LOG with no base "is assumed to be 10." JavaScript's Math.log "returns the natural logarithm (base e)." A Colebrook line moved over as Math.log gives a friction factor about a fifth of the right one (0.0033 against 0.0155 in the 28 in. example). It must be Math.log10.
- Goal Seek's last run. A sheet's diameter cell holds the value from the last time someone ran Goal Seek. If the page and the sheet disagree, rerun Goal Seek before blaming the page.
- Units. in. of water per 100 ft against Pa/m; cfm against L/s against m³/s against m³/h; inches against feet in the IP Darcy formula. Ask the page to show every input converted to SI under the result while you test.
- Fixed density. A sheet built on 0.075 lb/ft³ won't match a page that computes air at 35 °C. For the test, set the page to 20 °C and sea level, or to the sheet's density.
- Rounding up. Excel's CEILING or MROUND and a lookup to the next stocked size must pick the same size as the page. Test with a flow whose exact size falls between two stocked sizes.
- Equivalent and hydraulic diameter. A sheet that converts with 2ab / (a + b) instead of Huebscher's equation treats a 300 × 500 mm duct as a 375 mm round instead of 420 mm, 11% apart.
Ways to put a duct calculator on the site team's phones
Each cell comes from the vendor's own page, read on November 6, 2026.
| Option | Whose formulas and tables | Can the people who use it see or change your formulas? | Where it runs | Updating it |
|---|---|---|---|---|
| The workbook in Excel on the phone | Yours | Yes: whoever has the file has the formulas | Excel for iOS runs no VBA macros (Microsoft's platform table) | Send the file again |
| ASHRAE Duct Fitting Database | ASHRAE's fitting coefficients | Not your formulas | Cloud access "by annual subscription"; a Lite app "FREE from the Apple App Store" for "select" fittings, "in both I-P and SI units" | ASHRAE's |
| ASHRAE Duct Size Calculator | ASHRAE TC 5.2 and the Air Distribution Institute's: "a quick reference tool for approximating duct sizes" | Not your formulas | Listed in ASHRAE's bookstore | ASHRAE's |
| Calcapp | Yours, rebuilt with Calcapp formulas that "use names instead of cell references" | They can't change them: "Nobody can mess up your formulas" | A Calcapp app, "installed on your phone or embedded in your website" | In Calcapp's designer |
| Appizy | Yours: you upload the Excel file | They can't see them: "Your formulas execute server-side" | Appizy's servers | "Upload a new version of your Excel file and republish" |
| An HTML file your AI writes, on Convika | Yours, rewritten as JavaScript | They can read them in the page source; only you can change them | The phone's browser, from a link | A new version at the same link |
ASHRAE's tools give you ASHRAE's data and method, not your sheet's. Appizy keeps the workbook as the engine on its servers; ask whether your Goal Seek or iterative calculation carries over before you convert. Calcapp has you rebuild the logic in its designer. The HTML route keeps your formulas and your tables, replaces Goal Seek with a solver that runs on every change, and costs nothing to try; the math travels with the page, so anyone who opens it can read it.
Publish the calculator for your site team in 5 steps
1. Put the file in your account
Sign up at app.convika.com with no credit card, click Upload an HTML file, drop the .html file the AI gave you (up to 2 MB), and click Create my preview. The box below works without an account, but its preview turns scripts off, so the solver won't run there. Click Keep this page — free, no card under it to move the file into an account, where the preview runs scripts.
2. Run the test cases on the preview
Open the preview on your own phone and run the SI and IP cases. Then use it the way the installer will: one thumb, gloves off, in a ceiling void. The airflow field should bring up the number pad, the result should show the round size, the rectangle, and the velocity without scrolling, and the units switch should convert, not reset. Send the AI any case that fails with both answers, and upload the corrected file as a new version.
3. Choose who can open it and publish
Click Publish page. Under Who can open this page?, pick one:
- Public: "Anyone with the link can open it. It may show up in search results and in Convika's gallery." Free, with the Convika bar. The first time, click Publish free.
- Private link (Pro): "Anyone with the link can open it, with no password or account. It stays out of search results and out of the gallery." A forwarded link opens it too: it keeps the page out of search results, not out of reach.
- Only people with the password (Pro): Convika's server checks the password before it sends the page. Read how a page password works.
A private link or a password opens an order for Pro monthly: free for 1 day with a card, then $12 a month. Pro also has 3 members in a workspace.
4. Send the link
Send the live address to the site team, or print its QR code for the site office wall. Each installer can add it to the home screen so it opens like an app. It opens from its link, so the phone needs a connection to load it; Convika doesn't make a page work offline.
5. Publish each new version at the same link
When the design rate, the stocked sizes, or the fitting table changes, have the AI change the file, run the test cases again, and upload it on the page's screen with Upload a new version. Click Publish v2 at the same link (with your number). Everyone with the link gets the new version, and the old one stays in the page's history. Keep one address per tool and the version number in the page. Updating a page without changing its link walks through it.
A new Free workspace keeps 1 live page at a time. A second tool, such as a voltage drop calculator for the electricians, is a different page: Light, an add-on to Free, keeps up to 5 live pages for $3 a month through Publish this page too, with Light, and Pro keeps 100. Each page has its own visitor stats.
Frequently asked questions
How do I size a duct in Excel?
Compute the friction loss per length from Darcy-Weisbach with a Colebrook or Altshul-Tsal friction factor, then use Goal Seek on the diameter until the friction equals your design rate, such as 0.66 Pa/m or 0.08 in./100 ft. Round up to a stocked size, check the velocity, and convert to a rectangle with Huebscher's equation.
What friction rate should I use for duct sizing?
Use your design standard's. The US VA's HVAC Design Manual, for example, sets 0.08 in. of water per 100 ft (0.66 Pa/m) and 1,500 fpm (8 m/s) for low-pressure ducts, 0.20 in./100 ft and 2,500 fpm for medium and high pressure, and adds that the criteria "can be altered to suit the project location."
How do I convert a round duct size to rectangular?
Use Huebscher's equation, De = 1.30 × (a b)^0.625 / (a + b)^0.25, and solve for the side you don't know. A 400 mm round at 250 mm depth needs a 557 mm wide rectangle. The rectangle has more area than the round, so its velocity is lower.
Can ChatGPT replace Goal Seek in my duct sizing sheet?
Yes. Ask for a bisection solver in plain JavaScript with a tolerance and a step cap, as in the prompt above. It runs on every input change, so the diameter is never left over from an old run. Check it against the sheet with the test cases before anyone uses it.
Can I use CIBSE data in the same calculator?
Yes, as long as the formulas match. CIBSE Guide C has a chapter on the "Flow of Fluids in Pipes and Ducts," which this page doesn't quote. Put CIBSE's roughness, design rates, and fitting factors into the file's tables in place of the ones here, and test against your CIBSE-based sheet.
Why doesn't my calculator match the ductulator or the friction chart?
A friction chart and a ductulator are read by eye and assume standard air and one roughness. Compare at 20 °C, sea level, and galvanized steel first. The 28 in. example on this page computes 0.081 in./100 ft where the chart reads 0.08.
Does altitude change the duct size?
Yes, a little. For the same volume flow, air at 1,609 m is 18% less dense, and the same duct loses about 15% less pressure; 1.0 m³/s at 0.66 Pa/m sizes to 464.6 mm there against 480.5 mm at sea level. Put temperature and elevation in the calculator as inputs.
Can I put ASHRAE's fitting tables in the calculator?
Not through an AI chat. ASHRAE's AI policy prohibits entering content from its publications "into any AI tool, including but not limited to ChatGPT," and "creating derivative works of ASHRAE IP using AI" without its written permission. Give the AI only the formulas; whether ASHRAE's tables can go into a page others open depends on ASHRAE's terms and your license.
Sources
- HVAC Design Manual, PG 18-10, revised March 1, 2024 (US Department of Veterans Affairs), read on November 6, 2026
- Compression Effects on Pressure Loss in Flexible HVAC Ducts, LBNL-49012 (Abushakra, Walker, Sherman, HVAC&R Research), read on November 6, 2026
- Table of contents, 2025 ASHRAE Handbook—Fundamentals (ASHRAE), read on November 6, 2026
- Duct Fitting Database and AI policy (ASHRAE bookstore), read on November 6, 2026
- ASHRAE Policy for Use of Artificial Intelligence, approved February 9, 2025 (ASHRAE), read on November 6, 2026
- About Duct Sizing Methods (Autodesk AutoCAD MEP help), read on November 6, 2026
- Turbulent flow in pipes (C. F. Colebrook, Journal of the Institution of Civil Engineers, 1939, DOI 10.1680/ijoti.1939.13150), read on November 6, 2026
- U.S. Standard Atmosphere, 1976 (NOAA, NASA, USAF; NASA Technical Reports Server), equations 33a and 51, read on November 6, 2026
- Equivalent diameter (Engineering ToolBox) and Convert rectangular ducts to round sizes (Engineers Edge), read on November 6, 2026
- HVAC Systems, Applied Fluid Mechanics notes (Farmingdale State College), read on November 6, 2026
- OSHA Technical Manual, Section III, Chapter 3, Ventilation Investigation (OSHA), read on November 6, 2026
- Guide C: Reference data (CIBSE), read on November 6, 2026
- Use Goal Seek, Change formula recalculation, iteration, or precision, and LOG function (Microsoft Support), read on November 6, 2026
- Math.log() (MDN Web Docs), read on November 6, 2026
- Differences between Office Scripts and VBA macros (Microsoft Learn, last updated April 11, 2023), read on November 6, 2026
- Calcapp and Appizy, Excel to App Converter, read on November 6, 2026
Next step
How to check that an AI-made calculator matches your Excel sheet
Run the same input sets through Excel and the AI's page, compare to a stated tolerance, and find the places where Excel and JavaScript round differently.
Related articles
- Turn a voltage drop spreadsheet into a calculator electricians open on a phoneThe voltage drop formulas with K and NEC Table 8 values, 8 checked test cases, the AI prompt, and how to put your sheet on your crew's phones as a link.
- Turn an Excel calculator into a web app your team opens on a phoneHave ChatGPT, Claude, or Gemini rewrite your sheet's formulas as one HTML file, test it against Excel, and share a link. Or keep the sheet as the engine.
- What should I check on an AI-made page before I share the link?AI-made pages fail where you don't look: a form that sends nowhere, a dead button, a made-up fact. A 5-step check on a phone, and a prompt for it.
- How to password protect an HTML page without code, on your own domainJavaScript passwords sit in the page code. Put an HTML page from ChatGPT or Claude behind a server-checked password on your own domain.
- How to share an HTML file as a link that opens on any phoneUpload the file to a host and send its link; email and Google Drive send the code. 8 hosts compared, from Netlify Drop to Convika, with 4 steps.
More calculators built from Excel sheets
AI Skill Pod
Share AI skills with your team, the easy way
Everyone uses your team's skills in their own ChatGPT, Claude or Gemini, on any plan. Send one invite link. Free to start.
Start free on AI Skill Pod