Heat exchanger effectiveness-NTU calculator
A counterflow exchanger with an NTU of 1 and a capacity ratio of 0.5 delivers a little over half of the maximum possible heat transfer. Enter both heat-capacity rates, the NTU and the flow arrangement to get the effectiveness. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Ntu
- 1
- C hot
- 2
- C cold
- 1
- Arrangement
- Counterflow
- C min
- 1
- C max
- 2
- Capacity ratio
- 0.5
- Effectiveness
- 0.5647334016
The effectiveness-NTU method is the standard way to rate a two-stream heat exchanger when outlet temperatures are still unknown. You supply the hot and cold heat-capacity rates and the number of transfer units NTU = UA / C_min, choose a flow arrangement, and this calculator returns thermal effectiveness ε, a number between zero and one. Effectiveness is the ratio of the actual heat-transfer rate to the thermodynamic maximum C_min times the inlet temperature span. Parallel flow, counterflow, one-shell-pass shell-and-tube, mixed and unmixed crossflow, and evaporator or condenser duty each have a distinct closed-form ε(NTU, C_r) identity from the Kays and London charts.
Effectiveness, NTU, and the capacity-ratio identity
The number of transfer units NTU = UA / C_min is a dimensionless measure of exchanger size: a large overall conductance UA relative to the weaker stream means the device is thermally long, and effectiveness approaches a geometry-dependent asymptote rather than one in every configuration. The effectiveness-NTU method is preferred whenever the outlet temperatures are the unknowns, because ε(NTU, C_r, arrangement) can be evaluated from UA and the two capacity rates alone.
After ε is known, q = ε C_min (T_h,in − T_c,in) and the two outlets follow from energy balances on each stream. This calculator accepts the two capacity rates and NTU, forms C_min, C_max and C_r, and returns ε between zero and one for the selected flow arrangement. NTU equal to zero yields ε equal to zero because there is no transfer area.
Capacity rates must be finite and strictly positive so that C_r is defined. The identity is dimensionless, so any consistent unit system is valid: watts per kelvin with W/K, or Btu per hour per degree Fahrenheit, provided both streams and UA share that system.
Flow arrangements, closed-form relations, and invalid input
Parallel (co-current) flow uses ε = [1 − exp(−NTU(1+C_r))] / (1+C_r). Counterflow uses ε = [1 − exp(−NTU(1−C_r))] / [1 − C_r exp(−NTU(1−C_r))], collapsing to NTU / (1+NTU) when the streams are balanced. Shell-and-tube here means one shell pass with two or more even tube passes, the classic 1-2 exchanger with Γ = √(1+C_r²).
Crossflow both-unmixed uses the Incropera power-law fit; both-mixed and the two single-mixed crossflow identities cover the remaining unmixed/mixed combinations. Magnitudes above one trillion are rejected as outside the supported range.
Where the effectiveness-NTU method is used in design and teaching
Process, HVAC, and power engineers use the effectiveness-NTU method to size or rate a heat exchanger before the outlet temperatures are known. Software tests for energy-system models need a frozen expected effectiveness for a textbook NTU and C_r so that a refactor of a heat-exchanger library cannot silently change the exponential identities. Field engineers checking a steam condenser or an evaporator coil can treat the phase-change stream as isothermal and use ε = 1 − exp(−NTU) without inventing a fictitious C_r.
Keep requests small, pin the rounded effectiveness in tests, and you get reproducible ε(NTU, C_r) values for homework, LMS plugins, and edge workers without standing up a heat-exchanger solver of your own.
What you can do with it
Rating a candidate UA before outlets are known
Convert NTU = UA / C_min and the two stream capacity rates into ε for parallel, counterflow, or shell-and-tube duty, then recover q = ε C_min ΔT_in.
Heat-transfer homework and lab keys
Generate deterministic effectiveness answers for arbitrary NTU, C_r, and arrangement so students can check Kays and London identities against chart readings.
FAQ
What happens if NTU is negative?
Number of transfer units UA/C_min cannot be negative; the failure is not billed and is not clamped to zero.
What is the capacity ratio C_r?
C_r = C_min / C_max, where C_min and C_max are the smaller and larger of the two heat-capacity rates.
Which flow arrangements can I choose?
Parallel flow, counterflow, shell-and-tube with one shell pass, crossflow with both streams mixed, both unmixed or only one mixed, and the evaporator or condenser case, where one stream boils or condenses at constant temperature.
How do I get the heat duty and the outlet temperatures from the effectiveness?
Multiply the effectiveness by the smaller capacity rate and by the difference between the hot and cold inlet temperatures to get the heat duty. Each outlet temperature then follows from an energy balance on its own stream.
Why does a larger exchanger not always approach full effectiveness?
Because effectiveness levels off at a limit set by the flow arrangement, and that limit is not one in every case. A large NTU means a thermally long exchanger, yet the arrangement still caps how much of the maximum heat it can move.
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/phys/effectiveness-ntu \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ntu":1,"c_hot":2,"c_cold":1,"arrangement":"counterflow"}'const res = await fetch("https://api.kit.forhosting.com/phys/effectiveness-ntu", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ntu": 1,
"c_hot": 2,
"c_cold": 1,
"arrangement": "counterflow"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/effectiveness-ntu",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ntu": 1,
"c_hot": 2,
"c_cold": 1,
"arrangement": "counterflow"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/effectiveness-ntu", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ntu":1,"c_hot":2,"c_cold":1,"arrangement":"counterflow"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ntu":1,"c_hot":2,"c_cold":1,"arrangement":"counterflow"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/effectiveness-ntu", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ntu": 1,
"c_hot": 2,
"c_cold": 1,
"arrangement": "counterflow"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.effectiveness_ntu",
"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_abs_ntu | 1000000000000 |
max_abs_capacity_rate | 1000000000000 |
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
A negative NTU is physically meaningless and fails with invalid_input rather than a silent clamp. Successful API calls cost $0.002.
Effectiveness, NTU, and the capacity-ratio identity
Thermal effectiveness of a two-stream heat exchanger is the ratio of the actual heat-transfer rate q to the thermodynamic maximum q_max = C_min (T_h,in − T_c,in). C_min is the smaller of the two heat-capacity rates ṁ c_p and C_max is the larger; their ratio C_r = C_min / C_max therefore lies in the closed interval from zero to one. A negative NTU is rejected as invalid_input.
Flow arrangements, closed-form relations, and invalid input
POST a JSON body with four required fields: ntu, the non-negative number of transfer units; c_hot and c_cold, the strictly positive heat-capacity rates of the hot and cold streams; and arrangement, one of the closed enum values parallel, counterflow, shell_and_tube, crossflow_unmixed, crossflow_mixed, crossflow_cmin_mixed, crossflow_cmax_mixed, or evaporator. Evaporator (and condenser, accepted as an alias) is the C_r = 0 limit ε = 1 − exp(−NTU), the formula for a boiling or condensing stream at constant temperature. Each numeric field may arrive as a JSON number or as a decimal string, including scientific notation. Missing fields, non-finite values, non-positive capacity rates, an unknown arrangement, and a negative NTU fail with invalid_input naming the problem and are not billed. On success the body echoes the inputs, reports c_min, c_max, capacity_ratio, effectiveness in [0, 1], effectiveness_percent, and the formula string for the selected arrangement.
Where the effectiveness-NTU method is used in design and teaching
A first-pass estimate of ε from NTU and C_r tells you whether a candidate UA can deliver the required duty for a given pair of streams, and it is honest about depending on flow arrangement: counterflow outperforms parallel flow at the same NTU, and a 1-2 shell-and-tube exchanger sits between those two limits. Teaching labs ask students to recover ε from UA, two ṁ c_p values, and a named geometry, then to discuss why a real installed exchanger may fall short of the ideal closed form when fouling, maldistribution, or unaccounted leakage appear.
Integration use cases
Energy-system model fixtures
Pin expected ε for a textbook counterflow or evaporator case in CI so a refactor of a plant model cannot silently change the closed-form exponentials.
Technical questions
How do I compute heat exchanger effectiveness from NTU?
Send finite ntu ≥ 0, strictly positive c_hot and c_cold, and an arrangement enum value. The API forms C_r = C_min/C_max and returns ε(NTU, C_r) in [0, 1] for that geometry.
Which flow arrangements are supported?
parallel, counterflow, shell_and_tube (1-2), crossflow_unmixed, crossflow_mixed, crossflow_cmin_mixed, crossflow_cmax_mixed, and evaporator (condenser alias). Each uses its textbook closed form.
What does the effectiveness-NTU calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.