Car mass center calculator
Front wheel readings rising from 4,000 to 4,140 when the rear is lifted 0.25 m put a car's centre of mass 0.5 m above the ground. Enter wheelbase, tracks and six scale readings to get its position in all three directions. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Wheelbase
- 2.5
- Front track
- 1.6
- Rear track
- 1.6
- Front left
- 4,000
- Front right
- 4,000
- Rear left
- 3,000
- Total load
- 14,000
- Front axle load
- 8,000
- Rear axle load
- 6,000
- Longitudinal
- 1.4285714286
This car mass-center calculator reports the three-dimensional center of mass of a four-wheel vehicle from axle track widths, wheelbase, four level-ground wheel-load readings, and a second pair of front-wheel readings taken after the rear axle is raised by a known height. Longitudinal position is the load-weighted distance from the rear axle to the mass center. Lateral position is the load-weighted offset from the vehicle centerline using the front and rear tracks as moment arms. Vertical position uses the SAE raised-rear identity with incline angle θ equal to the arctangent of raise height over wheelbase.
What the car mass center is and how tracks and wheel loads locate it
The center of mass of a car is the unique point at which the vehicle's entire weight may be treated as a single concentrated force for statics and for first-order pitch and roll. On level ground four wheel scales read the load under each tyre; those four numbers already locate the mass center in the ground plane once you know where the contact patches sit.
Place the origin at ground level on the rear-axle centerline, with x pointing forward toward the front bumper, y pointing to the right of the driver in a left-hand-drive layout, and z pointing up. The front axle then sits at x equal to the wheelbase L, the rear axle at x equal to zero, the front wheels at plus or minus half the front track, and the rear wheels at plus or minus half the rear track.
A perfectly symmetric car with equal left and right loads therefore sits at y equal to zero, while a car that is heavier on the right returns a positive lateral coordinate. These two identities are exact for a rigid vehicle on a level plane; they do not require a raised measurement and they are independent of ride height. They fail only when W is zero, because every coordinate is a load-weighted average and division by zero is undefined.
Lengths are metres; loads may be newtons or kilogram-force so long as every load uses the same unit, because the unit cancels in every ratio.
How the raised-rear measurement gives the vertical coordinate
Level-ground wheel loads cannot constrain height: four contact patches on a plane tell you nothing about how high the mass sits above that plane. The SAE shop method lifts the rear of the car by a known height h while the front wheels stay on the scales, then reads the front axle again. Raising the rear tilts the chassis by an angle θ whose tangent is h divided by the wheelbase L, so θ equals arctangent of h over L.
Load then transfers toward the front, and the change in front axle load ΔW_f together with that angle locates the height of the mass center above the ground contact plane: z equals ΔW_f times L divided by (W times tan θ). If you choose h and the raised front loads so that ΔW_f is 280 force units on a 14000-unit car with L equal to 2.5 metres and h equal to 0.25 metres, tan θ is 0.1 and z comes out at half a metre — a typical passenger-car figure.
The raise must be greater than zero or tan θ vanishes and the height identity divides by zero. Use the same load unit as the level readings. The calculator does not add a separate tyre radius: z is the height of the mass center above the plane of the contact patches, which is the plane your scales sit on.
What you can do with it
Corner-weight a road or race car
Turn four scale pads and a measured rear raise into longitudinal, lateral, and vertical CG coordinates so ballast and ride height can be compared on the same millimetre scale.
Vehicle-dynamics homework and labs
Check student work that asks for the mass-center location of a four-wheel vehicle given track widths, wheelbase, and a level-plus-raised load sheet.
FAQ
What coordinate system does the car mass-center calculator use?
The origin sits on the ground at the rear-axle centerline. Longitudinal x is metres forward from the rear axle, lateral y is metres to the right of the vehicle centerline, and vertical z is metres above the ground contact plane.
Why do I have to raise the rear of the car?
Four level-ground wheel loads locate the mass center only in the ground plane. Height needs a second measurement: raise the rear by a known h, re-weigh the front, and apply z = ΔW_f·L / (W·tan θ) with θ = atan(h/L).
What happens if the four wheel loads sum to zero?
Failed validation is not billed. At least one level wheel load must be strictly positive.
Which units should I send for lengths and loads?
Send wheelbase, tracks, and raise height in metres. Send all six load fields in one consistent unit — newtons, kilogram-force, or scale kilograms. Load units cancel in the ratios, so mixed load units are the error to avoid.
What if the front readings drop when I raise the rear?
The calculation is refused. Raising the rear must shift load onto the front axle; a drop would place the centre of mass below the ground, so the tool rejects it instead of reporting a negative height.
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/phys/car-mass-center \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"wheelbase":2.5,"front_track":1.6,"rear_track":1.6,"front_left":4000,"front_right":4000,"rear_left":3000,"rear_right":3000,"raise_height":0.25,"raised_front_left":4140,"raised_front_right":4140}'const res = await fetch("https://api.kit.forhosting.com/phys/car-mass-center", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"wheelbase": 2.5,
"front_track": 1.6,
"rear_track": 1.6,
"front_left": 4000,
"front_right": 4000,
"rear_left": 3000,
"rear_right": 3000,
"raise_height": 0.25,
"raised_front_left": 4140,
"raised_front_right": 4140
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/car-mass-center",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"wheelbase": 2.5,
"front_track": 1.6,
"rear_track": 1.6,
"front_left": 4000,
"front_right": 4000,
"rear_left": 3000,
"rear_right": 3000,
"raise_height": 0.25,
"raised_front_left": 4140,
"raised_front_right": 4140
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/car-mass-center", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"wheelbase":2.5,"front_track":1.6,"rear_track":1.6,"front_left":4000,"front_right":4000,"rear_left":3000,"rear_right":3000,"raise_height":0.25,"raised_front_left":4140,"raised_front_right":4140}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"wheelbase":2.5,"front_track":1.6,"rear_track":1.6,"front_left":4000,"front_right":4000,"rear_left":3000,"rear_right":3000,"raise_height":0.25,"raised_front_left":4140,"raised_front_right":4140}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/car-mass-center", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"wheelbase": 2.5,
"front_track": 1.6,
"rear_track": 1.6,
"front_left": 4000,
"front_right": 4000,
"rear_left": 3000,
"rear_right": 3000,
"raise_height": 0.25,
"raised_front_left": 4140,
"raised_front_right": 4140
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.car_mass_center",
"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.
Limits
max_abs | 1000000000000 |
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
A total load of zero is rejected with invalid_input because every coordinate divides by the sum of the four wheel loads.
What the car mass center is and how tracks and wheel loads locate it
The longitudinal coordinate is the first moment of the axle loads: x equals L times (front_left plus front_right) divided by total load W. The lateral coordinate uses each track as the moment arm of that axle: y equals the sum of (front_right minus front_left) times front_track over two plus (rear_right minus rear_left) times rear_track over two, all divided by W.
How the raised-rear measurement gives the vertical coordinate
Raising the rear must increase the front axle load; a decrease would imply a mass center below the ground, which this calculator rejects as invalid_input rather than publishing a negative height.
Input contract, errors, units, and where a CG figure belongs
Lengths must be strictly positive. Loads must not be negative. Race engineers use the three coordinates to set ballast, compare left-right wedge, and check that a ride-height change did not walk the mass center. Vehicle-dynamics courses use the same identities as a first numerical check against a scale-sheet. POST a JSON body with ten required finite numbers: wheelbase, front_track, rear_track and raise_height in metres, plus the four level wheel loads front_left, front_right, rear_left, rear_right and the two raised front loads raised_front_left and raised_front_right in one consistent load unit. Aliases such as L, Tf, Tr, FL, FR, RL, RR and h are accepted so spreadsheets and typed forms can reuse the same contract. Each field may arrive as a JSON number or as a strict decimal string, including scientific notation; hex prefixes, embedded spaces, and empty strings fail with invalid_input naming the field. On success the body echoes the ten inputs, reports total_load and the two axle totals, and returns longitudinal, lateral, and vertical in metres together with the incline angle in radians, a formula string, and the method tag sae_raised_rear_wheel_loads. On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, invalid_input is not billed, and nothing is stored after the response returns.
Integration use cases
Fleet and prototype scale-sheet fixtures
Generate deterministic CG columns from workshop scale sheets or continuous-integration fixtures without re-implementing the SAE raised-rear identities in every service.
Technical questions
What does the car mass-center calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.