Calculating the correct fuel flow rate is critical for engine performance, tuning, and fuel system component selection. Whether you are sizing fuel injectors, selecting a fuel pump, or planning a high-performance build, understanding the relationship between Horsepower, BSFC (Brake Specific Fuel Consumption), and Duty Cycle is essential.
What is BSFC?
Brake Specific Fuel Consumption (BSFC) is a measure of an engine's fuel efficiency. It represents the amount of fuel (in pounds) required to produce one horsepower for one hour. Lower numbers indicate a more efficient engine, while forced induction engines typically require more fuel per horsepower to operate safely (cooling the charge).
Engine Type
Typical BSFC Range
Naturally Aspirated (NA)
0.45 – 0.50
Nitrous Oxide
0.55 – 0.60
Supercharged / Turbocharged
0.60 – 0.65
Methanol / Alcohol
1.00 – 1.10
Why Duty Cycle Matters
Injector Duty Cycle refers to the percentage of time an injector is open during an engine cycle. It is generally recommended to keep the maximum duty cycle at or below 80-85%. Running injectors at 100% duty cycle (static) can lead to overheating, inconsistent fueling, and potential engine failure because the injector never closes to cool down.
Formulas Used
This calculator uses standard automotive engineering formulas to determine your requirements:
Total Fuel Flow (lbs/hr) = Target HP × BSFC
Injector Size (lbs/hr) = (Total Fuel Flow / Number of Cylinders) / (Duty Cycle %)
Conversion to cc/min = (lbs/hr) × 10.5 (Approximate for Gasoline) or calculated via specific gravity for other fuels.
Fuel Pump Sizing
Once you have the total fuel flow rate in Gallons Per Hour (GPH) or Liters Per Hour (LPH), you can select a fuel pump. Always choose a pump that flows slightly more than your maximum calculated requirement to account for system losses, check valves, and aging components.
function calculateFuelFlow() {
// 1. Get input values
var hp = parseFloat(document.getElementById('targetHP').value);
var cylinders = parseFloat(document.getElementById('numCylinders').value);
var bsfc = parseFloat(document.getElementById('bsfc').value);
var dutyCycle = parseFloat(document.getElementById('dutyCycle').value);
var fuelWeight = parseFloat(document.getElementById('fuelType').value); // lbs per gallon
// 2. Validate inputs
if (isNaN(hp) || hp <= 0 || isNaN(cylinders) || cylinders <= 0 || isNaN(bsfc) || bsfc <= 0 || isNaN(dutyCycle) || dutyCycle <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
// 3. Logic: Calculate Total Required Mass Flow
// Formula: Total lbs/hr = HP * BSFC
var totalFlowLbs = hp * bsfc;
// 4. Logic: Calculate Total Volume Flow
// Formula: Gallons/hr = lbs/hr / lbs/gal
var totalFlowGal = totalFlowLbs / fuelWeight;
var totalFlowLiters = totalFlowGal * 3.78541;
// 5. Logic: Calculate Per Injector Requirements
// The duty cycle acts as a buffer. If we need 10 lbs/hr fuel but only want 80% duty,
// we need an injector capable of 12.5 lbs/hr (10 / 0.8).
var dutyDecimal = dutyCycle / 100;
var injectorFlowLbs = (totalFlowLbs / cylinders) / dutyDecimal;
// 6. Logic: Convert lbs/hr to cc/min
// General Formula: cc/min = (lbs/hr * 453.592) / (60 * SpecificGravity)
// Specific Gravity = FuelWeight(lbs/gal) / WeightOfWater(8.34 lbs/gal)
// However, standard industry constants are often preferred for direct comparison.
// We will calculate mathematically based on density.
var weightOfWater = 8.33; // lbs/gal
var specificGravity = fuelWeight / weightOfWater;
// 1 lb/hr = 7.55987 cc/min / SG
var injectorFlowCC = injectorFlowLbs * (7.55987 / specificGravity);
// 7. Display Results
document.getElementById('results').style.display = 'block';
// Total Engine Flow
document.getElementById('totalFlowLbs').innerHTML = totalFlowLbs.toFixed(1) + " lbs/hr";
document.getElementById('totalFlowGal').innerText = totalFlowGal.toFixed(1) + " GPH (" + totalFlowLiters.toFixed(1) + " LPH)";
// Injector Lbs
document.getElementById('injectorLbs').innerHTML = injectorFlowLbs.toFixed(1) + " lbs/hr";
// Injector CC
document.getElementById('injectorCC').innerHTML = Math.round(injectorFlowCC) + " cc/min";
}