Optimal launch angle calculator
On flat ground with no air, the farthest throw always leaves at 45 degrees: at 20 m/s that reaches 40.78864851911713 m, the speed squared divided by g. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Speed
- 20
- Gravity
- 9.80665
- Optimal angle deg
- 45
- Optimal angle rad
- 0.7853981634
- Max range
- 40.7886485191
- Time of flight
- 2.8841929963
When you throw or fire a projectile from ground level onto flat ground, there is a single launch angle that maximises how far it travels before landing again. Under ideal vacuum kinematics with constant gravity, that angle is always forty-five degrees above the horizontal, and the maximum range simplifies to launch speed squared divided by g. This calculator takes launch speed and an optional gravity value and returns that optimal angle in degrees and radians, the maximum horizontal range, and the matching flight time and peak height at that angle. Use it to size a trebuchet throw, check sports or classroom estimates, or set game-physics targets before adding drag.
Why forty-five degrees maximises range on level ground
Ideal projectile motion treats the horizontal velocity as constant and the vertical velocity as linearly decreasing under a fixed downward acceleration. The projectile returns to launch height when the vertical displacement integral closes, which produces the compact range formula R equals v squared times the sine of twice the launch angle, all divided by g. The sine function reaches its maximum value of one when its argument is ninety degrees, so twice the launch angle equals ninety degrees and the optimal elevation is exactly forty-five degrees.
At that angle the horizontal and vertical launch components are equal, each equal to v over the square root of two, and the range collapses to the simple expression R_max equals v squared over g. Complementary angles such as thirty and sixty degrees share the same range under ideal conditions, but neither beats forty-five degrees on flat ground. This derivation assumes launch and land at the same height, no air resistance, no wind, and no Earth curvature.
If the landing surface is lower than the launch point, the optimal angle drops below forty-five degrees; if it is higher, the optimum rises. Always treat the forty-five-degree result as the classic level-ground benchmark, then adjust geometry or drag in a separate model when those effects matter.
How to enter speed and gravity correctly
Speed is the full launch magnitude in metres per second, not a separate horizontal or vertical component and not a kinetic-energy figure. It must be strictly positive and finite; a zero launch speed produces no trajectory and is rejected with an invalid-input error rather than returning a zero range that could look like a successful solve. Gravity is the constant downward acceleration in metres per second squared.
When you omit it, the capability uses the conventional standard of nine point eight zero six six five metres per second squared, which matches common engineering tables for Earth at sea level. You may override gravity for lunar homework, classroom problems that fix g at ten, or game worlds with custom acceleration, as long as the value stays finite and strictly positive. Keep units consistent throughout: metres and seconds for every quantity.
Mixing kilometres per hour for speed with a g expressed in centimetres will yield a number that is arithmetically correct but physically meaningless for the problem you intended.
What you can do with it
Physics homework and lab checks
Confirm that students know the level-ground optimum is forty-five degrees and that R_max equals v squared over g for a given launch speed and classroom gravity.
Sports and ballistics rough estimates
Get a quick vacuum upper bound on throw or shot distance before adding drag, spin or wind in a more complete model.
Game and simulation parameter setup
Pick a launch speed that hits a target maximum distance under ideal gravity at the optimal angle, then tune drag against that baseline.
FAQ
What is the optimal launch angle for maximum range on level ground?
Under ideal vacuum kinematics with launch and land at the same height, the optimal elevation is always 45 degrees above the horizontal. The maximum range is then R_max = v² / g.
What formula does this calculator use?
It maximises R = v² · sin(2θ) / g, which peaks at θ = 45° where sin(2θ) = 1, so R_max = v² / g. Flight time and peak height use the matching textbook expressions at that angle.
Why does zero launch speed return an error?
A zero speed has no trajectory and no meaningful range.
Does the calculator include air resistance?
No. Motion is vacuum kinematics with constant gravity and no drag. Real projectiles travel shorter distances; use the result as an upper-bound reference on level ground.
Is the optimal launch angle range calculator free?
The browser tool is free and runs entirely on your device.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/mech/projectile-max-range-angle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"speed":20}'const res = await fetch("https://api.kit.forhosting.com/mech/projectile-max-range-angle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"speed": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/projectile-max-range-angle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"speed": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/projectile-max-range-angle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"speed":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"speed":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/projectile-max-range-angle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"speed": 20
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.projectile_max_range_angle",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The browser tool is free and runs locally; the same pure arithmetic is available over the API at the published base price of $0.002 per successful request.
How to enter speed and gravity correctly
The implementation never clamps, wraps or silently substitutes bad inputs; validation fails loudly so pipelines and students can fix the payload instead of trusting a hidden default.
Reading the result for homework, design and pipelines
At forty-five degrees the flight time is two v times sine of forty-five over g, and the peak height is half of the maximum range divided by two, or equivalently v squared over four g. Failed validation never charges balance. When air drag, Magnus force or uneven terrain matter, treat this max range as the vacuum upper bound on level ground and compare it against your more detailed simulator rather than replacing that model. The response returns the optimal angle in degrees and radians, the maximum range, the echoed speed and gravity actually used, the time of flight and the maximum height achieved when launching at that optimal angle, plus a units object that labels each field. Because the optimum on level ground is constant, the angle fields are always forty-five degrees and pi over four radians under valid input; the useful variation lives in max_range, which scales with the square of speed and the inverse of gravity. The published base price of $0.002 applies only to successful API requests.