Reference Jetfolio

Flight Time Calculation Methodology

How Jetfolio Calculates Realistic Flight Times for Part 135 Operations

Overview

Jetfolio's flight planning tools use a sophisticated flight time calculation methodology that goes beyond simple Great Circle distance calculations. Our enhanced algorithm accounts for real-world operational factors that affect actual flight times in Part 135 charter operations.

This methodology provides significantly more accurate flight time estimates compared to basic distance-divided-by-speed calculations, while still running entirely client-side without calling an external flight-planning API.

Calculation Components

Our flight time calculation incorporates six distinct operational factors, each based on industry standards and real-world operational data:

1. Base Great Circle Distance

Method: Haversine Formula

Purpose: Calculate shortest distance between two points on Earth's surface

Unit: Nautical miles (NM)

2. Climb & Descent Time

Range: 15-20 minutes

Basis: Jets climb at 2,500-3,500 fpm to FL410-FL510

Varies by: Flight distance (short/medium/long)

3. ATC Routing Factor

Range: 4-12% distance increase

Reason: Actual routing rarely follows Great Circle due to airways, SIDs, STARs

Varies by: Flight distance (shorter flights = more deviation)

4. Terminal Speed Restrictions

Time: ~4 minutes

Regulation: 14 CFR 91.117 (250 knots below 10,000 feet)

Impact: Reduced speed in terminal areas

5. Prevailing Winds

Effect: ±4% on flights >1,000 NM

Basis: Prevailing westerlies at cruise altitudes (20-40 knots)

Direction: Eastbound faster, westbound slower

6. Taxi Time

Default: 12 minutes (0.2 hours)

Breakdown: 6 minutes departure + 6 minutes arrival

Configurable: Can be adjusted per calculation

Mathematical Formula

The complete flight time calculation follows this sequence:

Step 1: Calculate Great Circle Distance (Haversine Formula) R = 3440.065 nautical miles (Earth's radius) dLat = (lat2 - lat1) × π/180 dLon = (lon2 - lon1) × π/180 a = sin²(dLat/2) + cos(lat1) × cos(lat2) × sin²(dLon/2) c = 2 × atan2(√a, √(1-a)) distance = R × c Step 2: Calculate Base Cruise Time baseCruiseTime = distance / cruiseSpeed Step 3: Add Climb/Descent Time if distance < 500 NM: climbDescentTime = 0.33 hours (20 min) if distance < 1000 NM: climbDescentTime = 0.28 hours (17 min) if distance >= 1000 NM: climbDescentTime = 0.25 hours (15 min) Step 4: Apply ATC Routing Factor if distance < 500 NM: routingFactor = 1.12 (12% longer) if distance < 1000 NM: routingFactor = 1.08 (8% longer) if distance < 2000 NM: routingFactor = 1.06 (6% longer) if distance >= 2000 NM: routingFactor = 1.04 (4% longer) flightTime = (baseCruiseTime + climbDescentTime) × routingFactor Step 5: Add Terminal Delays terminalDelay = 4 minutes (0.067 hours) flightTime = flightTime + terminalDelay Step 6: Apply Prevailing Wind Factor (if distance > 1000 NM) if westbound: windFactor = 1.04 (4% slower due to headwinds) if eastbound: windFactor = 0.96 (4% faster due to tailwinds) if neither: windFactor = 1.00 (no adjustment) flightTime = flightTime × windFactor Step 7: Add Taxi Time taxiTime = 0.2 hours (12 minutes, default) totalFlightTime = flightTime + taxiTime RESULT: totalFlightTime (in hours)

Example Calculation

Route: KTEB (Teterboro, NJ) → KLAX (Los Angeles, CA)

Aircraft: Citation X+ (Cruise Speed: 527 knots)

Simple Calculation (Old Method)

Distance: 2,132.8 NM (Great Circle) Cruise Speed: 527 knots Simple Flight Time = 2,132.8 ÷ 527 + 0.2 = 4.25 hours

Enhanced Realistic Calculation (New Method)

Distance: 2,132.8 NM (Great Circle) Base Cruise Time: 2,132.8 ÷ 527 = 4.05 hours + Climb/Descent: 0.25 hours (15 min for long flight) = 4.30 hours × ATC Routing Factor: 1.04 (4% for >2000 NM flight) = 4.47 hours + Terminal Delays: 0.067 hours (4 min) = 4.54 hours × Wind Factor: 1.04 (westbound headwind penalty) = 4.72 hours + Taxi Time: 0.2 hours (12 min) = 4.92 hours Difference: +0.67 hours (40 minutes)

Simple and Enhanced Estimates Compared

Here's how the enhanced calculation compares to the simple method across different flight distances:

Route Example Distance Simple Method Enhanced Method Difference
KTEB → KBOS (Short) 164 NM 0.51 hrs 0.99 hrs +0.48 hrs (+94%)
KORD → KMIA (Medium) 1,042 NM 2.19 hrs 2.54 hrs +0.35 hrs (+16%)
KJFK → EGLL (Long, Eastbound) 2,991 NM 5.90 hrs 6.20 hrs +0.30 hrs (+5%)
KSFO → PHNL (Long, Westbound) 2,082 NM 4.17 hrs 4.83 hrs +0.66 hrs (+16%)

Key Insight: Short flights show the highest percentage difference because climb/descent, routing deviations, and terminal delays represent a larger proportion of total flight time. Long flights show smaller percentage differences but still significant absolute time differences.

Configurable Options

The enhanced flight time calculation includes optional configuration parameters that can be adjusted based on specific operational requirements:

Option Default Purpose
includeClimbDescent true Include/exclude climb and descent time adjustments
includeATCRouting true Include/exclude ATC routing inefficiency factors
includeTerminalDelays true Include/exclude terminal area speed restriction delays
includeWinds true Include/exclude prevailing wind adjustments
taxiTime 0.2 hours Customize total taxi time (departure + arrival)

By default, all tools use the full enhanced calculation with all factors enabled. Individual tools may expose these options for user customization based on specific operational scenarios.

Tools Using This Methodology

The following tools in Jetfolio use the enhanced flight time calculation:

The flight time arithmetic itself runs client-side in your browser using JavaScript — the calculation makes no external API call. The tools are not offline-capable, however: each one requires a signed-in session validated against Jetfolio's Firebase backend, and the airport database is fetched from the server at page load.

Accuracy and Limitations

Accuracy

This estimate has not yet been compared with flown block times, so no accuracy figure is claimed. It adds climb and descent, routing, terminal-area and seasonal-wind allowances that a plain great-circle estimate leaves out. Check it against your own legs before relying on it for quotes.

Limitations

Important: These calculations are designed for planning and analysis purposes. Always verify actual flight times using current weather, NOTAMs, and flight planning tools before operating a flight. This methodology is not a substitute for proper flight planning.

Technical Implementation

The flight time calculation is implemented in the shared utilities library (js/shared/utils.js) as the function calculateRealisticFlightTime().

Function Signature:

Utils.calculateRealisticFlightTime(depCode, arrCode, cruiseSpeed, options) Parameters: - depCode: Departure airport code (ICAO, IATA, or FAA code) - arrCode: Arrival airport code (ICAO, IATA, or FAA code) - cruiseSpeed: Aircraft cruise speed in knots - options: Optional configuration object (see Configurable Options) Returns: - Flight time in hours (decimal) - Returns 0 if airports not found or invalid cruise speed

The function is called by the tools listed above whenever a flight time calculation is needed, keeping them consistent with one another. The International Ops Planner is the exception — it uses its own copy in js/modules/intl-ops/route-geo.js, which applies the same adjustments but normalizes the longitude delta to ±180° so the wind direction stays correct across the antimeridian.