# Adding custom props to a FiveM server

> Add custom props to a FiveM server: stream the .ydr, .ytd and .ybn, declare the .ytyp with DLC_ITYP_REQUEST, then spawn with CreateObject or place a .ymap.

Source: https://fam-tools.com/guides/fivem-custom-props · FAM Tools · published 2026-09-11 · updated 2026-09-11 · about 9 min

**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.

## Key points

- `.ydr` + `.ytd` + `.ytyp` (+ `.ybn` for collision).
- Declare the ytyp with `DLC_ITYP_REQUEST`.
- Scripted: `RequestModel` → `CreateObject`.
- Permanent placement: a `.ymap`.
- No archetype = invisible prop.

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.

## 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) |

*fxmanifest.lua*

```lua
fx_version 'cerulean'
game 'gta5'

data_file 'DLC_ITYP_REQUEST' 'stream/myprops.ytyp'
```

## Spawning from a script

*client.lua*

```lua
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](https://pityus.net/guides/fivem-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](https://fam-tools.com/guides/fivem-ymap-guide) and [CodeWalker map editing](https://fam-tools.com/guides/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](https://fam-tools.com/guides/fivem-oversized-assets-warning).

## Questions

### How do I add a custom prop to FiveM?

Stream its `.ydr`, `.ytd` and `.ytyp` in a resource and declare the ytyp with `data_file 'DLC_ITYP_REQUEST'`.

### Why is my custom prop invisible?

Usually the `.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?

Save them into a `.ymap` with CodeWalker and stream it.

## Related

- https://fam-tools.com/guides/fivem-ymap-guide
- https://fam-tools.com/guides/codewalker-map-editing
- https://fam-tools.com/guides/fivem-remove-map-props
- https://fam-tools.com/guides/fivem-oversized-assets-warning
