Calculate the theoretical leakage rate across a seal or gap based on parallel plate flow dynamics.
Water ≈ 1, ISO VG 32 Oil ≈ 32
Please enter valid positive numbers for all fields.
Estimated Leakage Rate
0.00 mL/min
or 0.00 Liters per day
About Seal Leakage Calculation
Estimating the leakage rate across hydraulic seals, O-rings, or mechanical gaps is critical for designing efficient fluid power systems and ensuring environmental compliance. This calculator uses the Parallel Plate Laminar Flow model (Poiseuille flow), which is the standard engineering approximation for leakage through narrow clearances.
The Leakage Formula
The flow rate ($Q$) through a narrow slot is calculated using the following equation:
Q = (w × h³ × ΔP) / (12 × μ × L)
Where:
Q: Flow rate (Volume per time)
w: Width of the leakage path (Calculated as $\pi \times$ Seal Diameter)
h: Gap height or clearance (The most critical factor)
ΔP: Pressure differential across the seal
μ: Dynamic viscosity of the fluid
L: Length of the leakage path (Cross-section width of the seal)
Why the Gap Size is Critical
As seen in the formula, the leakage rate is proportional to the cube of the gap height ($h^3$). This means that a very small increase in the clearance gap results in a massive increase in leakage.
Example: Doubling the gap size (e.g., from 5 microns to 10 microns) increases the leakage rate by a factor of 8 ($2^3$). This highlights why surface finish and tight tolerances are paramount in hydraulic seal design.
Common Applications
Hydraulic Cylinders: Estimating bypass leakage across piston seals.
Valve Spools: Calculating internal leakage (quiescent flow) in directional control valves.
Flange Gaskets: Assessing potential leak paths due to surface imperfections.
Unit Conversions Used
This calculator automatically handles unit conversions for you:
Pressure: Input in bar is converted to Pascals (Pa).
Gap: Input in microns ($\mu m$) is converted to meters (m).
Viscosity: Input in centipoise (cP) is converted to Pascal-seconds (Pa·s).
Output: The final result is converted from cubic meters per second ($m^3/s$) to milliliters per minute (mL/min) for readability.
function calculateSealLeakage() {
// 1. Get Input Values
var pressureBar = parseFloat(document.getElementById('pressureDiff').value);
var diameterMm = parseFloat(document.getElementById('sealDiameter').value);
var gapMicrons = parseFloat(document.getElementById('gapHeight').value);
var lengthMm = parseFloat(document.getElementById('pathLength').value);
var viscosityCp = parseFloat(document.getElementById('viscosity').value);
var resultBox = document.getElementById('slrc-result');
var errorMsg = document.getElementById('slrc-error-msg');
var resultValue = document.getElementById('resultValue');
var resultValueAlt = document.getElementById('resultValueAlt');
// 2. Validation
if (isNaN(pressureBar) || isNaN(diameterMm) || isNaN(gapMicrons) || isNaN(lengthMm) || isNaN(viscosityCp) ||
pressureBar < 0 || diameterMm <= 0 || gapMicrons < 0 || lengthMm <= 0 || viscosityCp <= 0) {
errorMsg.style.display = 'block';
resultBox.style.display = 'none';
return;
}
errorMsg.style.display = 'none';
// 3. Unit Conversions to SI (Meters, Pascals, Pa.s)
var pressurePa = pressureBar * 100000; // 1 bar = 100,000 Pa
// Calculate Circumference (w) from Diameter
var widthM = (Math.PI * diameterMm) / 1000; // mm to meters
var heightM = gapMicrons / 1000000; // microns to meters
var lengthM = lengthMm / 1000; // mm to meters
var viscosityPas = viscosityCp / 1000; // cP to Pa.s (1 cP = 0.001 Pa.s)
// 4. Calculation: Poiseuille Flow between parallel plates
// Q = (w * h^3 * dP) / (12 * mu * L)
var numerator = widthM * Math.pow(heightM, 3) * pressurePa;
var denominator = 12 * viscosityPas * lengthM;
var flowRateM3Sec = numerator / denominator;
// 5. Convert Result to User Friendly Units
// Convert m3/s to mL/min
// 1 m3 = 1,000,000 mL
// 1 sec = 1/60 min
var flowRateMlMin = flowRateM3Sec * 1000000 * 60;
// Convert to Liters/Day for context
var flowRateLitersDay = (flowRateMlMin * 60 * 24) / 1000;
// 6. Display Result
// Formatting to meaningful significant digits
var displayMl = flowRateMlMin < 0.01 ? flowRateMlMin.toExponential(2) : flowRateMlMin.toFixed(4);
var displayLiters = flowRateLitersDay < 0.01 ? flowRateLitersDay.toExponential(2) : flowRateLitersDay.toFixed(4);
resultValue.innerHTML = displayMl + " mL/min";
resultValueAlt.innerHTML = "or approx. " + displayLiters + " Liters per day";
resultBox.style.display = 'block';
}