Spray foam insulation calculator
Reaching R-21 over 1,200 sq ft with open-cell foam rated R-3.7 per inch takes just under six inches of foam; with 10% waste that is 38 kits of 200 board feet. Kits are rounded up to whole sets. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Area sqft
- 1,200
- Target r
- 21
- R per inch
- 3.7
- Thickness in
- 5.6756756757
- Waste percent
- 10
- Waste factor
- 1.1
- Board feet net
- 6,810.8108108108
Buying spray foam by guesswork leaves walls short on R-value or a half-kit sitting unused after the job. This spray foam insulation calculator turns three practical numbers—coverage area in square feet, the target R-value for the foam layer, and the product’s rated R-value per inch—into applied thickness, net board feet, waste-adjusted board feet, and whole kits to order. It uses the trade definition that one board foot equals one square foot covered at one inch thick, so open-cell and closed-cell products share the same take-off math once you supply the correct R-per-inch from the data sheet. Optional waste percent and kit board-foot yield let you match DIY two-hundred-board-foot kits or larger contractor sets without rebuilding a spreadsheet.
Board feet: the unit spray foam is sold in
Spray foam is specified and sold in board feet, not in gallons of mixed chemical. One board foot is one square foot of surface covered one inch thick, so the same math works for open-cell and closed-cell products. The calculator first divides your target R-value by the foam's rated R per inch to get the thickness you must apply, then multiplies that thickness by the area to get the net board feet. A waste allowance, 10% unless you choose another figure, is added for overspray, and the total is divided by the yield of one kit and rounded up.
Getting the R per inch and kit yield right
Take the R per inch from the manufacturer's technical sheet, not from memory: open-cell foam is commonly about 3.5 to 3.8 per inch and closed-cell about 6 to 7, so mixing them up changes the thickness and the kit count a great deal. Use the R-value you need from the foam layer itself, whether it is an attic, a wall cavity, a rim joist or a basement. Then enter the board-foot yield printed on the kit you will buy, such as the common DIY sizes of 200 or 600. The result also reports the R-value achieved and the spare board feet in your last kit.
What you can do with it
DIY kit shopping list
Enter attic or wall area, target R, and the foam’s R-per-inch, add waste, and buy whole kits without shortfall or bulk overstock.
Contractor take-off estimates
Convert measured coverage areas into board feet and kit counts that match manufacturer kit yields for purchase orders.
FAQ
What is a board foot of spray foam?
One board foot equals one square foot of surface covered at one inch of foam thickness. Total board feet equal area (ft²) times thickness (inches), before waste.
Which R-per-inch should I use?
Use the manufacturer data sheet for your product. Typical open-cell is about R-3.5 to R-3.8 per inch; closed-cell is often about R-6 to R-7 per inch. This tool does not invent product ratings.
What does the spray foam calculator cost?
The browser tool is free and runs locally.
How thick does spray foam need to be for my R-value?
Divide the R-value you need from the foam layer by the product's rated R per inch. The higher the R per inch, the thinner the layer, which is why closed-cell foam reaches a given R with less depth than open-cell.
Does the calculator work for closed-cell foam?
Yes. The math is the same for open-cell and closed-cell; only the R per inch you enter changes, and for closed-cell it is usually about 6 to 7 according to the manufacturer's technical sheet.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/home/spray-foam \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"area_sqft":1200,"target_r":21,"r_per_inch":3.7}'const res = await fetch("https://api.kit.forhosting.com/home/spray-foam", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"area_sqft": 1200,
"target_r": 21,
"r_per_inch": 3.7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/spray-foam",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"area_sqft": 1200,
"target_r": 21,
"r_per_inch": 3.7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/spray-foam", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"area_sqft":1200,"target_r":21,"r_per_inch":3.7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"area_sqft":1200,"target_r":21,"r_per_inch":3.7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/spray-foam", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"area_sqft": 1200,
"target_r": 21,
"r_per_inch": 3.7
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.spray_foam",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Zero or negative area, R-value, or per-inch rating is rejected with invalid_input instead of a silent divide-by-zero.
How thickness, board feet, and kits are computed
Spray foam is sold and specified in board feet, not gallons of mixed chemical alone. One board foot is defined as one square foot of surface covered at one inch of cured foam thickness. Start from the energy target for the foam layer: target_r is the R-value you need from that layer (attic, wall cavity, rim joist, or basement), using IP units of hour·ft²·°F/Btu. Divide by the product’s rated r_per_inch from the manufacturer technical sheet—commonly about three point five to three point eight for open-cell and about six to seven for closed-cell—to obtain thickness_in, the applied depth in inches required to hit that R if the product cures as rated. Multiply area_sqft by thickness_in to get board_feet_net, the ideal yield with zero overspray or waste. Apply waste_percent as a multiplicative factor: waste_factor equals one plus waste_percent divided by one hundred, so a ten percent allowance means you plan for one hundred ten percent of net board feet. The purchase quantity board_feet is board_feet_net times waste_factor. Divide that figure by kit_board_feet—the rated board-foot yield printed on the kit or drum set—to obtain kits_exact, then ceiling to kits_needed so you never order a fractional kit. The response also reports achieved_r (thickness times r_per_inch, which equals target_r for clean inputs), kit_coverage_bf, and spare_board_feet so estimators can audit leftover yield against the packing list.
What you send and what you get back
Wire the free browser form for homeowner planning, then call the identical contract from contractor estimating scripts when you need multi-zone take-offs. POST a JSON body with three required positive finite numbers: area_sqft for the surface to foam in square feet (aliases area, sqft, coverage_area); target_r for the R-value the foam layer must deliver (aliases r_value, r_target, target_r_value); and r_per_inch for the product rating per inch of thickness (aliases r_value_per_inch, rpi, r_inch). Optional waste_percent defaults to ten and must lie in zero through one hundred inclusive. Optional kit_board_feet defaults to two hundred, a common DIY kit size, and must be strictly positive. Missing fields, non-numeric strings, NaN, Infinity, and non-positive area or R inputs fail with invalid_input and are not billed. On success the body echoes cleaned inputs plus thickness_in, waste_factor, board_feet_net, board_feet, kits_exact, integer kits_needed, kit_coverage_bf, spare_board_feet, achieved_r, a unit_note reminding that board feet use ft²×inches, and a short formula string for documentation. A classic check is twelve hundred square feet of attic at target R-twenty-one with open-cell r_per_inch three point seven: thickness is twenty-one divided by three point seven inches, net board feet is area times that thickness, ten percent waste inflates the order, and kits_needed is the ceiling of board feet over two hundred. Successful API calls cost the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where spray foam board-foot calculators earn their keep
Insulation contractors and energy auditors convert measured net wall and ceiling areas into board-foot and kit line items that match manufacturer kit labels, reducing spreadsheet drift between the estimator and the warehouse clerk. Content sites that rank for spray foam insulation calculator benefit from a live tool whose free path matches the paid automation path byte-for-byte on pure parse logic. Related but different search intents—assembly R from stacked layers without foam kits, or heater sizing from room volume—belong on separate landings such as an insulation R-value calculator or a heater BTU calculator rather than overloading this spray-foam board-feet page. Homeowners comparing open-cell versus closed-cell for the same attic area swap only r_per_inch and target_r while holding area_sqft and waste fixed, then rank thickness and kit count before calling installers. Property managers planning multi-unit rim-joist or crawl-space campaigns feed a batch of areas and target R values through the API and attach kits_needed to purchase orders so overstock stays intentional. Because this capability is tier-A analytic compute, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Open-cell vs closed-cell comparison
Hold area and target R fixed, swap r_per_inch across products, and compare thickness, board feet, and kits side by side.
Technical questions
How does this spray foam insulation calculator work?
It divides target_r by r_per_inch for applied thickness in inches, multiplies by area_sqft for net board feet, applies waste percent, then ceilings by kit_board_feet so you order whole kits only.
What happens if area or R-value is zero or negative?
The request fails with invalid_input. area_sqft, target_r, r_per_inch, and kit_board_feet must all be strictly positive; waste_percent must be between 0 and 100.