Air conditioner BTU calculator
A 250 sq ft room with an 8-foot ceiling, average sun and two people needs about 5000 BTU per hour. Adjust for a taller ceiling, a sunny or shaded room and extra occupants, then shop for the right window or portable unit. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Area
- 250
- Ceiling height in feet
- 8
- Sun exposure
- Weighted average
- Occupants
- 2
- Base btu per sqft
- 20 BTU/h
- Base btu
- 5,000
- Height factor
- 1
- Sun factor
- 1
An air conditioner BTU calculator turns room size and a few heat-load adjustments into the cooling capacity you should shop for.
How room cooling BTU capacity is estimated
Cooling capacity for a single room is commonly expressed in British thermal units per hour (BTU/h). Ceiling height scales the air volume that must be cooled; this calculator multiplies the base by ceiling height divided by eight feet, so a ten-foot ceiling raises the load by twenty-five percent while a standard eight-foot room leaves the height factor at one.
Sun exposure adjusts for radiant and conduction gains through glass and exterior walls: shaded rooms use a factor of zero point nine (ten percent less capacity), average rooms use one point zero, and sunny or heavily glazed rooms use one point one (ten percent more). Occupancy adds sensible and latent heat from people; the baseline assumes two occupants, and each additional person beyond two adds six hundred BTU per hour. The final cooling BTU is base times height factor times sun factor, plus the occupancy adjustment.
Practical tips, limits, and related searches
Measure floor area as length times width of the conditioned room in square feet, or convert square metres first (multiply by about ten point seven six) before calling. Use the finished ceiling height, not attic height above insulation. Pick shaded for north-facing rooms with little direct sun, average for typical mixed exposure, and sunny for west- or south-facing rooms with large glass.
Set occupants to the number of people who regularly use the space at once, not the whole household, so a bedroom might stay at one or two while a living room at a party might need a higher count. Keep dimensions inside the published absolute range so products cannot overflow into non-finite results the solver must reject.
Prefer this capability when you already know room area and only need a transparent cooling BTU estimate with the common height, sun, and occupancy tweaks; if your source is a multi-zone plan, call once per room and sum recommended steps with care for simultaneous diversity.
FAQ
How is cooling BTU calculated from room area?
Base load is area in square feet times 20 BTU per sq ft. That base is multiplied by ceiling height over 8 ft and by a sun factor (0.9 shaded, 1.0 average, 1.1 sunny), then occupancy adds 600 BTU for each person beyond two.
What happens when area is zero or negative?
Room area must be positive; a non-positive area cannot define a cooling load.
Is this a full Manual J load calculation?
No. It is a transparent rule-of-thumb sizer for room area, ceiling height, sun exposure, and occupancy. Insulation, ducts, climate design temperatures, and whole-house systems need a proper Manual J or professional load study.
Is the air conditioner BTU calculator free?
The browser tool is free and runs locally.
How many people does the estimate assume are in the room?
Two. Each person beyond two adds 600 BTU per hour, so enter the number of people who regularly use the room at the same time, not your whole household.
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/ac-btu \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"area":250}'const res = await fetch("https://api.kit.forhosting.com/home/ac-btu", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"area": 250
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/ac-btu",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"area": 250
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/ac-btu", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"area":250}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"area":250}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/ac-btu", 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": 250
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.ac_btu",
"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.
Limits
max_area | 1000000 |
min_area | 1e-9 |
max_ceiling_height | 100 |
min_ceiling_height | 1e-9 |
max_occupants | 10000 |
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
Non-positive room area is rejected with a clear invalid_input error instead of inventing a load from zero or negative square footage.
How room cooling BTU capacity is estimated
A widely used rule of thumb starts from floor area: multiply square footage by twenty BTU per square foot to get a base load for a typical residential room with an eight-foot ceiling and average solar gain. That base alone is not enough when the room is taller, sunnier, or more crowded than the baseline assumptions. The response also reports tons as cooling BTU divided by twelve thousand (one refrigeration ton), and recommended_btu as the cooling figure rounded up to the next five-hundred BTU step so you can match common window and portable AC product sizes. This is sizing guidance for shopping and planning, not a Manual J load calculation with insulation R-values, duct losses, or climate-zone design temperatures; treat the output as a transparent starting point and upsize or downsize when an engineer or manufacturer table says otherwise.
How to call the API and what comes back
Ceiling height, when provided, must also be positive and within limits; occupants must be a positive whole number. Prefer sending numbers rather than pre-formatted strings when you control the client; when you must send strings, avoid unit suffixes or thousand separators that would fail the finite-number pattern. Send a JSON body with required area in square feet (aliases room_area, sqft, square_feet, floor_area, A) and optional ceiling_height in feet (aliases height, ceiling, ceiling_ft, H; default eight), sun_exposure as shaded, average, or sunny (aliases sun, exposure, sunlight; also accepts shade/low, medium/normal, high/bright; default average), and occupants as a positive integer (aliases people, occupancy, persons, n; default two). Area must be a finite positive number within the published absolute range so intermediate products remain finite in IEEE double precision on the Worker and in the browser. Non-positive area is the primary hard error this capability advertises: zero or negative square footage cannot define a room load and returns invalid_input. On success the response echoes rounded area, ceiling_height, sun_exposure, and occupants; publishes base_btu_per_sqft (always twenty), base_btu, height_factor, sun_factor, occupancy_adjustment_btu, cooling_btu and btu (same total), recommended_btu, tons, unit as BTU/h, formula as the human-readable equation string, message as a short English summary, and steps as an ordered array of substitution lines. Failed validation—missing area, non-finite numbers, non-positive area, invalid sun labels, non-integer or non-positive occupants, or values outside absolute limits—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
When teaching or writing tests, pair a default eight-foot average room with a tall sunny high-occupancy case, and include a deliberate zero or negative area to prove the invalid_input path. This landing targets people searching for an air conditioner BTU calculator, room cooling capacity, AC size by square feet, or ceiling height and sun exposure adjustments online; it is not a full whole-house Manual J load program, not a heat-pump heating BTU tool, not a SEER or energy-cost estimator, and not a duct-sizing calculator. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when you deliberately send area zero to verify error handling. Round-trip checks are easy: recompute area times twenty, multiply by height over eight and by the sun factor, add six hundred times extra people, and confirm the published cooling_btu matches within the same twelve-decimal rounding used for all numeric fields.
Integration use cases
Size a window AC for a bedroom
Homeowners enter bedroom square footage, ceiling height, sun exposure, and usual occupants to get cooling_btu and a recommended_btu step before shopping for a window unit.
Landlord replacement quotes
Property managers feed room area and occupancy into the API and attach cooling_btu, tons, and steps to a transparent replacement quote for tenants.
Golden fixtures for HVAC apps
Developers generate known-good BTU cases plus deliberate non-positive area rejections for unit tests and continuous integration.
Technical questions
What is recommended_btu?
It is the computed cooling_btu rounded up to the next 500 BTU step so you can match common window and portable air conditioner product sizes.