Forza Horizon 6 Data Out sends one fixed 324-byte UDP packet per frame. It carries engine, input, motion, tyre, suspension, car and race data, and nothing else: no tyre wear, no track ID, no format choice. Horizon Labs turns the useful part of it into a set of HUD fields, listed in the last section. To switch the stream on, see the Data Out settings guide.
How the packet is built
Every value is one of three types: a signed integer (S), an unsigned integer (U) or a floating point number (F), followed by its size in bits. The packet starts with IsRaceOn (1 while you drive, 0 in menus) and a millisecond timestamp that can wrap to zero. Axes are in the car’s local space: X is right, Y is up, Z is forward.
The game sends data only while you are actively driving. Menus, pauses, replays, rewinds and the end of a race produce no packets. It is one-way: the game never reads anything back.
Engine and drivetrain
| Field | Type | Meaning |
|---|---|---|
EngineMaxRpm, EngineIdleRpm, CurrentEngineRpm | F32 | Redline, idle and current revs. |
Power | F32 | Watts. |
Torque | F32 | Newton-metres. |
Boost | F32 | Turbo or supercharger pressure, PSI above atmospheric. |
Fuel | F32 | 0.0 empty, 1.0 full. |
Gear | U8 | Current gear. |
DrivetrainType | S32 | 0 FWD, 1 RWD, 2 AWD. |
NumCylinders | S32 | Cylinder count. |
Driver inputs
| Field | Type | Range |
|---|---|---|
Accel, Brake, Clutch, HandBrake | U8 | 0 to 255. |
Steer | S8 | -127 full left, 0 centre, 127 full right. |
NormalizedDrivingLine | S8 | -127 to 127, position relative to the racing line. |
NormalizedAIBrakeDifference | S8 | -127 to 127, difference from the AI braking hint. |
Motion and position
- Acceleration (
AccelerationX/Y/Z), F32, in the car’s local space. This is what a G-force readout is built from. - Velocity (
VelocityX/Y/Z), F32, in the car’s local space. Comparing the sideways and forward parts gives the slip angle used for a drift angle readout. - Angular velocity (
AngularVelocityX/Y/Z), rad/s: pitch, yaw and roll rates. - Orientation (
Yaw,Pitch,Roll), radians. - World position (
PositionX/Y/Z), metres. - Speed, metres per second. Convert it to km/h or mph on your side.
Tyres, wheels and suspension
Each of these is sent four times, once per wheel (front left, front right, rear left, rear right).
| Field | Type | Meaning |
|---|---|---|
TireSlipRatio | F32 | 0 is full grip; an absolute value above 1.0 means grip is lost. |
TireSlipAngle | F32 | Same scale, for sideways slip. |
TireCombinedSlip | F32 | Same scale, both directions combined. |
TireTemp | F32 | Tyre temperature. |
WheelRotationSpeed | F32 | Radians per second. |
NormalizedSuspensionTravel | F32 | 0.0 at full stretch, 1.0 at full compression. |
SuspensionTravelMeters | F32 | Actual travel in metres. |
WheelOnRumbleStrip, WheelInPuddle | S32 | 1 when true, 0 when not. |
SurfaceRumble | F32 | Dimensionless value sent to controller force feedback. |
Car identity
CarOrdinal: a unique ID per make and model.CarClass: 0 (D) up to 7 (X).CarPerformanceIndex: 100 to 999.CarGroup: a car group identifier (U32).
Race and laps
BestLap,LastLap,CurrentLap: seconds, 0.0 when not applicable.CurrentRaceTime: seconds since driving started.LapNumber(U16) andRacePosition(U8).DistanceTraveled: total metres.SmashableVelDiffandSmashableMass: the speed lost and the mass of a smashable object you just hit.
Turning raw values into readable ones
- Speed: multiply metres per second by 3.6 for km/h, or by 2.237 for mph.
- Power: the packet is in watts. Divide by 745.7 for mechanical horsepower.
- Pedals: divide
Accel,Brake,ClutchandHandBrakeby 255 to get 0 to 100 percent. DivideSteerby 127 for a -1 to 1 range. - Revs: divide
CurrentEngineRpmbyEngineMaxRpmfor a rev-bar fill. - Tyre temperature: Forza’s page gives no unit. Horizon Labs treats the value as degrees Fahrenheit and converts it for display.
- Slip: the three slip values are normalised, so a threshold of 1.0 is a reasonable “grip is going” marker on any car.
- Timestamps:
TimestampMScan overflow back to zero, so use it for ordering packets, not as a clock.
Because packets arrive at the game’s frame rate, a HUD that redraws more often than the game renders only repeats the last value. Smoothing, such as the spring motion in the Designer, hides that without changing the data.
Which fields suit which HUD
- Dash: speed, gear, revs against the redline, boost and fuel.
- Pedals and wheel: the four input bytes, plus
Steerfor a wheel graphic. - Grip and drift: the slip values, tyre temperatures and the velocity pair. See the drift angle guide.
- Race info: the three lap times, race time, lap number and position.
- Racing-line aids: the driving line and AI brake difference values.
What FH6 does not send
Forza’s documentation is explicit about the differences with Forza Motorsport. Horizon 6 adds three fields that Motorsport lacks, CarGroup, SmashableVelDiff and SmashableMass, placed between NumCylinders and PositionX. It has no TireWear and no TrackOrdinal, which exist in Motorsport’s Dash format. It also has a single packet format: there is no choice between formats as in Motorsport. If you write or configure software for both games, parse them separately. For the Motorsport side, see Forza Motorsport support.
The packet has no drift angle and no G-force value. Those are computed by the receiving app from velocity and acceleration, so two apps can show slightly different numbers.
What Horizon Labs reads
For Forza Horizon 6, Horizon Labs exposes these HUD fields, which you can bind in the Designer (see your first HUD):
| Group | HUD fields |
|---|---|
| Speed and engine | speedKmh, speedMph, currentRpm, maxRpm, powerHp, torqueNm, boostPsi, fuelPct |
| Inputs | gear, throttle, brake, clutch, handbrake, steer, drivingLine, aiBrakeDiff |
| Motion | gForceLat, gForceLong, gForceVert, gForceHudReadout, pitch, roll, yaw, driftAngle |
| Tyres and suspension | tireSlipFL/FR/RL/RR, tireTempFL/FR/RL/RR, suspFL/FR/RL/RR |
| Car | carClass, carPerf, carDisplay, drivetrain |
| Race | lapNum, bestLap, lastLap, currentLap, raceTime, racePos |
Fields the HUD does not expose include per-wheel rotation speed, rumble strip and puddle flags, surface rumble, world position, distance travelled, cylinder count, car group and the smashable values. They are in the packet but have no HUD field in Horizon Labs. Compared with Forza Motorsport (2023), the Horizon list also has driftAngle, tireSlip*, drivingLine, aiBrakeDiff and carDisplay.
When a game does not send a field, the Designer flags bindings that depend on it. That is why the same HUD can behave differently across games. The full cross-game picture is in how game telemetry works.
Sources: Forza Horizon 6 Data Out Documentation (Forza Support). HUD field names are Horizon Labs’ own. Checked 2 November 2026.