<!-- fivemad.com, Markdown source of https://fivemad.com/docs/tools/fxmanifest-generator -->
> Source: https://fivemad.com/docs/tools/fxmanifest-generator
> Section: Tools
> Tags: fxmanifest, resource manifest, data_file, ui_page, lua54
> Tool: https://fivemad.com/tools/fxmanifest-generator
> Last updated: 2026-09-22
> Site map for assistants: https://fivemad.com/llms.txt

# 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

1. Under **Start from**, pick **Basic script**, **NUI resource** or **Vehicle pack**. The preset keeps your **Name** and **Author** and fills the rest.
2. In **Resource**, set `fx_version`, the **Game** chips, **Name**, **Author**, **Version**, **Repository** and **Description**.
3. Add scripts in the **Scripts** panel. Type a path and press <kbd>Enter</kbd> or the plus button, or click one of the small `+ ...` shortcut buttons under each list.
4. For NUI, fill in `ui_page` and your web files under **NUI & files**.
5. Add `data_file` lines for meta files, and list **dependencies** and exports if you need them.
6. Fix anything in the amber warnings box, then download `fxmanifest.lua` from 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:

```lua title="fxmanifest.lua"
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:

```lua title="fxmanifest.lua"
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:

```lua title="fxmanifest.lua"
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`:

```cfg
ensure my_vehicles
```

## Warnings the tool shows

- `@ox_lib/init.lua` is loaded but `lua54` is off.
- You load `@ox_lib/...` files but `ox_lib` is not in dependencies.
- You load `@oxmysql/lib/MySQL.lua` but `oxmysql` is not in dependencies.
- You load `@qbx_core/...` files in shared scripts but `qbx_core` is not in dependencies.
- `common` is combined with `gta5` or `rdr3`.
- `ui_page` is not in `files` (only when automatic files is off).
- `data_file` lines exist while automatic files is off: every path must also be in `files { }`.
- `fx_version` is not `cerulean`.
- The name contains spaces. The folder name is what counts for `ensure`.

## Common mistakes

- **Blank NUI frame.** `ui_page` must also be in `files`. Leave the automatic option on.
- **Shipping both manifests.** `fxmanifest.lua` replaced `__resource.lua`. Do not ship both in one resource.
- **RedM without the warning line.** `game 'rdr3'` needs the exact `rdr3_warning` text. The generator adds it for you.
- **Editing the manifest on a running server.** Run `refresh` and then `ensure your_resource` in 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.

## Related tools

- [server.cfg Generator](/docs/tools/server-cfg-generator)
- [Vehicle Handling Editor](/docs/tools/vehicle-handling-editor)
- [Vehicle Pack Validator](/docs/tools/vehicle-pack-validator)
- [Weapons Meta Editor](/docs/tools/weapons-meta-editor)
- [Vehicle Sirens Editor](/docs/tools/vehicle-sirens)
