Adding custom cars, MLO maps, and clothing is what makes a FiveM roleplay server feel unique. But dropping a few .yft or .ymap files into your server and hoping they load is a recipe for missing models and “stream timeout” errors. FiveM uses a specific system to mount custom assets into GTA V, built around the stream folder, the fxmanifest.lua resource manifest, and data_file declarations. Get those three right and your assets load every time. This guide walks through each piece using the current naming from the official FiveM documentation.
How asset streaming actually works
Every custom asset in FiveM lives inside a resource — a folder containing an fxmanifest.lua file plus your asset files. There are two categories of files you’ll deal with:
- Stream assets — the actual game model files:
.yft,.ytd,.ydr,.ymap,.ytyp. These go in a folder namedstreaminside your resource and are loaded automatically. - Metadata files — XML files such as
vehicles.metaorhandling.metathat tell the game how to register and behave with the model. These are declared withdata_fileentries in the manifest.
Anything placed inside a stream folder is mounted into the game’s content system without needing an explicit manifest line. Metadata, by contrast, must be registered through data_file so GTA V’s extra-content mounting system knows what type of file it is.
The fxmanifest.lua basics
Every resource needs an fxmanifest.lua at its root. At minimum it declares the FXv2 version and the target game:
fx_version 'cerulean'
game 'gta5'
cerulean is the current resource manifest version. The game directive defines the supported game API set. With those two lines present, FiveM will scan the resource and automatically pick up any stream folder it finds.
Streaming a custom map (ymap / ytyp)
Map mods are the simplest case because they are pure stream assets. Create your resource and drop the map files into a stream subfolder:
my_custom_map/
├── stream/
│ ├── myinterior.ymap
│ └── myinterior.ytyp
└── fxmanifest.lua
The manifest can be as small as the example below. The optional this_is_a_map flag signals FiveM to treat the resource as a map resource:
fx_version 'cerulean'
game 'gta5'
this_is_a_map 'yes'
YMAP and YTYP files placed in stream load automatically — no extra manifest entries are required beyond the basics above. Add the resource to your server.cfg with ensure my_custom_map and restart.
Streaming a custom vehicle
Cars need both the model files (in stream) and metadata files registered via data_file. A typical layout:
my_car/
├── stream/
│ ├── mycar.yft
│ ├── mycar_hi.yft
│ ├── mycar.ytd
│ └── mycar+hi.ytd
├── data/
│ ├── vehicles.meta
│ ├── carcols.meta
│ ├── carvariations.meta
│ └── handling.meta
└── fxmanifest.lua
The metadata files are not in stream; they’re registered in the manifest. Each must be listed in a files block so it gets packaged, and then declared with a data_file entry of the correct type:
fx_version 'cerulean'
game 'gta5'
files {
'data/vehicles.meta',
'data/carcols.meta',
'data/carvariations.meta',
'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 'HANDLING_FILE' 'data/handling.meta'
The files block adds the metadata to the resource packfile so clients download it; the data_file line tells the game engine how to interpret each one. Globbing is supported, so 'data/*_handling.meta' would also work if you split files per vehicle.
Common data_file types
| data_file identifier | Used for |
|---|---|
VEHICLE_METADATA_FILE | Vehicle definition (vehicles.meta) |
CARCOLS_FILE | Vehicle colors / mod kits (carcols.meta) |
VEHICLE_VARIATION_FILE | Vehicle variations (carvariations.meta) |
HANDLING_FILE | Handling / physics data (handling.meta) |
SHOP_PED_APPAREL_META_FILE | Clothing / apparel shop metadata |
PED_OVERLAY_FILE | Ped decorations / overlays |
Streaming custom clothing
Clothing follows the same pattern as vehicles: the drawable and texture files (.ydd, .ytd) go in stream, while the apparel metadata is declared with a data_file such as SHOP_PED_APPAREL_META_FILE. Most server owners, however, use a dedicated clothing framework (EUP-style add-ons or a clothing-store resource) that bundles the correct manifest entries for you. If you’re using one of those, follow its packaging conventions rather than hand-rolling the metadata, because component numbering is easy to get wrong.
Loading and testing your assets
- Place the resource folder in your server’s
resourcesdirectory (a subfolder prefixed with[like[vehicles]keeps things organized). - Add
ensure my_carto yourserver.cfg. - Restart the server or run
refreshthenensure my_carfrom the console. - Watch the server console for stream errors and use
resmonin-game (F8 →resmon 1) to confirm the resource is running.
If a custom car spawns as a default Vanilla model or your map interior is invisible, it almost always means a metadata file is missing a data_file line, or a stream asset name doesn’t match the model name in the meta. For deeper troubleshooting, our FiveM resmon performance guide shows how to spot which resources are misbehaving. Streaming heavy add-on packs also needs headroom, which is why a properly provisioned host matters — see our dedicated FiveM hosting plans if you’re outgrowing a home box. Full reference material is also in the XGamingServer FiveM docs, and if you’re building your framework from scratch, start with our QBCore installation guide.
Frequently asked questions
Do I need to list every .yft and .ytd file in fxmanifest.lua?
No. Files placed inside a stream folder are mounted automatically and do not need manifest entries. Only metadata files (like vehicles.meta) require a files block plus a data_file declaration.
Why does my custom car spawn as a stock vehicle?
This usually means the vehicles.meta wasn’t registered. Confirm you have data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta' in the manifest and that the model name in the meta matches the .yft filename in your stream folder exactly.
Can I put multiple cars in one resource?
Yes. Drop all model files into a single stream folder and combine their definitions into one set of meta files, or use globbing such as data_file 'HANDLING_FILE' 'data/*_handling.meta' to load many files at once. Keep an eye on stream size, since large packs increase client download times and memory use.
Ready to play?
Run your own FiveM server with XGamingServer
Spin up an always-on FiveM server your friends can join in minutes — no port-forwarding, no tech headaches.







