What a spawn code actually is
A spawn code is a model name. Type /car police3 and the server hands police3 to GetHashKey, the engine hashes the lowercased string, and looks up a vehicle registered under that 32-bit number. The string never survives — which is why a spawn code is case-insensitive, and why two packs using one name is not a warning the engine can give you: to the engine they are the same vehicle.
The name lives in the pack's vehicles.meta, in the <modelName> element of each <Item>. Nothing else is authoritative. The resource folder's name is not the spawn code. The .yft file's name is usually the spawn code, because the game looks for a model archive whose name matches — and "usually" is the entire reason this tool has two tiers instead of one.
Why a filename is only a guess
A stream/ folder is not a list of vehicles. It is a list of everything the resource streams, and a modern vehicle pack streams a great deal that is not a vehicle: the high-detail companion (police_hi.yft), texture dictionaries, animation clips, and — in a parts pack especially — dozens of mod-shop bumpers, spoilers, wheels and roofs, each a .yft in the same folder as the vehicle.
So a tool reading filenames has to rank them, and a substring blacklist — anything containing model, extra, roof or grille is a part — deletes gtr_model, police_extra, sultan_roof and x_grilles, all four real vehicles. This tool ranks instead of deleting: a weak candidate is demoted, not removed, and appears in the "Seen and not listed" panel with the sentence that demoted it and a Restore button. Restoring puts it back into the list, the counts and all four exports, and re-runs the duplicate check with it included.
Why duplicate spawn names break a server
The engine keeps one model per name. If two resources both register police, the second to load is discarded — not rejected with an error, not logged as a conflict, just quietly not there. You spawn police, you get a car, everything looks fine, and the £40 pack you bought last week is simply absent from the server.
Which copy wins depends on load order, so it is not even stable: add an unrelated resource to server.cfg and the other copy starts winning, which is how a vehicle that worked for six months suddenly changes model. Neither pack is wrong on its own, so no per-pack check can find it — only a view across every resource you actually run. That is why this tool reads a whole resources/ folder at once, keeps two packs that share a folder name apart, and ranks a duplicate on an emergency vehicle above everything else.
A vehicles.meta the manifest never registers
FiveM does not read a .meta because it is on disk. It reads it because fxmanifest.lua names it in a data_file line:
files {
'vehicles.meta',
'carvariations.meta',
'handling.meta',
}
data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
data_file 'HANDLING_FILE' 'handling.meta'A vehicles.meta with no data_file line defines nothing at runtime. The vehicle is in the pack, the code is in the file, and /car answers "model not found". This tool still lists those codes — they are what the pack means to ship and the repair is one line — but it marks the row meta not registered and gives you the exact data_file line to add. A vehicles.meta that will not parse is reported in the XML parser's own words, because "why is my pack showing guesses when it has a vehicles.meta?" is the most confusing thing that can happen here, and the answer is usually a tag closed in the wrong place on line 240.
How to check a pack before you buy it
If the seller gives you a sample, a preview zip or a file list, most of the important questions are answerable before money moves:
- Does it collide with what you run? Scan it alongside your existing
resources/folder. A duplicate here is a vehicle you pay for and never receive. - Does it replace a base-game vehicle? Badged replaces a base-game vehicle. A legitimate genre, but a different purchase from an add-on.
- Does every declared code have a model file? "3 codes in vehicles.meta have no model file" means three vehicles in the screenshots are not in the download.
- Is the count what the listing claims? Every pack is listed with its code count, including the ones that came back with zero and the reason why.
- Do the vehicles have handling? A code badged no handling entry falls back to a default, which is what "drives like a boat" usually means.
The four exports, and what each is for
| Export | What it is for |
|---|---|
| .txt | Pasting into Discord. Grouped by pack, with the tier on each heading and a guessed marker on the rows that need one. |
| .csv | A spreadsheet. Every field the meta holds — handlingId, txdName, audioNameHash, the flags — plus a listed column, so demoted names sit beside the kept ones. |
| vehicles.lua | A plain Lua table of names, with -- guessed on the lines that were inferred, so the meta-versus-guess distinction survives the paste. |
| QBCore shared/vehicles.lua | A dealership table: manufacturer from vehicleMakeName, display name from gameName resolved through the pack's own AddTextEntry. Price, category and shop are marked placeholders, because no pack states them and this tool does not invent values. |
What this tool does not check
It is a spawn-code reader, not a full pack audit, and a short problem list here is not a clean bill of health. It reports the problems that affect a spawn code — a missing model, a missing handling entry, an unregistered or unreadable meta, a duplicate, a base-game collision — and stays quiet about mod kit id collisions, siren profiles, texture dictionary sizes and audio. File-name collisions outside vehicle spawn codes are Clash Finder's half of the job, on the same drop.
It also cannot see inside an .rpf. A pack distributed as dlc.rpf is invisible to this, and the tool says so rather than reporting zero. And everything here is a static read of files: it never starts a server, so it can tell you a pack declares a vehicle and never that the vehicle drives.
Frequently asked questions
What is a spawn code in FiveM?
A spawn code is the model name the game hashes to find a vehicle — the word you type after /car. It is the <modelName> field in the pack's vehicles.meta, and it is not the folder name, the file name or the name in the pack's description, though all four are often the same.
Why does a pack ship no list of its own spawn codes?
Most do ship one, in a readme, and it is written by hand. Renames late in a build, a vehicle cut before release or a copy-pasted readme from the author's last pack all produce a list that no longer matches the files. The files are the only thing the server reads, so reading them is the only way to be sure.
How does this tool tell a real spawn code from a mod-shop part?
When the pack has a registered vehicles.meta, it reads the codes from there and nothing is guessed. When it does not, it ranks the .yft models in stream/ and shows every one of them — the weak candidates are demoted with the reason rather than deleted, so a part named like a vehicle is visible and a vehicle named like a part can be put back into the list with one click.
What happens if two resources have the same spawn code?
The game keeps one model per name, so whichever resource loads second is discarded. The vehicle you paid for silently does not appear, and which of the two wins depends on load order — so it can change the day you add an unrelated resource. This tool badges both copies and names both resources.
Does this upload my vehicle pack anywhere?
No. The whole scan runs in your browser tab: there is no request in the page and no server behind it. Only text files are opened — manifests, .meta, .lua and the other plain-text extensions a resource holds, each up to 4 MB — and every .yft, .ytd, .ydr and archive is counted by name and size and never read. If you drop a whole server folder, that means files like server.cfg are decoded in the tab as well, which is why the figure under the drop zone tells you how many files were actually opened.
Can I use it on a whole resources/ folder?
Yes. Drop the folder, or pick it, and every resource inside it is read as its own pack. Two packs that happen to share a folder name stay two packs, which is what makes the duplicate check work.
Is a clean report proof the pack works?
No, and the tool says so on every export. This is a static read of the files as supplied: it lists the spawn codes the files declare and reports the problems that affect a spawn code. It never starts a server, and it does not check textures, mod kit ids, sirens or audio.
