Skip to main content

BenzyPlates

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.ForceIndex and 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 3095 or higher in server.cfg). The standard six need no special build.

Installation

  1. Drop the BenzyPlates folder into your server’s resources directory.
  2. Add to your server.cfg:
    ensure BenzyPlates
  3. Start the server. BenzyPlates works immediately with the included placeholder images, so you can confirm it’s running before adding your own art.
  4. 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).

IndexPlate designTexture nameDefault image fileDefault
0Blue on White 1plate01plates/0_blue_on_white_1.pngon
1Yellow on Blackplate02plates/1_yellow_on_black.pngon
2Yellow on Blueplate03plates/2_yellow_on_blue.pngon
3Blue on White 2plate04plates/3_blue_on_white_2.pngon
4Blue on White 3plate05plates/4_blue_on_white_3.pngon
5North Yanktonyankton_plateplates/5_north_yankton.pngon
6eColaplate_mod_01plates/6_ecola.pngoff
7Las Venturasplate_mod_02plates/7_las_venturas.pngoff
8Liberty Cityplate_mod_03plates/8_liberty_city.pngoff
9LS Car Meetplate_mod_04plates/9_ls_car_meet.pngoff
10LS Panicplate_mod_05plates/10_ls_panic.pngoff
11LS Poundersplate_mod_06plates/11_ls_pounders.pngoff
12Sprunkplate_mod_07plates/12_sprunk.pngoff

⚠️ 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 — in server.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 set enabled = true (in Config.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

  1. 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.
  2. Drop it into the plates/ folder. You can keep the default names or use your own.
  3. If you used a new file name, point the matching entry in Config.Plates at it (the image field). The default file names already match, so if you just overwrite them there’s nothing to change.
  4. 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’s files{} block. BenzyPlates includes a plates/*.png wildcard there, so any PNG you drop into plates/ is shipped automatically — you don’t have to edit the manifest. (The templates/ 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:

OptionWhat it does
Config.DebugPrint detailed per-plate diagnostics to the F8 console. Leave off on a live server.
Config.ApplyDelaySecondsHow long to wait after start before swapping (lets the base plate textures finish loading).
Config.PlatesAll 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 found block; it lists exactly which files. Make sure each one exists in plates/ (names are case-sensitive). Turn on Config.Debug for a per-plate log.
  • unknown plate texture name error — a texture in Config.Plates was mistyped. It must be one of plate01, plate02, plate03, plate04, plate05, yankton_plate, or a Chop Shop DLC plate plate_mod_01 through plate_mod_07.
  • A plate occasionally loads as the base-game design — raise Config.ApplyDelaySeconds a 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 me and 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