
BenzyPlates
A complete, standalone custom license-plate system for FiveM — no framework (ESX/QBCore) required, and no .ytd editing or OpenIV. Drop a PNG into a folder for each plate design — the six standard ones, plus the seven “Chop Shop” DLC plates — and BenzyPlates swaps it in for every vehicle in the world, at runtime. Each design is clearly labeled with the plate it replaces, so you always know which is which.
Made by Samuel Benzy of Benzy Development
Features
- Just drop in images. Replace any of GTA’s plate designs with your own PNG — no OpenIV, no CodeWalker, no rebuilding game files. BenzyPlates loads your images and swaps the textures at runtime.
- Clearly labeled. Every plate is documented and named for the design it replaces (e.g.
1_yellow_on_black.png), so you can tell exactly which image changes which plate — see the table below and docs/PLATE-REFERENCE.md. - Self-documenting placeholders included. Ships with a labeled placeholder for every plate — each one looks like a real plate (border, screws) and prints, right on it, exactly which design it replaces. So you can see which is which in-game before swapping in your own art.
- Plate template + normal map included. A blank
templates/template.png(the plate, with screws) and its matching normal map come bundled to build your art on — and the normal map is applied to every plate so they sit on the vehicle like real, screwed-on plates. - Replace some or all. Change one plate or all of them — anything you leave disabled stays the untouched base-game design.
- Includes the Chop Shop DLC plates. eCola, Sprunk, Liberty City, Las Venturas, and the LS Car Meet / Panic / Pounders plates are supported too — they ship disabled by default (so they don’t overwrite the branded stock plates until you opt in) and need game build 3095+.
- Optional “one plate for everything.” Made a single design and want every vehicle to use it? Turn on
Config.ForceIndexand BenzyPlates points every vehicle at that design. - Helpful console output. If an image is missing or a name is wrong, BenzyPlates prints a clear, bordered message telling you what’s wrong and how to fix it.
- Tiny and standalone. Entirely client-side. No database, no dependencies, no server load.
Requirements
- A FiveM server (artifact build with
fx_version 'cerulean'). - Your plate art as PNG images, 512×256 (the size of the included template). That’s it — no database, no other resource.
- Only if you enable the 7 Chop Shop DLC plates: game build 3095+ (
sv_enforceGameBuild 3095or higher inserver.cfg). The standard six need no special build.
Installation
- Drop the
BenzyPlatesfolder into your server’sresourcesdirectory. - Add to your
server.cfg:ensure BenzyPlates - Start the server. BenzyPlates works immediately with the included placeholder images, so you can confirm it’s running before adding your own art.
- Replace the placeholder images in the
plates/folder with your own (see Adding your own plates below), then restart the resource.
That’s it. The swaps apply to every vehicle automatically, for every player.
How it works
BenzyPlates replaces the game's plate-background textures at runtime from your own PNGs — no .ytd editing, no OpenIV/CodeWalker, and no stream build. The swap is global and local to each client: it changes how the design looks for everyone running the resource, while the plate number is still drawn by the game on top, exactly as normal.
Which image replaces which plate
GTA has 13 plate designs: the six standard ones, plus the seven added by GTA Online’s Chop Shop update. The default file name spells out the design, so the plates/ folder is self-explanatory. The index is the game’s own number for the design (what vMenu shows), and texture is the design's internal name (the value you set in Config.Plates).
| Index | Plate design | Texture name | Default image file | Default |
|---|---|---|---|---|
0 | Blue on White 1 | plate01 | plates/0_blue_on_white_1.png | on |
1 | Yellow on Black | plate02 | plates/1_yellow_on_black.png | on |
2 | Yellow on Blue | plate03 | plates/2_yellow_on_blue.png | on |
3 | Blue on White 2 | plate04 | plates/3_blue_on_white_2.png | on |
4 | Blue on White 3 | plate05 | plates/4_blue_on_white_3.png | on |
5 | North Yankton | yankton_plate | plates/5_north_yankton.png | on |
6 | eCola | plate_mod_01 | plates/6_ecola.png | off |
7 | Las Venturas | plate_mod_02 | plates/7_las_venturas.png | off |
8 | Liberty City | plate_mod_03 | plates/8_liberty_city.png | off |
9 | LS Car Meet | plate_mod_04 | plates/9_ls_car_meet.png | off |
10 | LS Panic | plate_mod_05 | plates/10_ls_panic.png | off |
11 | LS Pounders | plate_mod_06 | plates/11_ls_pounders.png | off |
12 | Sprunk | plate_mod_07 | plates/12_sprunk.png | off |
⚠️ The Chop Shop plates (6–12) need game build 3095+. Those seven designs only exist when your server runs game build 3095 or newer (set
sv_enforceGameBuild 3095— or higher — inserver.cfg). On an older build they don’t exist and BenzyPlates skips them harmlessly. They also ship disabled by default, keeping their branded stock look until you setenabled = true(inConfig.Plates) for the ones you’re making art for. The standard six (0–5) work on every build and are on by default.
Tip — see which is which in-game. The three “Blue on White” designs are subtle, and some lists number them differently. The included placeholder images settle it: each one prints its own slot on the plate (e.g.
plate02 · Yellow on Black), so as vehicles spawn — or when a player changes their plate design at your mod shop / plate menu — you can read exactly which design each file backs, then label your art to match. The texture name (the thing that’s actually replaced) is always correct; the index is just the game’s number for that design. Full walkthrough in docs/PLATE-REFERENCE.md.
Adding your own plates
- Make a 512×256 PNG for each design you want to change — build it on
templates/template.png(the blank plate, with screws) so everything lines up. The included placeholder plates show the layout. - Drop it into the
plates/folder. You can keep the default names or use your own. - If you used a new file name, point the matching entry in
Config.Platesat it (theimagefield). The default file names already match, so if you just overwrite them there’s nothing to change. - Restart the resource (a new or renamed file has to be sent to clients first).
Don’t want to touch a particular design? Set its enabled = false in Config.Plates and it stays the untouched base-game plate.
Why are images listed in
fxmanifest.lua? Clients only ever receive files named in the manifest’sfiles{}block. BenzyPlates includes aplates/*.pngwildcard there, so any PNG you drop intoplates/is shipped automatically — you don’t have to edit the manifest. (Thetemplates/folder is reference art and is intentionally not shipped.)
Configuration
Everything is in config.lua, and every option has a comment above it. The highlights:
| Option | What it does |
|---|---|
Config.Debug | Print detailed per-plate diagnostics to the F8 console. Leave off on a live server. |
Config.ApplyDelaySeconds | How long to wait after start before swapping (lets the base plate textures finish loading). |
Config.Plates | All 13 plate designs: each has an index, texture, label, image, enabled, and optional normal. The 7 Chop Shop plates are enabled = false by default. |
Config.ForceIndex | (optional) Force every vehicle onto one design — for when you made a single plate. Off by default. |
Force one design for every vehicle
By default, each AI/ambient vehicle keeps whichever design it spawned with, and players pick their own with whatever plate script your server runs — so once you replace the standard plates, virtually every car already shows a custom plate (the six standard designs cover almost all traffic). If instead you made one design and want every vehicle to use it, turn on Config.ForceIndex:
Config.ForceIndex = {
Enabled = true, -- master switch
Index = 0, -- the design (0-12) every vehicle is forced to
IntervalMs = 2000,
}
BenzyPlates then gently sweeps nearby vehicles and sets their plate index to the one you chose.
It only locks the design, not the text — while it's on, every vehicle (players' own included) is held on this one design, so a player who scrolls/picks another is reset back within
IntervalMs. The plate's number/letters are never touched. So if your server lets players choose plate designs, leave this off — which is the default, and you don't need it anyway once you've replaced several designs.
Integrating with other resources
BenzyPlates exposes one client export for anything that needs to re-assert the swaps after changing art at runtime:
-- Client: re-apply every configured plate. Returns how many applied.
local count = exports.BenzyPlates:ApplyPlates()
(A brand-new image file still has to reach clients via a resource restart; the export re-applies the swaps you already shipped.)
Troubleshooting
- Plates still show the default design — the most common cause is a missing image. Check the console for a yellow
some plate images were not foundblock; it lists exactly which files. Make sure each one exists inplates/(names are case-sensitive). Turn onConfig.Debugfor a per-plate log. unknown plate texture nameerror — atextureinConfig.Plateswas mistyped. It must be one ofplate01,plate02,plate03,plate04,plate05,yankton_plate, or a Chop Shop DLC plateplate_mod_01throughplate_mod_07.- A plate occasionally loads as the base-game design — raise
Config.ApplyDelaySecondsa little so the game's plate textures are fully loaded before the swap. - My image looks stretched or low quality — match the template’s 512×256 size and export a clean PNG. Off-size images get squished onto the plate.
- The plate number/letters disappeared — that text is drawn by the game and isn’t touched by BenzyPlates. If it looks wrong, your image probably painted over the whole plate; leave the center clear, like the placeholders do.
- I changed an image but nothing updated — a new or renamed file has to be downloaded by clients, so restart the resource.
Notes
- BenzyPlates is entirely client-side. Each player loads the images and swaps the textures locally; there’s no server logic and no database.
- It replaces the plate background only. The plate number is still rendered by the game on top, so nothing breaks with other plate or vehicle scripts.
- The included images are placeholders — each one says
replace meand tells you which file it is. Swap them for your own art.
Support
Need help? Visit support.benzy.lol.
Credits
Made by Samuel Benzy of Benzy Development.
Website: https://benzy.lol