Refrigerant capillary tube calculator
A 0.8 mm capillary carrying 1.5 kg/h of R134a needs a length of just under 3 m. Enter inner diameter, refrigerant and design mass flow to get a first-cut length to cut and trial, rated at 45 °C condensing and −10 °C evaporating. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Diameter mm
- 0.8
- Refrigerant
- R134a
- Mass flow kg h
- 1.5
- Refrigerant name
- 1,1,1,2-Tetrafluoroethane m
- Length m
- 2.9153898031
- Length mm
- 2,915.389803149
- High side pressure mpa
- 1.16
A capillary tube is the fixed expansion device in countless household refrigerators, freezers, small air conditioners, and heat-pump appliances. Once the compressor and heat exchangers are chosen, the designer still has to pick an inner diameter and a cut length that meter the right refrigerant mass flow between the high-side condenser and the low-side evaporator. This refrigerant capillary tube calculator estimates that required length from three inputs: inner diameter in millimetres, ASHRAE refrigerant type, and design mass flow in kilograms per hour. The engine applies a Darcy two-phase equivalent restriction model at a standard rating point of forty-five degrees Celsius on the high side and minus ten degrees Celsius on the low side, using tabulated saturation pressures and liquid and vapour densities for each recognized fluid.
What a capillary tube does and how length is estimated
A refrigeration capillary tube is a long, small-bore copper or aluminum restrictor that replaces a thermostatic expansion valve in cost-sensitive, fixed-orifice systems. Liquid from the condenser enters the bore, flashes as static pressure falls, and leaves as a two-phase mixture the evaporator can boil. The tube must drop high-side pressure to evaporating pressure at the intended mass flow: too short and the evaporator floods with wet suction; too long and the evaporator starves and capacity collapses.
Distributed two-phase models integrate friction, momentum, and flashing quality along the bore, and ASHRAE selection charts fold those integrations into families of curves for each fluid. This calculator uses a closed-form Darcy equivalent that is honest about being a first-cut estimate rather than a calorimeter. Length L equals the product of the high-to-low pressure difference ΔP, an equivalent two-phase density ρ_eq, π squared, and inner diameter to the fifth power, all divided by eight times an equivalent Darcy friction factor and the square of mass flow.
Equivalent density is the homogeneous density at a mean quality of 0.6, built from the refrigerant liquid and vapour densities. High-side and low-side pressures come from saturation at forty-five degrees Celsius and minus ten degrees Celsius, except carbon dioxide R744, which uses a ninety-bar gas-cooler pressure because forty-five degrees Celsius sits above the critical point. The diameter-to-the-fifth and mass-flow-squared exponents are the same ones that appear in single-phase Darcy–Weisbach pipe flow, so a ten percent diameter error moves predicted length by about sixty percent.
The result is a length in metres you can cut and trial, not a substitute for a laboratory rating or a manufacturer capillary chart once oil circulation, suction-line heat exchange, and measured subcooling are known.
Where capillary length estimates are used, and what they omit
Appliance engineers use a capillary tube length estimate when a hermetic compressor, condenser, and evaporator are already selected and a first cut length is needed before a calorimeter loop is available.
A domestic refrigerator on R600a or R134a with a 0.7 mm bore and a mass flow near one kilogram per hour typically lands in the two-to-four-metre band this model produces; a split-system air conditioner on R410A or R32 with a larger bore and a higher mass flow produces a different length because those fluids carry a much larger high-to-low pressure difference. Teaching labs ask students to explain why diameter to the fifth dominates the result and why an unrecognized refrigerant must fail instead of silently assuming R22 properties.
Field technicians replacing a damaged capillary can recover a starting length from the nameplate refrigerant and a mass-flow estimate derived from rated capacity divided by an approximate enthalpy lift, then trim on superheat. The model does not include oil, non-adiabatic heat exchange with the suction line, inlet subcooling as a free input, or choked flashing details from Bittle–Wolf–Pate dimensionless charts; those belong in a full capillary simulation once those data exist.
What you can do with it
Domestic refrigerator capillary cut length
Estimate a first-cut R134a or R600a capillary length from a 0.6–0.8 mm bore and a mass flow inferred from rated cooling capacity before a calorimeter loop is available.
Split-system air-conditioner restriction sizing
Compare R410A and R32 capillary lengths at the same diameter and mass flow so the larger high-side pressure of those fluids is reflected in the cut length.
FAQ
How is capillary tube length estimated?
ΔP and densities come from a 45 °C / −10 °C rating point for the selected refrigerant (R744 uses a 90 bar gas cooler).
Which refrigerant types are recognized?
R12, R22, R32, R134a, R290, R404A, R407C, R410A, R600a, R717, R744, and R1234yf.
What happens if the refrigerant type is not recognized?
The calculator does not silently assume R22 or another fluid. Failed validation is not billed.
Why does a small change in bore matter so much?
Because the estimated length grows with the fifth power of the inner diameter. A ten percent error in the diameter moves the predicted length by about 60%, so measure the bore carefully.
What happens if the capillary is too short or too long?
Too short and the evaporator floods, sending wet suction back to the compressor. Too long and the evaporator starves of refrigerant and the cooling capacity collapses.
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/refrigerant-capillary-tube \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"diameter_mm":0.8,"refrigerant":"R134a","mass_flow_kg_h":1.5}'const res = await fetch("https://api.kit.forhosting.com/phys/refrigerant-capillary-tube", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"diameter_mm": 0.8,
"refrigerant": "R134a",
"mass_flow_kg_h": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/refrigerant-capillary-tube",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"diameter_mm": 0.8,
"refrigerant": "R134a",
"mass_flow_kg_h": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/refrigerant-capillary-tube", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"diameter_mm":0.8,"refrigerant":"R134a","mass_flow_kg_h":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"diameter_mm":0.8,"refrigerant":"R134a","mass_flow_kg_h":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/refrigerant-capillary-tube", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"diameter_mm": 0.8,
"refrigerant": "R134a",
"mass_flow_kg_h": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.refrigerant_capillary_tube",
"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
min_diameter_mm | 0.2 |
max_diameter_mm | 6 |
min_mass_flow_kg_h | 0.01 |
max_mass_flow_kg_h | 250 |
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
Unrecognized refrigerant types fail with invalid_input and are not billed. Successful API calls cost $0.002.
Inputs, recognized refrigerants, response fields, and errors
Missing fields, empty strings, non-finite numbers, zero or negative diameter, and zero or negative mass flow likewise fail. Values are rounded to twelve decimal places so goldens and clients compare byte-for-byte across runtimes. POST a JSON body with three required fields. diameter_mm is the inner diameter of the capillary in millimetres and must be a finite number strictly between 0.2 and 6; that window covers household 0.6 to 1.0 mm tubes and light commercial 1.2 to 2.0 mm tubes while rejecting values that are really metres or inches sent to the millimetre field. Aliases diameter, d, inner_diameter, id_mm, tube_diameter, and capillary_diameter are accepted. Convert inches by multiplying by 25.4 before sending. mass_flow_kg_h is the design refrigerant mass flow in kilograms per hour, strictly between 0.01 and 250; aliases mass_flow, m_dot, mass_flow_rate, and flow_rate are accepted. refrigerant is the ASHRAE designation: R12, R22, R32, R134a, R290, R404A, R407C, R410A, R600a, R717, R744, or R1234yf. Aliases refrigerant_type, fluid, gas, and type are accepted, as are hyphenated or lowercase spellings such as r-134a, common chemical names such as ammonia, propane, isobutane, and carbon dioxide, and the tokens NH3 and CO2. An unrecognized refrigerant type fails with invalid_input naming the field; that failure is not billed. On success the body echoes diameter_mm, the canonical refrigerant token, a refrigerant_name string, and mass_flow_kg_h, and it returns length_m as the primary result in metres, length_mm as the same length in millimetres, high_side_pressure_mpa and low_side_pressure_mpa used in ΔP, equivalent_density in kilograms per cubic metre, the constant friction_factor and mean_quality, unit equal to m, a formula string, and method darcy_two_phase_equivalent.
Where capillary length estimates are used, and what they omit
Software tests for refrigeration libraries pin length_m for a published diameter, fluid, and flow triple so a refactor of a two-phase solver cannot drift the first-cut orifice model. Keep requests small, pin the rounded length_m in tests, and you get a reproducible restriction length for homework, LMS plugins, and edge workers without standing up a two-phase network solver of your own.
Integration use cases
Teaching labs and refrigeration software fixtures
Pin length_m for a published diameter, refrigerant, and flow triple, and assert that an unrecognized refrigerant type fails with invalid_input instead of assuming R22.
Technical questions
Which units should I use for diameter, mass flow, and length?
Send inner diameter as diameter_mm in millimetres (inches × 25.4) and mass flow as mass_flow_kg_h in kilograms per hour. The primary length is length_m in metres; length_mm is the same value in millimetres. unit is m.
What does the refrigerant capillary tube calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.