Explainer

fxmanifest.lua Explained: Templates for Every Resource

You will be able to read any fxmanifest.lua, write one from scratch for props, peds, weapons, handling, minimaps or cars, and fix the console errors that point at it.

fxmanifest.lua explained: manifest templates for FiveM prop, ped, weapon, handling, minimap and car resources

fxmanifest.lua is the manifest file at the top of every FiveM resource folder. It tells the server which manifest version and game the resource targets (fx_version 'cerulean' and game 'gta5'), which scripts to run on the client and the server, which extra files to send to players, and which data files, such as a handling.meta or a .ytyp, to load with data_file. Models and textures in the resource's stream folder need no line: FiveM streams them automatically.

A basic manifest for a script resource looks like this:

fx_version 'cerulean'
game 'gta5'

author 'Your name'
description 'What this resource does'
version '1.0.0'

shared_script 'config.lua'
client_scripts {
    'client/*.lua'
}
server_script 'server/main.lua'

The sections below explain each line. Then come the exact manifests that the FiveM Tools exporters write for props, peds, weapons, handling and minimaps, plus a hand-written one for add-on cars.

What fxmanifest.lua is, and the old __resource.lua

The server reads each manifest when it scans your resources folder. The file is Lua, but each line is a declaration: a directive name followed by a value, like game 'gta5'. Lists go in braces, for example client_scripts { 'config.lua', 'map.lua' }, and -- starts a comment.

Older resources use __resource.lua with a resource_manifest_version line. That format is deprecated, and the Cfx.re docs say to use fxmanifest.lua and fx_version instead. To update an old resource, rename the file to fxmanifest.lua and replace the resource_manifest_version line with the two lines below.

The required lines: fx_version and game

fx_version 'cerulean'
game 'gta5'

fx_version sets the manifest version. cerulean is the current one, and older resources may say bodacious or adamant. Use cerulean for anything new. game says which game the resource is for: gta5 for FiveM, rdr3 for RedM, or common for code that runs on both games and uses no game-specific functions.

Everything else is optional. author, description and version are free-text labels that don't change how the resource runs. The full list of directives is in the Cfx.re resource manifest reference.

Scripts: client_script, server_script and shared_script

  • client_script runs on every player's game. FiveM sends the file to players automatically, so it needs no files entry.
  • server_script runs on the server only.
  • shared_script runs on both sides, which suits config files.

Each one has a plural form that takes a list, such as client_scripts { 'a.lua', 'b.lua' }. All three accept wildcards: 'client/*.lua' loads every .lua file in the client folder, and a ** pattern such as 'client/**/*.lua' also looks inside its subfolders.

files and data_file: loading .meta files

files adds files to the resource's packfile, which players download when the resource loads. List anything the client needs that isn't a client script: a .json that a client script reads with LoadResourceFile, the page named in ui_page, and .meta files.

data_file hands a file to the game's extra content system and says what kind of data it is, for example data_file 'HANDLING_FILE' 'meta/mycar_handling.meta'. The type must match the file, the path starts at the resource folder, and the path accepts wildcards. List the same .meta files under files as well: the Cfx.re docs example does, and so do the ped, weapon and handling exports here. The common types:

data_file typeFileWhat it loads
DLC_ITYP_REQUEST.ytypArchetypes for props and interiors
HANDLING_FILEhandling.metaVehicle handling
VEHICLE_METADATA_FILEvehicles.metaVehicle models
CARCOLS_FILEcarcols.metaMod kits and sirens
VEHICLE_VARIATION_FILEcarvariations.metaColors and mod kit per model
VEHICLE_LAYOUTS_FILEvehiclelayouts.metaSeats and entry animations
PED_METADATA_FILEpeds.metaPed definitions
WEAPONINFO_FILEweapons.metaWeapon stats
WEAPON_METADATA_FILEweaponarchetypes.metaWeapon model archetypes
WEAPON_ANIMATIONS_FILEweaponanimations.metaWeapon animation sets
PED_PERSONALITY_FILEpedpersonality.metaHow peds move with a weapon
WEAPONCOMPONENTSINFO_FILEweaponcomponents.metaWeapon attachments

The stream folder and this_is_a_map

Everything in stream, subfolders included, is streamed without a manifest line: .ydr, .ydd, .yft, .ytd, .gfx and the rest. The exception is a .ytyp, which also needs its DLC_ITYP_REQUEST line. this_is_a_map 'yes' marks the resource as a GTA map and reloads the map storage when the resource loads. The Prop Creator adds it to every prop resource. For what each file type holds, see GTA 5 file formats explained.

Other common lines: dependencies, ui_page and lua54

Manifests you download often use a few more directives:

LineWhat it does
dependencies { 'oxmysql' }Requires the named resources to load before this one. dependency 'name' does the same for one resource.
ui_page 'html/index.html'Sets the resource's NUI page. List the page and the files it uses under files.
loadscreen 'html/loadscreen.html'Uses an HTML file as the loading screen. List it under files as well.
server_only 'yes'Marks the resource as server-only, so players download nothing from it.
provide 'mysql-async'Lets the resource stand in for another one: it starts in its place when a resource requires that name.
escrow_ignore { 'config.lua' }Lists the files that Cfx.re Asset Escrow leaves unencrypted, such as a config.
lua54 'yes'Turned on Lua 5.4. Since June 2025 Lua 5.3 is deprecated and every Lua script runs on Lua 5.4, so new resources can leave this line out.

fxmanifest.lua templates for every resource

These are the manifests the exporters write, with project names replaced by placeholders such as my_props. The author and description lines are free text, so change them as you like.

Props: this_is_a_map and DLC_ITYP_REQUEST

fx_version 'cerulean'
game 'gta5'

author 'TeK - FiveM-Tools.com'
description 'Custom props - my_props (generated by fivem-tools.com)'

this_is_a_map 'yes'

data_file 'DLC_ITYP_REQUEST' 'stream/my_props.ytyp'

client_script 'cleanup.lua'

-- props: my_chair, my_table

The stream folder holds one .ydr per prop and my_props.ytyp, and the data_file path must match that file name exactly. cleanup.lua deletes the pack's spawned props when the resource stops, so a restart leaves no orphaned copies, and the comment lists the spawn names. The full walkthrough is in how to add custom props to FiveM, and the Prop Creator writes all of it for you.

Peds: PED_METADATA_FILE

fx_version 'cerulean'
game 'gta5'

author 'TeK - FiveM-Tools.com'
description 'Custom addon ped - my_ped (generated by fivem-tools.com)'

files {
    'peds.meta',
}

data_file 'PED_METADATA_FILE' 'peds.meta'

-- ped model: my_ped

peds.meta sits next to the manifest, and stream holds my_ped.yft, my_ped.ydd, my_ped.ytd and my_ped.ymt. With several peds, the Ped Creator (beta) keeps one peds.meta and writes one -- ped model: comment per ped. If you set a longer detail distance, it also adds client_script 'lod.lua' below the data_file line. That option is new and hasn't been tested in game yet. More in how to make a custom FiveM ped.

Weapons: the four weapon data files

fx_version 'cerulean'
game 'gta5'

author 'TeK - FiveM-Tools.com'
description 'Add-on weapon WEAPON_MYPISTOL (generated by fivem-tools.com)'

files {
    'meta/**/*.meta',
}

data_file 'WEAPON_METADATA_FILE' 'meta/mypistol/weaponarchetypes.meta'
data_file 'WEAPON_ANIMATIONS_FILE' 'meta/mypistol/weaponanimations.meta'
data_file 'PED_PERSONALITY_FILE' 'meta/mypistol/pedpersonality.meta'
data_file 'WEAPONINFO_FILE' 'meta/mypistol/weapons.meta'

client_script 'cl_weaponNames.lua'

The lines follow the base game's load order: archetypes first, then animations and ped personality, and weapon info last. With several weapons, the exporter keeps that order by type, so every archetype line comes before the first animation line. meta/**/*.meta matches the .meta files in every subfolder of meta, cl_weaponNames.lua sets the display name with AddTextEntry, and the model, mypistol.ydr, goes in stream. See how to make custom FiveM weapons and weapons.meta explained.

Weapon Creator

Fit a 3D model in the hand, set its stats and export a weapon pack with this manifest and all four .meta files written for you. In beta.

Open the Weapon Creator

Handling: HANDLING_FILE

fx_version 'cerulean'
game 'gta5'

author 'FiveM-Tools.com'
description 'mycar_handling - custom handling (generated by fivem-tools.com)'

files {
  'meta/*.meta'
}

data_file 'HANDLING_FILE' 'meta/mycar_handling.meta'

For more vehicles, drop more .meta files in meta and add one HANDLING_FILE line for each. The handlingName inside each file must match the vehicle's handlingId in vehicles.meta. Every field is explained in handling.meta explained, and the Handling Editor exports this resource for you.

Minimap: scripts only

game 'gta5'
fx_version 'cerulean'
author 'TeK - FiveM-Tools.com'
description 'Custom minimap - My Map (generated by fivem-tools.com)'

client_scripts {
    'config.lua',
    'map.lua'
}

shared_script 'postal.lua'
files {
    'postals.json'
}

There is no data_file line: the map tiles, the blank road layer and the Cayo Perico .gfx stream from stream/fivem-tools.com/my-map/ on their own. The last two directives only appear when you export with the postal script, and as this file shows, game can come before fx_version. See how to make a custom FiveM minimap and the Minimap Live Editor.

Add-on cars (written by hand)

None of the tools here export cars, so this template isn't generated. It uses the data_file types from the Cfx.re documentation. Keep only the lines for files your car actually ships.

fx_version 'cerulean'
game 'gta5'

files {
    'data/handling.meta',
    'data/vehicles.meta',
    'data/carcols.meta',
    'data/carvariations.meta',
    'data/vehiclelayouts.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'
data_file 'VEHICLE_LAYOUTS_FILE' 'data/vehiclelayouts.meta'

The model goes in stream: mycar.yft, mycar_hi.yft, mycar.ytd and, if the car has one, mycar+hi.ytd. Those names must match the modelName and txdName in vehicles.meta. Pick a model name that isn't in the GTA 5 vehicle list, or your files will replace the stock model with that name.

Common fxmanifest.lua errors and what they mean

Most problems show up in the server console when the resources are scanned or started. Replace my_props with your resource name:

Console messageWhat it meansFix
Couldn't find resource my_props.No folder with that name in resources.Make the ensure line match the folder name exactly, then run refresh.
my_props does not have a resource manifest (fxmanifest.lua)No manifest at the folder's top level. Often a zip was extracted into an extra folder, or the file is really named fxmanifest.lua.txt.Move the files up so resources/my_props/fxmanifest.lua exists, and fix the file name.
my_props exists in more than one place (...)Two copies of the same resource.Delete the copy you don't use.
[my_props] is a category, but has a resource manifest (...)Square brackets mark a category folder, not a resource.Rename the folder without brackets.
Resource my_props does not specify an `fx_version` in fxmanifest.lua.The fx_version line is missing or misspelled.Add fx_version 'cerulean'.
my_props has an outdated manifest (__resource.lua instead of fxmanifest.lua)An old-style manifest.Convert it as described above.
Couldn't start resource my_props.The resource was found but failed to start.Read the console lines just above it for the reason.

No error, but it doesn't work

  • Props are invisible or CreateObject fails: the DLC_ITYP_REQUEST line is missing, or its path doesn't match the .ytyp. Paths start at the resource folder, so include stream/. In your spawn script, call RequestModel and wait for HasModelLoaded before CreateObject.
  • A car still drives like stock: the HANDLING_FILE path is wrong, or the handlingName doesn't match. Many stock vehicles use a handling name that differs from the spawn name: across the 916 vehicles in the Handling Editor's stock list, 165 do, such as AMBULAN for ambulance and BFINJECT for bfinjection. And 82 handling names are shared, so editing BATI changes both bati and bati2. Check the vehicle's handlingId before you name your entry.
  • A ped or weapon doesn't exist in game: check that the .meta files are listed under files, that every data_file path points at a real file, and that the models are in stream. Give a weapon by its WEAPON_ name, such as WEAPON_MYPISTOL, not by its model name.

Frequently asked questions

Where can I download an fxmanifest.lua file?

You don't need to download one: fxmanifest.lua is a plain text file. Create a file with exactly that name in the resource's top folder and paste a template from this guide. On Windows, turn on file name extensions in File Explorer so the file isn't saved as fxmanifest.lua.txt by mistake.

What is the difference between ensure and start?

start runs a resource that is not running yet. ensure starts it if it is stopped and restarts it if it is already running, so you can also use it to reload a resource after you change it. The example server.cfg in the Cfx.re docs uses ensure for every resource.

Can one fxmanifest.lua load several .meta files of the same type?

Yes. Add one data_file line per file, or use a wildcard such as data_file 'HANDLING_FILE' 'metas/*_handling.meta', which the Cfx.re docs use as an example. List the same files under files so players download them.

Does the resource name have to match the folder name?

Yes. The resource name is the name of the folder that holds fxmanifest.lua, and nothing inside the manifest changes it. A folder called my_props starts with ensure my_props in server.cfg.