How to Add Custom Cars to Your FiveM Server
Adding custom cars is one of the first things every FiveM server owner wants to do. Stock GTA vehicles get boring fast, and your players expect a lineup of custom whips — Lambos, widebody kits, JDM builds, you name it.
The problem is most guides skip over the parts that actually trip people up: broken handling, purple textures, streaming crashes, and performance tanks from loading 200 cars at once.
Here’s how to do it properly.
Addon vs Replace — Pick the Right Approach
Before you download anything, you need to understand the two types of vehicle mods:
Replace vehicles swap an existing GTA car model. If you replace the adder with a Lamborghini Aventador, every adder in the game now looks like an Aventador. Simple, no spawn codes needed, but you lose the original car.
Addon vehicles add entirely new vehicles with unique spawn names. You keep all the GTA cars and add new ones on top. This is what most servers use because you get full control.
My recommendation: Use addon vehicles for 90% of your cars. Only use replace if you specifically want to swap out a stock car everywhere (like replacing the police car model).
Where to Find Custom Cars
The main sources:
- GTA5-Mods.com — Largest library. Look for “FiveM Ready” in the description.
- Cfx Forum releases — Community-made vehicles optimized for FiveM
- Paid vehicle packs — Higher quality, usually FiveM-ready with proper handling
When downloading, look for these files in the archive:
.ytffiles (textures).yftfiles (3D model).ytdfiles (texture dictionary)handling.meta(vehicle physics)vehicles.meta(vehicle definition)carvariations.meta(liveries/colors)fxmanifest.luaor__resource.lua(resource manifest)
If the car comes with a fxmanifest.lua, you’re in luck — it’s already packaged as a FiveM resource.
Setting Up a Vehicle Resource (From Scratch)
If your car doesn’t come FiveM-ready, here’s how to package it yourself.
Step 1: Create the folder structure
resources/
└── [vehicles]/
└── your-car-name/
├── fxmanifest.lua
├── stream/
│ ├── your-car-name.yft
│ ├── your-car-name.ytd
│ └── your-car-name_hi.yft
├── data/
│ ├── handling.meta
│ ├── vehicles.meta
│ └── carvariations.meta
└── data/
I like putting all vehicle resources in a [vehicles] folder to keep things organized. FiveM treats bracket folders as categories — they don’t affect functionality.
Step 2: Create the fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
author 'Your Name'
description 'Custom Vehicle - Your Car Name'
version '1.0.0'
-- Stream all model/texture files automatically
files {
'data/handling.meta',
'data/vehicles.meta',
'data/carvariations.meta'
}
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'CARVARIATIONS_FILE' 'data/carvariations.meta'
The files block tells FiveM to include the data files. The data_file lines tell the game how to interpret them. The .yft and .ytd files in the stream/ folder are automatically streamed to players — you don’t need to list them.
Step 3: Add to server.cfg
ensure your-car-name
Or if you’re using a [vehicles] folder:
ensure [vehicles]
This ensures all resources inside the bracket folder.
Step 4: Restart and spawn
Restart your server and spawn the car using the model name defined in vehicles.meta. Usually it’s the filename of the .yft without the extension.
/car your-car-name
Fixing the Most Common Issues
Purple/missing textures
This means the .ytd file is missing, corrupted, or named incorrectly. The texture dictionary name must match the model name exactly. If your model is lamborghini.yft, your textures must be lamborghini.ytd.
Car spawns underground or flies away
Bad handling.meta. The handling values are way off — usually mass, suspension, or center of gravity. Either find handling values from a reliable source or use a handling editor resource to tune it in-game.
”Failed to load resource” error
Check your fxmanifest.lua for typos. The most common mistake is wrong file paths in the files block. Paths are relative to the resource root and case-sensitive on Linux.
Car model doesn’t appear (invisible)
The .yft file is likely too high-poly for FiveM streaming, or there’s a naming conflict with another resource. Check your server console for streaming errors. Also make sure you have both the regular .yft and the _hi.yft (high-detail model).
Game crashes when approaching the car
The model is too heavy. FiveM has streaming limits — if a single vehicle has 500k+ polygons or massive 4K textures, it’ll crash clients. Look for “FiveM optimized” versions of cars, which typically have reduced poly counts and compressed textures.
Performance: How Many Custom Cars Is Too Many?
This is where most servers mess up. They dump 300 custom cars into their server and wonder why players take 15 minutes to load in.
Every custom vehicle adds to your server’s streaming content. Players have to download all those models and textures before they can see them. Here’s a rough guide:
| Car Count | Load Impact | Recommendation |
|---|---|---|
| 1-30 | Minimal | Safe for any server |
| 30-80 | Noticeable | Fine with a good host |
| 80-150 | Significant | Need a caching proxy |
| 150+ | Heavy | Expect complaints |
Use a caching proxy
If you’re running more than 50 custom cars, set up a caching proxy to speed up downloads. Players only download new/changed files instead of everything every time. Search for adhesive and fileserver_add in the FiveM documentation for caching proxy setup.
Optimize your textures
Most car mods come with unnecessarily large textures. A 4K texture on a car roof that nobody zooms into is wasted bandwidth. Use tools like OpenIV to downscale textures from 4K to 2K or even 1K where it won’t be noticed.
Organizing Cars on Your Server
Once you have more than a handful of custom cars, organization matters. Here’s what I do:
resources/
└── [vehicles]/
├── [cars-sports]/
│ ├── lambo-aventador/
│ ├── ferrari-f40/
│ └── porsche-gt3/
├── [cars-jdm]/
│ ├── nissan-r34/
│ ├── toyota-supra/
│ └── mazda-rx7/
├── [cars-emergency]/
│ ├── custom-police/
│ └── custom-ambulance/
└── [cars-bikes]/
├── ducati-v4/
└── harley-fatboy/
This lets you ensure [vehicles] to load everything, or selectively ensure specific categories. It also makes it way easier to find and remove specific cars later.
Making Cars Available to Players
Just adding the car resource doesn’t mean players can access it. You need a way for them to spawn or buy vehicles. Common approaches:
Admin-only spawning — Use a command like /car modelname. Good for testing, not for players.
Vehicle shop scripts — Add the spawn name to your vehicle shop config. Most dealership scripts (like those for ESX, QBCore, and Qbox) let you add custom vehicles to the shop database.
For ESX, you’d typically insert into your vehicles table:
INSERT INTO vehicles (name, model, price, category)
VALUES ('Lamborghini Aventador', 'lamboadventor', 450000, 'super');
For QBCore/Qbox, you’d add it to shared/vehicles.lua:
['lamboadventor'] = {
name = 'Lamborghini Aventador',
brand = 'Lamborghini',
model = 'lamboadventor',
price = 450000,
category = 'super',
type = 'automobile',
shop = 'pdm',
},
Garage scripts — If you want certain cars to be VIP-only or earned through gameplay, configure your garage/dealership script accordingly.
Want to add custom hydraulics or other vehicle modifications? Check out our LMX Vehicle Hydraulics V2 — works with any custom car on ESX, QBCore, and Qbox.
Quick Checklist
Before you call it done:
-
.yft,.ytd, and_hi.yftfiles are in thestream/folder -
handling.meta,vehicles.meta,carvariations.metaare indata/ -
fxmanifest.luahas correctdata_fileentries - Resource is ensured in
server.cfg - Car spawns correctly with
/car modelname - No purple textures or physics glitches
- Added to your vehicle shop/dealership config
- Tested with multiple players (streaming works)
Wrapping Up
Custom cars are one of the easiest ways to make your server feel unique. The key is doing it cleanly — proper file structure, optimized textures, and not going overboard with quantity.
If you’re building a serious RP server, pair your custom vehicles with proper job scripts and gameplay systems. Check out our premium FiveM scripts for ESX, QBCore, and Qbox — including our Vehicle Hydraulics V2 for custom lowriders and stance builds.
Got questions? Drop by our Discord — we help with setup and troubleshooting.