# Scrub radius, kingpin inclination, caster and trail

> How the steering axis sets scrub radius, kingpin inclination (KPI), caster and mechanical trail, with formulas and a worked example: 5.19 degree KPI and caster, 39.1 mm scrub radius, 15.9 mm trail.

Scrub radius, kingpin inclination, caster and mechanical trail all describe one line: the **steering axis**, through the upper and lower ball joints. Kingpin inclination and caster are its tilt in the front and side views; scrub radius and trail are where it meets the ground relative to the contact patch.

| Quantity | View | Definition | Positive means |
|---|---|---|---|
| Kingpin inclination (KPI) | Front | Tilt of the steering axis from vertical | Top of the axis leans inward |
| Scrub radius | Front | Lateral distance on the ground from the steering axis to the contact patch center | Contact patch is outboard of the axis |
| Caster | Side | Tilt of the steering axis from vertical | Top of the axis leans rearward |
| Mechanical trail | Side | Longitudinal distance on the ground from the contact patch to the steering axis | Axis meets the ground ahead of the contact patch |

## Formulas

With the lower ball joint at \((x_L, y_L, z_L)\) and the upper at \((x_U, y_U, z_U)\), and the contact patch at \((x_{CP}, y_{CP}, 0)\):

$$\text{KPI} = \arctan\frac{y_L - y_U}{z_U - z_L} \qquad \text{caster} = \arctan\frac{x_L - x_U}{z_U - z_L}$$

Following the axis down to the ground (\(z = 0\)):

$$\text{scrub} = y_{CP} - \left(y_L + z_L\,\frac{y_L - y_U}{z_U - z_L}\right) \qquad \text{trail} = x_L + z_L\,\frac{x_L - x_U}{z_U - z_L} - x_{CP}$$

## Worked example

In the [docs example double wishbone](/docs/double-wishbone/) the ball joints are at \((5, 550, 120)\) and \((-15, 530, 340)\), and the contact patch is at \((0, 600, 0)\). The axis rises 220 mm while moving 20 mm inboard and 20 mm rearward, so

$$\text{KPI} = \text{caster} = \arctan\frac{20}{220} = 5.19^\circ$$

Below the lower ball joint the axis travels another 120 mm to the ground, moving \(120 \times 20/220 = 10.9\) mm outboard and forward. It meets the ground at \(y = 560.9\) mm and \(x = 15.9\) mm:

$$\text{scrub} = 600 - 560.9 = 39.1\ \text{mm} \qquad \text{trail} = 15.9 - 0 = 15.9\ \text{mm}$$

opensus reports the same four values in the readout.

## What they do

- **Scrub radius** is the lever arm that braking and drive forces have about the steering axis. A large scrub radius makes a front wheel's braking force pull the steering; small or slightly negative is common. Wheel offset and wider tires change it.
- **KPI** raises the car as the wheels steer, which gives self-centring at low speed, and reduces scrub radius for a given wheel packaging.
- **Caster** gains negative camber on the outside wheel as you steer, and with trail gives the driver steering feel.
- **Mechanical trail** is the lever arm that cornering forces have about the steering axis, adding to the tire's own pneumatic trail. More trail means heavier steering and stronger self-alignment. [Compliance](/docs/compliance/) shows how the resulting aligning torque deflects the steering.

opensus computes these at every position and steering angle, including multilinks with a virtual steering axis. See the readout as you move the **Steer** slider under the 3D view.

[Open in opensus](https://opensus.app/app/?design=%7B%22name%22%3A%22Docs%20example%3A%20double%20wishbone%22%2C%22front%22%3A%7B%22type%22%3A%22doubleWishbone%22%2C%22camber%22%3A0%2C%22toe%22%3A0%2C%22points%22%3A%7B%22ucaFront%22%3A%5B100%2C280%2C330%5D%2C%22ucaRear%22%3A%5B-100%2C280%2C330%5D%2C%22ucaOuter%22%3A%5B-15%2C530%2C340%5D%2C%22lcaFront%22%3A%5B100%2C200%2C150%5D%2C%22lcaRear%22%3A%5B-100%2C200%2C150%5D%2C%22lcaOuter%22%3A%5B5%2C550%2C120%5D%2C%22tieInner%22%3A%5B-70%2C200%2C150%5D%2C%22tieOuter%22%3A%5B-70%2C550%2C120%5D%2C%22wheelCentre%22%3A%5B0%2C600%2C228%5D%7D%7D%7D)

Source: https://opensus.app/docs/scrub-radius/ (last updated 2026-11-07)
