Sprinkler K-factor calculator
A sprinkler flowing 22.4 gallons per minute at 16 psi has a K-factor of 5.6, the standard half-inch head. Enter a measured or required flow and the pressure at the head to identify the orifice you need. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Flow
- 22.4
- Pressure
- 16
- K factor
- 5.6
- Sqrt pressure
- 4
Fire-protection designers, sprinkler contractors, and authority-having-jurisdiction reviewers compute a sprinkler K-factor whenever they convert a measured or required flow in gallons per minute into the discharge coefficient stamped on a pendent, upright, or sidewall head. The identity is K equals Q divided by the square root of residual pressure P in pounds per square inch, the same relation NFPA 13 uses to size orifices and to reconstruct density from a hydraulic calculation. This sprinkler K-factor calculator accepts those two quantities and returns K as the discharge coefficient in gallons per minute over square-root psi. Zero residual pressure is rejected because dividing by the square root of zero is undefined; a non-positive flow is rejected because a sprinkler that does not discharge cannot have a K-factor.
The sprinkler K-factor identity and what the number actually means
A fire sprinkler is an orifice whose discharge is not linear in pressure. NFPA 13 and manufacturer data sheets write the working identity as Q equals K times the square root of P, where Q is volumetric flow in US gallons per minute and P is residual pressure at the sprinkler in pounds per square inch. Rearranging for the unknown coefficient gives K equals Q divided by the square root of P.
The resulting K-factor has units of gallons per minute over square-root psi and is treated as a property of the orifice: a standard half-inch sprinkler is K 5.6, a large-orifice head is K 8.0, extra-large orifices run 11.2, 14.0 and 16.8, and ESFR storage sprinklers occupy 22.4, 25.2 and 28.0. Because the mapping is a square root, doubling residual pressure does not double flow; it multiplies flow by the square root of two, which is why a hydraulic calculation that quotes only gpm without residual pressure cannot recover K.
Residual pressure is the pressure at the discharging head, not pump discharge, not city-main static, and not a pitot reading taken in a different branch. This calculator applies that identity only. It does not run a tree or grid hydraulic model, does not apply Hazen–Williams pipe friction, and does not assign a hazard density or coverage area.
Give it a measured or required flow and the residual pressure that produced or is required to produce that flow, and it returns the discharge coefficient K. Zero pressure is undefined because the denominator vanishes. A non-positive flow cannot describe a discharging sprinkler and is rejected rather than returning a hollow zero K.
Where a sprinkler K-factor calculator earns its keep
Sprinkler contractors and designers reach for a K-factor calculator when a pitot tube, a listed residual, or a hydraulic printout gives gallons per minute and psi but the head stamp is worn, missing, or being reverse-engineered for a renovation. A takeoff that must confirm a 5.6 versus 8.0 orifice before ordering pendent heads can pin K from a single flow-and-pressure pair instead of guessing from colour codes.
Authority-having-jurisdiction reviewers checking a contractor submittal can recompute K from the reported remote-head residual and flow and compare it with the data sheet without opening a full hydraulic engine. Warehouse retrofits that mix ESFR K 14.0 and K 16.8 heads need a deterministic oracle so a spreadsheet and a field tablet never disagree on the coefficient. Content sites that rank for sprinkler k-factor calculator, K-factor from gpm and psi, or NFPA 13 discharge coefficient benefit from a live free tool whose arithmetic matches the paid automation path byte-for-byte.
This landing is not an orifice-discharge page and not a flow-unit converter: the search intent is the sprinkler K-factor from gallons per minute and residual psi. Invalid input is not billed.
What you can do with it
Field takeoff from pitot flow and residual
Convert a measured gallons-per-minute discharge and residual psi at a pendent, upright, or sidewall head into the stamped K-factor before ordering replacements.
Submittal and AHJ checks
Recompute K = Q / √P from the remote-head flow and residual on a hydraulic printout and compare it with the manufacturer data sheet.
NICET and fire-protection coursework
Grade sprinkler K-factor items with a deterministic oracle that rejects zero pressure and non-positive flow instead of returning Infinity or a silent zero.
FAQ
How do I calculate a sprinkler K-factor from flow and pressure?
Send positive flow Q in gallons per minute and positive residual pressure P in psi.
Does flow have to be a positive number?
Yes. Flow must be a finite number strictly greater than zero.
What units does the sprinkler K-factor calculator use?
Flow is US gallons per minute, pressure is residual psi at the sprinkler, and K is gpm over square-root psi, matching NFPA 13 listed coefficients such as 5.6 and 8.0.
What K-factor does a standard sprinkler head have?
A standard half-inch sprinkler is K 5.6. Large-orifice heads are K 8.0, and extra-large orifices run 11.2, 14.0 and 16.8. Storage sprinklers go higher, at 22.4, 25.2 and 28.0.
Does doubling the pressure double the sprinkler flow?
No. Flow grows with the square root of pressure, so doubling the pressure multiplies the flow by the square root of 2. That is why a flow figure without its residual pressure cannot give you the K-factor.
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/build/k-factor \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"flow":22.4,"pressure":16}'const res = await fetch("https://api.kit.forhosting.com/build/k-factor", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"flow": 22.4,
"pressure": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/build/k-factor",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"flow": 22.4,
"pressure": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/build/k-factor", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"flow":22.4,"pressure":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"flow":22.4,"pressure":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/build/k-factor", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"flow": 22.4,
"pressure": 16
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "build.k_factor",
"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
Input contract, response fields, units, and error behaviour
Flow that is zero or negative fails because a K-factor is defined only for a discharging head. Pressure that is exactly zero fails with a message that K equals Q over square root of P is undefined when residual pressure is zero; negative pressure is rejected because the square root would not be real. A classic check is 22.4 gallons per minute at 16 psi: the square root of 16 is 4, so K is 5.6, the listed coefficient of a standard orifice. Another check is 33.6 gallons per minute at 9 psi, which yields K 11.2. POST a JSON body with two required finite numbers: flow, the positive sprinkler discharge in US gallons per minute, and pressure, the positive residual pressure at the sprinkler in pounds per square inch. Flow aliases include flow_gpm, q, gpm, flow_rate, and Q. Pressure aliases include pressure_psi, p, psi, residual_pressure, and P. Fields may arrive as JSON numbers or as numeric strings. Missing flow, missing pressure, empty strings, non-finite values, and values whose absolute magnitude exceeds one trillion fail with invalid_input naming the field; those failures are not billed. On success the body echoes cleaned flow and pressure rounded to twelve decimal places, returns k_factor as Q divided by the square root of P, returns sqrt_pressure as that intermediate root, and includes formula, method set to sprinkler_k_factor, and a unit_note that restates gallons per minute, psi, and gpm over square-root psi. Pair k_factor with your own hydraulic model if you later need density or remote-area flow; this capability solves the K-factor identity only. Successful API calls use the published base of $0.002 per item.
Where a sprinkler K-factor calculator earns its keep
Exam generators for NICET and fire-protection courses want one JSON shape in the browser and the API so worksheets and auto-graders stay aligned on K equals Q over square root of P. Keep requests small, pin the rounded k_factor field in tests, and you get a reproducible discharge coefficient for LMS plugins, edge workers, and shop drawings without standing up a hydraulic solver.
Technical questions
What happens if residual pressure is zero?
The task fails with invalid_input. K = Q / √P is undefined when residual pressure is zero, so the request is not billed.
What does the sprinkler K-factor calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.