qb-core (QBCore) for FiveM
The roleplay framework most new FiveM servers are built on, with the largest modern script ecosystem and a one-click txAdmin recipe.
QBCore became the default for new roleplay servers because the txAdmin recipe installs a complete, playable server in minutes and because almost every script released since 2021 supports it. Items and weapons live in shared tables inside qb-core itself, which is what makes adding content to it so direct.
At a glance
| Maintainer | QBCore Framework |
| Latest release | Rolling — no tagged releases |
| Last code change | 2026-08-25 |
| Licence | GPL-3.0 |
| Written in | Lua |
| GitHub stars | 742 |
| Status | Active |
Figures read from the repository on 2026-09-22.
Why servers run it
- The txAdmin recipe gives you a working server — jobs, housing, garages, phone — before you have written a line of Lua.
- shared/items.lua and shared/weapons.lua are flat tables. Adding content is editing data, not writing code.
- The metadata system on items is good enough for serial numbers, durability and registration without a third-party inventory.
- It is the framework most paid scripts target first, so you spend less time looking for a compatible version.
Installing qb-core (QBCore)
1. Use the txAdmin recipe
In txAdmin's setup, pick the QBCore recipe. It downloads the core, the resources and the database schema and wires them together.
2. Or install by hand
Clone qb-core into resources/[qb], import qb-core/qb-core.sql, and ensure qb-core before every other [qb] resource.
3. Set your convars
server.cfg holds the QBCore settings. Change the server name, the default spawn and the starting money there rather than in config.lua where an update will overwrite them.
4. Add items and weapons
shared/items.lua and shared/weapons.lua. A restart of qb-core is required for changes to be picked up.
Working examples
Getting the core object
-- Server
local QBCore = exports['qb-core']:GetCoreObject()
-- Client
local QBCore = exports['qb-core']:GetCoreObject()Giving a custom weapon
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
Player.Functions.AddItem('weapon_custompistol', 1, false, {
serie = tostring(math.random(10000000, 99999999)),
quality = 100,
})A job-gated command
QBCore.Commands.Add('armory', 'Open the police armoury', {}, false, function(source)
local Player = QBCore.Functions.GetPlayer(source)
if Player.PlayerData.job.name ~= 'police' then return end
TriggerClientEvent('myserver:openArmoury', source)
end, 'user')What goes wrong
Never run QBCore and ESX together. They conflict at the core level and the server will not survive startup.
qb-core restarts, not the inventory. Shared tables are read by the core; editing items.lua and restarting only qb-inventory changes nothing.
Weapon keys use backticks. [\weapon_x\] in shared/weapons.lua. Quotes produce a key that never matches a hash.
The txAdmin recipe pins versions. A recipe installed a year ago is a year-old QBCore. Updating is a manual job, not a button.
qb-core (QBCore) — questions people ask
What is the difference between QBCore and Qbox?
Where is the QBCore documentation?
How do I add a custom weapon to QBCore?
Runs alongside
A maintained fork of QBCore rebuilt on ox_lib and ox_inventory, with typed exports, semantic versioning and a much cleaner core.
The original FiveM roleplay framework, still running a very large share of live servers — jobs, money, society accounts and a huge script catalogue.
QBCore's own inventory: the default on every stock QBCore server and still the most widely installed inventory in the ecosystem.
The slot-based inventory most new FiveM servers start with, with first-class support for addon weapons, durability, metadata and shops.
The web panel bundled with every FXServer build: process management, recipes, players, bans, scheduled restarts and live console.