Horizontal projectile motion calculator
A ball that leaves a 20 m ledge horizontally at 15 m/s hits the ground about 2 seconds later. Enter the launch height and the sideways speed to get the fall time, the distance covered, the impact speed and the angle at which it strikes. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Height
- 20
- Horizontal speed
- 15
- G
- 9.80665
- Fall time
- 2.0196199771
- Range
- 30.2942996565
- Vertical impact speed
- 19.8057062485
A horizontal projectile is an object launched sideways with zero initial vertical velocity from a height above the ground. Under constant gravity and without air resistance, the vertical motion is free fall from rest while the horizontal motion proceeds at constant speed. Those two independent components completely determine how long the object stays in the air, how far it travels before impact, and how fast it is moving when it hits. This calculator takes launch height and horizontal speed—optionally a custom gravity value—and returns fall time, horizontal range, the downward vertical speed at impact, the total impact speed, and the impact angle below the horizontal. Negative launch heights are rejected with a clear validation error rather than silently producing imaginary flight times.
How horizontal projectile motion is solved
Start from Newtonian kinematics with constant gravitational acceleration g directed downward and no air drag. The launch is purely horizontal, so the initial vertical velocity is exactly zero and the only initial velocity component is the horizontal speed you provide. Vertically the object falls a distance equal to the launch height from rest, which gives the classic free-fall relation height equals one half g times t squared.
Solving for time yields fall time t equal to the square root of two times height over g. That single scalar is the time of flight for level ground beneath the launch point. Horizontally there is no acceleration, so range equals horizontal speed times the same fall time.
At impact the vertical speed has grown to g times t, which is also the square root of two g height, while the horizontal speed is still the launch value. The total impact speed is the Euclidean norm of those two components, and the impact angle below the horizontal is the two-argument arctangent of vertical over horizontal speed expressed in degrees. Height must be non-negative; a negative height would place the launch point below the impact plane and is rejected with invalid input.
Horizontal speed must be non-negative as a magnitude. Gravity g must be a positive finite number and defaults to standard gravity nine point eight zero six six five metres per second squared when omitted.
Where horizontal projectile calculators show up in real work
Secondary-school and college physics courses constantly assign horizontal-launch problems: a ball rolls off a table, a package is dropped from a plane flying level, a diver leaves a board with only horizontal velocity. Teachers and auto-graders need one trusted oracle for fall time, range, and impact speed so answer keys stay consistent across sections. Sports and coaching analytics estimate how far a horizontally released ball or frisbee travels when air resistance is first ignored as a baseline before adding drag models.
Safety and packaging engineers bound drop distances and impact energies for objects that leave a conveyor or shelf with known horizontal speed. If you later need angled projectile motion with a launch elevation angle, vertical free fall only, or trajectory with air resistance, treat those as separate search intents and landings rather than overloading this horizontal-throw calculator page.
What you can do with it
Homework and exam answer keys
Generate fall time, range, and impact velocity for table-edge and cliff-launch textbook sets so teachers and auto-graders share one ground truth.
Sports and coaching baselines
Estimate how far a horizontally released ball travels and how hard it hits before adding drag, spin, or bounce models.
Safety drop and packaging bounds
Bound impact speed and flight time for objects leaving a shelf or conveyor at known height and horizontal speed.
FAQ
What does this horizontal projectile calculator assume?
Level ground (or a flat impact plane), constant gravity, no air resistance, and zero initial vertical velocity. Motion separates into free fall vertically and constant-speed motion horizontally.
What happens if height is negative?
Launch height cannot be below the impact plane; correct the sign or units and try again.
Can I change gravity?
Yes. Pass optional field g as a positive finite number. When omitted, standard gravity 9.80665 m/s² is used. Keep height and speed units consistent with g.
What does it cost?
The browser tool is free and runs locally.
Does the horizontal speed change how long the object falls?
No. The fall time depends only on the height and gravity, because the sideways and downward motions are independent. A faster launch lands farther away but hits the ground at the same moment as an object that is simply dropped.
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/horizontal-projectile \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"height":20,"horizontal_speed":15}'const res = await fetch("https://api.kit.forhosting.com/mech/horizontal-projectile", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"height": 20,
"horizontal_speed": 15
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/horizontal-projectile",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"height": 20,
"horizontal_speed": 15
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/horizontal-projectile", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"height":20,"horizontal_speed":15}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"height":20,"horizontal_speed":15}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/horizontal-projectile", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"height": 20,
"horizontal_speed": 15
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.horizontal_projectile",
"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
How horizontal projectile motion is solved
The pipeline is deterministic floating-point arithmetic: no random seeds, no wall-clock timestamps, no network calls, and no model drift, so identical inputs always produce identical JSON.
What you send and what you get back
Optionally send g as a positive gravity magnitude when you need lunar, planetary, or textbook nine-point-eight values instead of the default. Negative height fails with a message that launch height cannot be below the ground so clients can correct units or signs rather than guessing. Classic textbook checks include a twenty-metre height with fifteen metres per second horizontal speed under Earth gravity, a pure drop with zero horizontal speed where range is zero and impact is purely vertical, and a zero-height case where fall time and range are zero and impact speed equals the horizontal launch speed. Send height as a finite non-negative number for the launch elevation above the impact plane, and horizontal_speed as a finite non-negative number for the sideways launch speed. Missing required fields, non-numeric strings, NaN, and Infinity fail with invalid_input and are not charged. On success the response echoes cleaned height, horizontal_speed, and g, then fall_time, range, vertical_impact_speed, impact_speed, and impact_angle_deg, plus a units hint object, method horizontal_projectile, and a short formula string. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where horizontal projectile calculators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Technical questions
What is impact_angle_deg?
The angle of the velocity vector below the horizontal at the moment of impact, in degrees. It is atan2(vertical_impact_speed, horizontal_speed). Pure drops approach 90°; pure horizontal skims approach 0°.