Window casing calculator
The window casing calculator estimates the total linear feet of trim needed to surround rectangular window openings.
Run — free
Enter the opening width and height in inches, then specify how many windows of that size will receive casing. The calculation measures all four sides of every opening and converts the combined length from inches to feet. It is useful for an early material takeoff, comparing a trim list with a room schedule, or checking an order before purchasing stock. The result reports both the casing required for one window and the combined requirement for the full group.
Measure the opening consistently
Measure the width and height of the opening along the path where the casing will be installed. Use inches for both dimensions, because the calculator converts the completed perimeter to linear feet only after doing the multiplication. Measure each dimension at the intended casing line rather than mixing the rough opening, glass size, or outside edge of an existing trim board. Those references can differ enough to affect a multi-window order. This calculator treats the opening as a rectangle and includes a head casing, a casing on each side, and a bottom casing. If your detail omits the bottom piece because the stool and apron are being estimated separately, this four-sided result will be higher than that three-sided layout. Group together only windows with the same measured dimensions. When sizes differ, calculate each size as a separate group and add the returned total linear feet. Recording measurements beside a window label also makes it easier to trace the takeoff when field conditions change.
Understand the perimeter calculation
For one rectangular window, the calculator adds the opening width and height, doubles that sum to cover the opposite sides, and divides the result by twelve to convert inches into feet. It then multiplies by the number of windows. A 36-inch-wide by 60-inch-high opening has a four-sided perimeter of 192 inches, or 16 linear feet. Four identical openings therefore require 64 linear feet of casing before any separate purchasing allowance. The response includes the per-window length in inches and feet, plus the total in both units, so you can audit every stage without reconstructing the formula. Decimal results are rounded to six places for stable output, while the calculation itself uses the entered numeric dimensions. The count must be a positive whole number because the request represents complete window openings. Width and height must also be positive finite values. These validation rules prevent an incomplete measurement or fractional window count from silently creating a plausible but unusable material quantity.
Turn calculated length into a purchase quantity
The returned total is a geometric takeoff, not an instruction to buy exactly that many feet of stock. Casing is sold in specific lengths, and installation can consume extra material at miters, square cuts, scarf joints, defects, and changes in grain or color. After obtaining the linear-foot requirement, apply the waste allowance appropriate to the trim profile, stock lengths, joint plan, and installer practice. Then divide the adjusted length by the available board length and round up to whole boards. Wide or highly patterned casing may need a larger allowance when matching matters. The calculator intentionally leaves that purchasing decision separate so the base measurement remains transparent and reusable. It also does not add extensions, jamb liners, stools, aprons, rosettes, plinth blocks, or decorative build-ups; those are distinct components. Before ordering, compare the opening list with the plans and verify representative field measurements. For several window sizes, retain each group result so changes can be updated without repeating the entire takeoff.
What you can do with it
Prepare a trim takeoff
Convert a schedule of identical window openings into a clear four-sided casing length for estimating.
Check a material order
Compare the calculated linear feet with a supplier quote before applying stock-length and waste allowances.
Estimate a renovation room
Measure existing openings and calculate the trim length needed when replacing casing around several matching windows.
FAQ
What does the calculator include?
It includes casing on all four sides of each rectangular opening: two widths and two heights.
Should I enter inches or feet?
Enter both opening dimensions in inches. The result converts the combined casing length to linear feet.
Does the result include waste?
No. It returns the measured four-sided length. Add a project-specific allowance before converting the result to stock boards.
What if my windows have different sizes?
Run each distinct size as a separate group, then add the total casing feet from those results.
Does it calculate stools and aprons?
No. Stools, aprons, jamb extensions, blocks, and other decorative components must be estimated separately.
What does an API calculation cost?
Each API request costs $0.002. The browser calculator is also available for interactive use.
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/window-casing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width_inches":36,"height_inches":60,"windows":4}'const res = await fetch("https://api.kit.forhosting.com/home/window-casing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width_inches": 36,
"height_inches": 60,
"windows": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/window-casing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width_inches": 36,
"height_inches": 60,
"windows": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/window-casing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width_inches":36,"height_inches":60,"windows":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width_inches":36,"height_inches":60,"windows":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/window-casing", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"width_inches": 36,
"height_inches": 60,
"windows": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.window_casing",
"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_dimension_inches | 1000000 |
max_windows | 1000000 |
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. |