TUTORIALCUSTOM CARSVEHICLESSERVER SETUPADDON VEHICLESREPLACE VEHICLESFXMANIFESTCAR MODSVEHICLE MODSGTA CARSSTREAMINGHANDLING META March 16, 2026 · 7 min read

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:

  • .ytf files (textures)
  • .yft files (3D model)
  • .ytd files (texture dictionary)
  • handling.meta (vehicle physics)
  • vehicles.meta (vehicle definition)
  • carvariations.meta (liveries/colors)
  • fxmanifest.lua or __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 CountLoad ImpactRecommendation
1-30MinimalSafe for any server
30-80NoticeableFine with a good host
80-150SignificantNeed a caching proxy
150+HeavyExpect 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.yft files are in the stream/ folder
  • handling.meta, vehicles.meta, carvariations.meta are in data/
  • fxmanifest.lua has correct data_file entries
  • 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.

YBN
YBN Scripts
FiveM script developer at YBN. Building premium ESX, QBCore & Qbox resources.

Related Posts

Need scripts for your server?

Check out our premium FiveM resources — ESX, QBCore & Qbox supported.

Browse Premium Scripts → Free Scripts →