FiveM Stream Folder Layout: How Resources Ship Custom Assets
Files in a resource's stream/ folder auto-load on the client by extension. Here is the documented layout, what gets auto-detected, and what needs explicit registration.
FiveM resources can ship custom game assets - vehicles, props, maps, textures, etc. - by placing them in a stream/ folder at the resource root. The platform auto-detects the file type by extension and loads it on clients when the resource starts. This post covers the documented layout and the auto-detection rules.
The basic resource structure
A typical custom-vehicle resource looks like this:
my-car-pack/
├── fxmanifest.lua
├── stream/
│ ├── carname.yft
│ ├── carname_hi.yft
│ └── carname.ytd
└── data/
├── handling.meta
├── vehicles.meta
├── carcols.meta
└── carvariations.meta
The stream/ folder contents do not need to be listed in fxmanifest.lua. The platform discovers them automatically and ships them to clients on resource start.
What auto-loads from stream/
FiveM detects the asset type by file extension. Common extensions you will place in stream/ for a vehicle resource:
.yft- vehicle and prop models.ytd- texture dictionaries.ycd- clip dictionaries (animations).ymap- map placement files.ymf- meta map data.ydr- drawables (props).ybn- bound (collision) files.ydd- drawable dictionaries
You can also organize stream/ with subfolders - this is purely for human organization, the engine flattens the namespace and loads everything regardless of subfolder depth.
What does NOT auto-load (needs fxmanifest registration)
The data files live in a separate folder (commonly data/) and must be explicitly registered in fxmanifest.lua using files + data_file directives. From the official docs, data_file "adds a data file of a specified type to the game extra content system."
For a vehicle pack, the typical fxmanifest registration is:
fx_version 'cerulean'
game 'gta5'
files {
'data/handling.meta',
'data/vehicles.meta',
'data/carcols.meta',
'data/carvariations.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'
Both the files entry AND the data_file entry are required for each meta file. files ships the file to clients; data_file tells the engine what type of data file it is and registers it with the game's data system.
Cache and update mechanics
FiveM clients cache streamed assets locally. When you push an updated .yft with the same filename, clients with the old version cached may not pick up the new one until the cache is invalidated. Restarting the resource server-side and having clients reconnect typically refreshes their cache for that resource. Players can also manually clear the FiveM cache directory if they suspect a stale asset.
Resource startup in server.cfg
FiveM does not auto-start resources just because the folder exists. You need an ensure (or older start) line in server.cfg:
ensure my-car-pack
For folder-grouped resources (e.g. resources/[vehicles]/...), the [bracketed] folder convention causes the inside resources to load when their containing category is referenced, but each underlying resource still needs to be ensured (directly or indirectly) for FiveM to start it.
Common mistakes
- Placing meta files inside
stream/. They do not auto-register; they get streamed as raw files but never picked up by the data system. - Forgetting one of the two registration steps.
filesalone ordata_filealone breaks the meta. Both are required. - Using the same model name across two resources. Whichever loads first wins; the second silently does nothing.
Sources
Browse the lot
Drag, drop, drive. Lore-friendly originals and curated real-vehicle conversions for FiveM.
