fxmanifest.lua Generator
Generate a valid fxmanifest.lua: fx_version, game, lua54, shared, client and server scripts, NUI page, files, data_file lines, dependencies and exports.
The fxmanifest.lua Generator builds the manifest every FiveM or RedM resource needs. You fill in scripts, NUI page, files, data_file entries, dependencies and exports, and it writes a clean fxmanifest.lua with warnings for the mistakes that stop a resource from loading.
What it is for
A manifest is short, but one wrong line costs you an hour: an NUI page that is not in files, a vehicle meta with a data_file line but no files entry. Use the generator when you start a new resource, when you turn a loose folder of add-on cars into a pack, or when you want to check an old __resource.lua style resource against a clean modern manifest.
Quick start
- Under Start from, pick Basic script, NUI resource or Vehicle pack. The preset keeps your Name and Author and fills the rest.
- In Resource, set
fx_version, the Game chips, Name, Author, Version, Repository and Description. - Add scripts in the Scripts panel. Type a path and press Enter or the plus button, or click one of the small
+ ...shortcut buttons under each list. - For NUI, fill in
ui_pageand your web files under NUI & files. - Add
data_filelines for meta files, and list dependencies and exports if you need them. - Fix anything in the amber warnings box, then download
fxmanifest.luafrom the code block and put it in the root of your resource folder.
Your manifest is saved in this browser, so you can come back and tweak it. Clear empties every field (it keeps game 'gta5', lua54 'yes' and version 1.0.0).
Presets
| Preset | What it sets |
|---|---|
| Basic script | shared_scripts config.lua, client_scripts client/*.lua, server_scripts server/*.lua |
| NUI resource | @ox_lib/init.lua and config.lua in shared, client and server globs, ui_page web/build/index.html, files web/build/index.html and web/build/**/*, dependency ox_lib |
| Vehicle pack | lua54 off, client script vehicle_names.lua, and six data_file lines for handling, vehicles, carcols, carvariations, vehiclelayouts and dlctext metas under data/**/ |
Options
Resource
| Option | Output | Default |
|---|---|---|
fx_version |
fx_version 'cerulean' |
cerulean (current). bodacious and adamant are there for old resources and trigger a warning. |
| Game | game 'gta5' for one game, games { 'gta5', 'rdr3' } for several |
gta5. Picking rdr3 also adds the required rdr3_warning line. common is for resources that run on any game. |
| Name, Author, Description, Version, Repository | name '...', author '...' and so on |
Version 1.0.0. Empty fields are left out. |
lua54 'yes' |
lua54 'yes' |
On. Lua 5.4 has been the default since mid 2025, so the line is optional on current servers, but keeping it does no harm and helps older artifacts. |
use_experimental_fxv2_oal |
use_experimental_fxv2_oal 'yes' |
Off. Experimental faster native calls for Lua 5.4. Test before you ship. |
Scripts
Three lists: shared_scripts, client_scripts and server_scripts. Each row can be edited in place, moved up with the arrow button or removed. Globs like client/*.lua work. The shortcut buttons add common entries:
| List | Shortcuts |
|---|---|
| shared_scripts | @ox_lib/init.lua, @qbx_core/modules/lib.lua, @es_extended/imports.lua, @es_extended/locale.lua, config.lua, shared/*.lua, locales/*.lua |
| client_scripts | client/*.lua, @qbx_core/modules/playerdata.lua, client/main.lua |
| server_scripts | @oxmysql/lib/MySQL.lua, server/*.lua, server/main.lua |
Order matters: scripts load in the order listed, and on each side shared_scripts load before the client or server scripts. Put @ox_lib/init.lua or @qbx_core/modules/lib.lua at the top of shared, and config.lua before any file that reads Config. Paths starting with @ point into another resource.
NUI and files
| Option | What it does |
|---|---|
ui_page |
Path inside the resource, or an http(s) URL for a dev server. |
files |
Files sent to clients. Globs like ** work. Shortcuts: html/**/*, web/build/**/*, stream/**/*.ytyp, locales/*.json. |
| Add ui_page and data_file paths to files automatically | On by default. Copies the ui_page path (unless it is a URL) and every data_file path into files { }, because clients never download anything that is not listed there. |
data_file
Add data_file adds a row with a type and a path. The type box suggests HANDLING_FILE, VEHICLE_METADATA_FILE, CARCOLS_FILE, VEHICLE_VARIATION_FILE, VEHICLE_LAYOUTS_FILE, DLCTEXT_FILE, CONTENT_UNLOCKING_META_FILE, PED_METADATA_FILE, WEAPONINFO_FILE, WEAPON_ANIMATIONS_FILE, WEAPONCOMPONENTSINFO_FILE, LOADOUTS_FILE, AUDIO_GAMEDATA, AUDIO_SOUNDDATA, AUDIO_SYNTHDATA, AUDIO_WAVEPACK, DLC_ITYP_REQUEST and TIMECYCLEMOD_FILE, but you can type any type. + Vehicle metas adds the six vehicle meta lines that are not already there.
Dependencies and exports
| Option | What it does |
|---|---|
| dependencies | Resources that must start first. Shortcuts: oxmysql, ox_lib, ox_target, ox_inventory, qbx_core, qb-core, es_extended, /onesync, /gameBuild:3095. Entries like /onesync, /server:<artifact> and /gameBuild:<build> set server requirements. |
| provide | Lets this resource stand in for another one, for example a mysql-async replacement. |
| exports (client) / server_exports | Old style export lists. exports('name', fn) in Lua works without them. |
| escrow_ignore | Files left readable when the resource goes through the Cfx.re asset escrow. Shortcuts: config.lua, locales/*.lua, client/open.lua, server/open.lua. |
Output
The file comes out in this order: version and game lines, metadata, script blocks, ui_page, files, data_file lines, dependencies, provide, exports, escrow_ignore. The Basic script preset produces:
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
name 'my_script'
description 'Basic client/server script'
version '1.0.0'
shared_scripts {
'config.lua',
}
client_scripts {
'client/*.lua',
}
server_scripts {
'server/*.lua',
}A typical Qbox / ox_lib job resource:
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
name 'my_job'
version '1.0.0'
shared_scripts {
'@ox_lib/init.lua',
'@qbx_core/modules/lib.lua',
'config.lua',
}
client_scripts {
'@qbx_core/modules/playerdata.lua',
'client/*.lua',
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/*.lua',
}
dependencies {
'ox_lib',
'qbx_core',
'oxmysql',
}The Vehicle pack preset, with automatic files on:
fx_version 'cerulean'
game 'gta5'
name 'my_vehicles'
description 'Add-on vehicle pack'
version '1.0.0'
client_scripts {
'vehicle_names.lua',
}
files {
'data/**/handling.meta',
'data/**/vehicles.meta',
'data/**/carcols.meta',
'data/**/carvariations.meta',
'data/**/vehiclelayouts.meta',
'data/**/dlctext.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'
data_file 'DLCTEXT_FILE' 'data/**/dlctext.meta'For a vehicle pack, put models (.yft, .ytd) in a stream folder, they are streamed automatically. The data/**/ globs let you keep one folder per car. Then add the resource to server.cfg:
ensure my_vehiclesWarnings the tool shows
@ox_lib/init.luais loaded butlua54is off.- You load
@ox_lib/...files butox_libis not in dependencies. - You load
@oxmysql/lib/MySQL.luabutoxmysqlis not in dependencies. - You load
@qbx_core/...files in shared scripts butqbx_coreis not in dependencies. commonis combined withgta5orrdr3.ui_pageis not infiles(only when automatic files is off).data_filelines exist while automatic files is off: every path must also be infiles { }.fx_versionis notcerulean.- The name contains spaces. The folder name is what counts for
ensure.
Common mistakes
- Blank NUI frame.
ui_pagemust also be infiles. Leave the automatic option on. - Shipping both manifests.
fxmanifest.luareplaced__resource.lua. Do not ship both in one resource. - RedM without the warning line.
game 'rdr3'needs the exactrdr3_warningtext. The generator adds it for you. - Editing the manifest on a running server. Run
refreshand thenensure your_resourcein the server console, or the old manifest stays in use. - Relying on
[folder]order. If your resource needs another one to start first, list it in dependencies instead of hoping the folder order is right.
Tip
Keep the resource name and folder name the same, lowercase, with no spaces. ensure uses the folder name, and name in the manifest is only metadata.
Limitations
The generator does not look at your resource folder, so it cannot tell whether the files and globs you list exist. It writes one manifest at a time. Everything happens in your browser.
