Calculate how long a projectile stays in the air using launch speed and angle or velocity components, with custom start height, landing height, and gravity.
Advanced options
How to use our Time of Flight Calculator for Projectile Motion
- Choose Input method: use Speed + angle if you know launch speed and direction, or Components if you already know horizontal and vertical velocity.
- Choose Units so your heights, speeds, and gravity all use the same system.
- If you picked Speed + angle, enter Initial speed (selected unit per second) and Launch angle (degrees). If needed, change Angle unit in Advanced options.
- If you picked Components, enter Initial horizontal velocity v0x (selected unit per second) and Initial vertical velocity v0y (selected unit per second).
- Enter Start height y0 (selected unit) and Landing height y_land (selected unit). Use the same reference level for both, such as ground = 0.
- Open Advanced options only if needed to change Gravity g (selected unit per second squared) or Number display.
- Click Calculate.
- Read Time of flight to landing height (primary) as the first positive time the projectile reaches the chosen landing height. If a later crossing exists, it appears in Time of flight to landing height (second time, if any).
- Sanity-check the result: if Initial vertical velocity v0y (selected unit per second) is positive, then Time to peak (if vy0 > 0) should be smaller than the later landing time, and Maximum height y_max should be at least as high as both Start height y0 (selected unit) and Landing height y_land (selected unit) when a landing time exists.
Definitions
Input method: The way you describe the launch velocity: either with speed and angle, or with horizontal and vertical parts.
Initial speed: The object's launch speed before gravity changes its motion.
Initial horizontal velocity v0x: The sideways part of the launch velocity. In ideal projectile motion, it stays constant [1].
Initial vertical velocity v0y: The upward or downward part of the launch velocity. Positive means upward; negative means downward.
Start height y0: The vertical position at launch, measured from your chosen zero level.
Landing height y_land: The vertical position where you want the calculator to stop the flight. It does not have to be ground level.
Time of flight: The positive time after launch when the projectile reaches the chosen landing height.
Time to peak: How long it takes to reach the highest point, only when the initial vertical velocity is upward.
Maximum height y_max: The highest vertical position reached during the motion.
Gravity g: The constant downward acceleration used in the ideal model [1][4].
Common mistakes and quick fixes
Mistake: Entering Launch angle (degrees) in radians while Angle unit is still set to degrees.
Fix: Change Angle unit to match your angle, or convert the angle before calculating.
Mistake: Using different reference levels for Start height y0 (selected unit) and Landing height y_land (selected unit) .
Fix: Measure both from the same zero level, such as ground = 0 or platform base = 0.
Mistake: Filling in Initial speed (selected unit per second) but forgetting that Input method is set to Components.
Fix: Check Input method first. In Components mode, enter Initial horizontal velocity v0x (selected unit per second) and Initial vertical velocity v0y (selected unit per second) instead.
Mistake: Typing a negative value for Gravity g (selected unit per second squared) .
Fix: Enter gravity as a positive magnitude, such as about 9.80665 in SI or 32.174 in Imperial.
Mistake: Assuming Time of flight to landing height (primary) is always the final landing time.
Fix: Also check Time of flight to landing height (second time, if any) . If two times appear, the primary time is the earlier crossing and the second time is the later one.
Mistake: Thinking a negative Vertical velocity at primary landing time means the answer is wrong.
Fix: A negative value is normal when the projectile is moving downward as it reaches the chosen landing height.
Limitations & Key Assumptions / Boundary Conditions
This calculator uses the ideal projectile-motion model: constant downward gravity, no air resistance, no spin, and no lift. Real objects can stay in the air for a different amount of time if drag or wind matters.
All vertical positions must use the same reference level. For example, if ground is 0 for Landing height y_land (selected unit), then Start height y0 (selected unit) must also be measured from that same ground level.
The calculator reports only positive times after launch. If the math gives t = 0 because the projectile starts at the same height as the chosen landing level, that starting instant is not counted as a flight time.
If the projectile crosses the chosen landing height twice, the calculator shows two times. The earlier one is the upward crossing, and the later one is the downward crossing.
If there is no real solution, the projectile never reaches the chosen landing height under the entered values. This can happen when the landing height is above the highest point of the path.
Results can look very sensitive when values are near zero or near the top of the path. Small rounding changes in angle, speed, height, or gravity can noticeably change the reported times.
Methodology
Model used
The calculator treats projectile motion as horizontal motion plus vertical motion under constant gravity [1]. Horizontal velocity stays constant, while vertical velocity changes linearly with time [1][4].
Step 1: get the launch components
If you use Speed + angle mode, the calculator first converts the launch speed into horizontal and vertical components.
v0x = v0 cos(θ)
v0y = v0 sin(θ)
If the angle is entered in degrees, it is converted to radians before using sine and cosine.
θrad = θdeg * (π / 180)
Step 2: solve for the time the projectile reaches the chosen landing height
Vertical position follows the standard constant-acceleration equation.
y(t) = y0 + v0y t - 0.5 g t^2
To find flight time to the chosen landing level, set y(t) = y_land and solve the quadratic.
(0.5 g) t^2 - v0y t - (y0 - y_land) = 0
D = v0y^2 + 2 g (y0 - y_land)
t = (v0y +/- sqrt(D)) / g
If the discriminant D is negative, there is no real time because the projectile never reaches that landing height. If there are two positive times, the smaller one is reported as the primary time and the larger one as the second time. Any time that is 0 or negative is not reported.
Step 3: compute the extra outputs
When the initial vertical velocity is upward, time to peak and maximum height come from the same constant-gravity model [1].
t_peak = v0y / g
y_max = y0 + v0y^2 / (2 g)
If v0y <= 0, there is no later upward peak, so t_peak is N/A and y_max = y0.
Vertical velocity at the primary landing time is found by
vy(t) = v0y - g t
The horizontal velocity output is just v0x, because it stays constant in the ideal model [1].
Mini example
Suppose you enter Components mode with v0x = 9 m/s, v0y = 0 m/s, y0 = 12 m, y_land = 0 m, and g = 9.80665 m/s^2.
D = 0^2 + 2(9.80665)(12) = 235.3596
t = (0 + sqrt(235.3596)) / 9.80665 = 1.565 s
vy = 0 - 9.80665(1.565) = -15.35 m/s
So the projectile reaches the landing height after about 1.565 seconds, and its vertical velocity then is negative, meaning it is moving downward.
What can make real results differ
This method assumes no air drag, constant gravity, and a fixed vertical reference frame. Real sports throws, long-distance launches, or very fast objects may differ because of drag, wind, spin, or changing gravity.