The QBCore inventory is one of the most-touched files on any QBCore server, and one of the most fragile when you don't follow a consistent pattern.
Where items actually live
Items are defined in qb-core/shared/items.lua (or in QBX-Core, in the items.lua file at the framework root). Each entry has name, label, weight, type, image, unique, useable, shouldClose, and description. Get the schema right once and copy-paste your way to the rest.
Adding a new item the safe way
Pick a unique name (no spaces, lowercase). Drop a 100x100 transparent PNG into qb-inventory/html/images. Add the entry. Restart the resource — not the whole server.
Weights that don't break the game
Default QBCore is generous with carrying capacity. If you want a more grounded RP feel, lower the max weight in Config.MaxInventoryWeight and bump up the weight of larger items proportionally. Don't just slash everything; rebalance the tiers.
Weapons
Weapons in QBCore use the same items table but require a corresponding weapon definition in shared/weapons.lua. Damage, recoil, and ammo type live there. Don't tweak damage without testing in PvP — small numerical changes feel huge in actual play.
UI polish that costs nothing
Open qb-inventory/html and you will find a fully editable Vue/JS UI. The two changes I make on every server: rename Inventory to the server's brand language, and increase the contrast on item count badges. Both are 10-minute tweaks that players notice.
Wrapping up
The QBCore inventory is more flexible than people think — you just have to respect the schema. If you are running 300+ custom items, consider migrating to ox_inventory; the editing experience scales much better past that point.
Written by
Sarah Chen
Server-owner-friendly tutorials, every week. Browse the marketplace for premium FiveM resources or reach out if you need a custom build.
