Adding custom props to a FiveM server
Signs, furniture, barriers, food models for a restaurant script — custom props are everywhere on roleplay servers. A prop is a model plus textures plus a small definition file that tells the game the model exists. Miss the definition and the prop simply never appears.
Short answer: Stream the prop’s .ydr (model), .ytd (textures) and optionally .ybn (collision) in stream/, and include a .ytyp that defines the archetype; declare it with data_file 'DLC_ITYP_REQUEST' 'stream/myprops.ytyp'. Spawn props from scripts with RequestModel and CreateObject, or place them permanently in a .ymap. Check model names with IsModelInCdimage and keep textures small.

#The files
| File | Contains |
|---|---|
.ydr | The prop model (drawable) |
.ytd | Its textures (or embedded in the ydr) |
.ytyp | Archetype definitions: name, texture dictionary, LOD distance, flags |
.ybn | Collision (optional) |
.ymap | Placed instances in the world (optional) |
fx_version 'cerulean'
game 'gta5'
data_file 'DLC_ITYP_REQUEST' 'stream/myprops.ytyp'#Spawning from a script
local model = `my_sign_01`
if not IsModelInCdimage(model) then return print('prop not found') end
RequestModel(model)
while not HasModelLoaded(model) do Wait(0) end
local obj = CreateObject(model, 215.0, -810.0, 30.7, false, false, false)
PlaceObjectOnGroundProperly(obj)
FreezeEntityPosition(obj, true)
SetModelAsNoLongerNeeded(model)Networked props that everyone must see are better created on the server — see server-side entities.
#Permanent placement with a .ymap
For props that are part of the world (a sign on a building, benches in a park), place them in CodeWalker and save a .ymap in the same resource. They load like map data and cost no script time — see ymaps explained and CodeWalker map editing.
#Common problems
| Symptom | Cause |
|---|---|
| Prop never appears | .ytyp missing or not declared with DLC_ITYP_REQUEST |
| Prop is pink/untextured | Texture dictionary name in the ytyp does not match the .ytd |
| Players walk through it | No collision (.ybn) or collision not in the ytyp |
| Pops in late | LOD distance in the ytyp too small |
Large prop packs add texture memory — see oversized assets.
Questions
How do I add a custom prop to FiveM?
.ydr, .ytd and .ytyp in a resource and declare the ytyp with data_file 'DLC_ITYP_REQUEST'.Why is my custom prop invisible?
.ytyp is missing or not declared, so the game does not know the archetype.How do I spawn a custom prop?
RequestModel, wait for HasModelLoaded, then CreateObject.How do I place props permanently?
.ymap with CodeWalker and stream it.Ready to pick a map?
Twelve themes on three base map styles, $8 each, instant download.