How to add a custom car to FiveM

Updated 2026-07-23

An addon car is a vehicle with its own spawn name that lives alongside the stock cars instead of replacing one. Getting one working comes down to having the right files, referencing them from the right metas, and packaging everything so the server streams it. This guide walks through the whole flow and the most common reasons a car refuses to spawn.

The files a custom car needs

A working addon vehicle is a small set of files that reference each other by name:

  • The model: a .yft fragment (often with a matching _hi.yft for high detail) and a .ytd texture dictionary, all sharing the spawn name.
  • vehicles.meta: registers the model and its spawn name with the game. Without it the car simply does not exist.
  • carvariations.meta: colors, liveries, and extras per variation.
  • carcols.meta: paint and mod kit definitions.
  • handling.meta: driving physics. You can reuse a stock handling id to start, and tune later.

If you downloaded a car pack, all of these usually exist already. If you built the car yourself, the vehicle pack validator checks that the names line up and the metas reference files that actually exist.

Package it as a server resource

  1. 1Create a resource folder on the server, for example resources/[cars]/mycar.
  2. 2Put the .yft and .ytd files in a stream/ subfolder.
  3. 3Put the meta files next to them and declare each one in fxmanifest.lua with a files entry plus the matching data_file lines.
  4. 4Add ensure mycar to your server.cfg and restart the server.

If you prefer the dlc.rpf layout that GTA itself uses, the FiveM structure to DLC converter repacks a stream-style folder into a proper dlc.rpf addon pack for you.

The spawn name is the model file name. If your files are mycar.yft and mycar.ytd, then vehicles.meta must register mycar and that is what you type to spawn it.

Spawn and test it

In game, spawn the car with your admin menu (vMenu and similar menus have a spawn-by-name box) or a /car command if your server has one. From a script, use the CreateVehicle native with GetHashKey("mycar").

Not sure about a stock vehicle name? Every original spawn name is listed in our vehicle spawn names directory.

When the car does not spawn

The usual suspects, in order of how often they happen:

  • A name mismatch: vehicles.meta registers a name that does not match the .yft file name.
  • The .yft is too large: cars over roughly 16 MB or with oversized textures can fail to stream. Run the model through the vehicle optimizer to shrink it.
  • An "invalid fixup" or corrupt fragment error in the console: also a job for the optimizer, which rebuilds the fragment cleanly.
  • The resource never started: check the server console for ensure errors and confirm the fxmanifest data_file lines.

The vehicle pack validator catches the first two categories before you ever restart the server, which is usually faster than trial and error in game.

Frequently asked questions

Do I need a handling.meta for an addon car?
Yes, the car needs handling data, but the handling id can point at a stock vehicle to start with. Many packs ship exactly that and tune later.
What is the difference between addon and replace?
A replace resource overwrites a stock vehicle model and keeps the original spawn name. An addon registers a brand new spawn name and leaves the stock cars untouched. Addon is safer and what this guide covers.
Why does my car spawn with no textures?
The .ytd texture dictionary is missing, has the wrong name, or is not being streamed. It must share the spawn name and sit in the same resource.
Can I check the files before putting them on the server?
Yes. The vehicle pack validator checks names, metas, and file sizes in your browser, and the YFT preview shows the model in 3D before you upload anything.

Tools used in this guide

More guides