Skip to main content
TRACK A·ADD CONTENT·Verified June 2026 · Lua 5.4 · ox_lib 3.x
Learning with an AI assistant?
Copies this lesson plus 2026 ground rules (no lua54 'yes', Cfx.re Portal, correct callback signatures) as a ready-to-paste mentor prompt.

Add-on vehicles: the complete process

Add-on vehicles are the most common customization on FiveM servers. This is the definitive guide - not just "put files in a folder," but understanding every file type, every data_file line, and why each one matters. After this lesson you can add any vehicle from any source.

You'll build
A fully working add-on vehicle resource with model files, handling, vehicles.meta, carcols, and a spawn command.
Time
~30 minutes
You need
A local FiveM server, a downloaded add-on vehicle (car folder with .yft/.ytd/.meta files).
You'll learn
The complete add-on vehicle pipeline: file types, folder structure, data_file lines in fxmanifest, handling.meta and vehicles.meta integration, spawning, and troubleshooting invisible vehicles.
BEFORE YOU START

Build it

Prepare the folder structure

Every file is in the right place.
code
resources/my_addon_car/
fxmanifest.lua
data/
handling.meta
vehicles.meta
carcols.meta
carvariations.meta
stream/
modelname.yft        <- vehicle 3D model
modelname_hi.yft     <- high-detail interior
modelname.ytd        <- textures
modelname+hi.ytd     <- high-detail textures

Most add-on car downloads already have this structure. Verify before proceeding.

Write the fxmanifest

FiveM knows how to load every file.
code
fx_version 'cerulean'
game 'gta5'

description 'My Add-On Vehicle'

files {
'data/**/*.meta',
}

data_file 'HANDLING_FILE'          'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE'  'data/vehicles.meta'
data_file 'CARCOLS_FILE'           'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'
data_file 'VEHICLE_LAYOUTS_FILE'   'data/vehiclelayouts.meta'

The data_file lines are critical. Each one tells FiveM: "parse this file and merge it into the game." Without them, your vehicle exists on disk but the game doesn't know about it.

Note two things about the files {} block. First, anything inside a stream/ folder auto-registers, so you do NOT list .yft/.ytd there - files {} only needs to declare the meta data files. Second, many packs ship a vehiclelayouts.meta; if yours does, register it with VEHICLE_LAYOUTS_FILE (missing it causes seating and entry bugs). If your pack has no vehiclelayouts.meta, drop that one line.

The spawn name for this vehicle comes from the <modelName> entry in vehicles.meta - that string is what you type to spawn it, so open vehicles.meta and note it before testing.

Verify the model name in vehicles.meta

You know the spawn code.

Open data/vehicles.meta. Find <modelName>:

code
<modelName>mycar</modelName>

This is your spawn name. It must match the stream file names (e.g., mycar.yft, mycar.ytd). If they don't match, the vehicle won't spawn.

Also check:

  • <gameName> - the display name in trainers
  • <vehicleClass> - VC_SPORT, VC_SEDAN, etc.
  • <handlingId> - must match a <handlingName> in handling.meta

Spawn and test

The vehicle appears and drives correctly.

Spawn and test the vehicle with a trainer or an in-game admin menu, using the spawn name from <modelName> (for example mycar). No code needed.

Keep reading the full lesson

Sign in to start, then unlock every step of this lesson and the full FiveM School with a membership.

Still ahead in this lesson
  • Common failures

The remainder of Add-on vehicles: the complete process is available to FiveM School members.