Calculating the speed of a boat isn't as straightforward as looking at a speedometer in a car. Marine environments introduce variables like current, wind, and hydrodynamic drag. This calculator offers three specific methods to determine boat speed depending on your needs.
1. Basic Speed (Distance over Time)
This is the most accurate way to measure your average speed over a journey. It requires knowing the distance traveled and the time it took.
Speed = Distance / Time
Example: If you travel 20 Nautical Miles in 2 hours, your average speed is 10 Knots. Note that 1 Knot = 1 Nautical Mile per hour.
2. Propeller Speed (Theoretical vs. Actual)
This method calculates how fast your boat should go based on the engine's RPM, the gear reduction ratio, and the propeller pitch. However, because water is a fluid, the propeller "slips" somewhat with each rotation.
Key Inputs:
RPM: Revolutions Per Minute of the engine.
Gear Ratio: The ratio of engine turns to propeller shaft turns. A 2:1 ratio means the engine spins twice for every one propeller rotation.
Pitch: The theoretical distance (in inches) a propeller would move forward in one revolution if moving through a solid.
Slip: The percentage of efficiency lost. A heavy boat might have 20-30% slip, while a high-performance racing boat might see less than 10%.
3. Hull Speed (Maximum Displacement Speed)
For displacement vessels (like sailboats or trawlers that do not plane), the maximum theoretical speed is limited by the physics of the bow wave generated by the hull length.
Hull Speed (knots) = 1.34 × √(LWL in feet)
Here, LWL stands for Length at Waterline. A longer waterline generally allows for a higher maximum displacement speed. Trying to push a displacement hull faster than this speed requires exponentially more power and is usually inefficient.
function toggleMethod() {
var type = document.getElementById('calculationType').value;
document.getElementById('sectionBasic').style.display = 'none';
document.getElementById('sectionProp').style.display = 'none';
document.getElementById('sectionHull').style.display = 'none';
document.getElementById('resultBox').style.display = 'none';
if (type === 'basic') {
document.getElementById('sectionBasic').style.display = 'block';
} else if (type === 'propeller') {
document.getElementById('sectionProp').style.display = 'block';
} else {
document.getElementById('sectionHull').style.display = 'block';
}
}
function calculate() {
var type = document.getElementById('calculationType').value;
var html = ";
if (type === 'basic') {
html = calcBasic();
} else if (type === 'propeller') {
html = calcProp();
} else {
html = calcHull();
}
if (html) {
document.getElementById('resultContent').innerHTML = html;
document.getElementById('resultBox').style.display = 'block';
}
}
function calcBasic() {
var dist = parseFloat(document.getElementById('distance').value);
var unit = document.getElementById('distUnit').value;
var hrs = parseFloat(document.getElementById('timeHours').value) || 0;
var mins = parseFloat(document.getElementById('timeMinutes').value) || 0;
if (isNaN(dist) || (hrs === 0 && mins === 0)) {
alert("Please enter a valid distance and duration greater than zero.");
return null;
}
var totalTime = hrs + (mins / 60);
// Convert input distance to Nautical Miles (base unit)
var distNM = 0;
if (unit === 'nm') distNM = dist;
if (unit === 'mi') distNM = dist * 0.868976;
if (unit === 'km') distNM = dist * 0.539957;
var speedKnots = distNM / totalTime;
var speedMPH = speedKnots * 1.15078;
var speedKPH = speedKnots * 1.852;
return `
Speed (Knots)${speedKnots.toFixed(2)} kn
Speed (MPH)${speedMPH.toFixed(2)} mph
Speed (KPH)${speedKPH.toFixed(2)} km/h
Total Time${totalTime.toFixed(2)} hrs
`;
}
function calcProp() {
var rpm = parseFloat(document.getElementById('rpm').value);
var ratio = parseFloat(document.getElementById('gearRatio').value);
var pitch = parseFloat(document.getElementById('pitch').value);
var slip = parseFloat(document.getElementById('slip').value);
if (isNaN(rpm) || isNaN(ratio) || isNaN(pitch) || isNaN(slip) || ratio === 0) {
alert("Please enter valid numeric values for all propeller fields.");
return null;
}
// Logic:
// Prop Shaft RPM = Engine RPM / Ratio
// Inches per minute = Prop Shaft RPM * Pitch
// Inches per hour = Inches per minute * 60
// Feet per hour = Inches per hour / 12
// Miles per hour = Feet per hour / 5280
// Knots = Feet per hour / 6076.12
var propShaftRPM = rpm / ratio;
var inchesPerHour = propShaftRPM * pitch * 60;
var feetPerHour = inchesPerHour / 12;
// Theoretical speeds (0 slip)
var theoKnots = feetPerHour / 6076.12;
var theoMPH = feetPerHour / 5280;
// Actual speeds (with slip)
var efficiencyFactor = (100 – slip) / 100;
var actualKnots = theoKnots * efficiencyFactor;
var actualMPH = theoMPH * efficiencyFactor;
var actualKPH = actualKnots * 1.852;
return `