ESX vs QBCore vs Ox Core: Which FiveM Framework Should You Choose in 2026?
Three frameworks dominate FiveM roleplay in 2026: ESX Legacy, QBCore, and the newer Ox Core. They sound similar on paper but feel completely different in practice — and picking the wrong one for your community costs months of refactoring. This is the honest, opinionated breakdown.
Every week a new server owner asks the same question in Discord: "ESX or QBCore?" Sometimes "or Ox Core?" The answers they get are mostly tribal — people defending whichever framework they happen to be running. This post takes a different angle: what each framework is actually good at, what its real costs are, and what your community structure should tell you about which to pick.
Our recommended FiveM hoster
For the CPU performance and DDoS protection FiveM needs, we recommend Avoro — German-based, Ryzen 9 7950X3D nodes, always-on DDoS, real unmetered traffic. See our FiveM hosting comparison.
The 30-second answer
If you don't want to read the whole thing:
- ESX Legacy — pick this if you want the biggest script ecosystem, fastest time-to-launch, lowest learning curve. The "safe" default for any new server.
- QBCore — pick this if you're a roleplay purist who wants character-first design and a different feel from ESX. Active community, decent script ecosystem.
- Ox Core — pick this if you have an actual developer on the team and want the cleanest modern codebase. Smaller ecosystem but rapidly growing.
Anything else here is detail to back those calls.
What each framework actually is
ESX (Legacy)
ESX is the original. The name itself comes from "Essential Mode Extended" — a 2018 add-on to the older Essential Mode. ESX Legacy is the maintained fork (started 2021) after the original repo went dormant. As of 2026 it's on version 1.13.x and actively maintained by the esx-framework organization.
ESX is built around the concept of jobs and money. A player has a job, a salary, accounts (bank, money, black money), and grades. The whole framework is shaped around that model.
QBCore
QBCore (QBus Core) launched in 2021 as a "modern alternative" to ESX. It uses similar concepts but rebuilt from scratch with cleaner code, better events, and a stronger focus on character data. Maintained by the qbcore-framework organization.
QBCore is built around the character. A player has a citizenid, metadata (hunger, thirst, stress), and the framework hands you a structured PlayerData object instead of ESX's xPlayer. Money is just one piece of metadata.
Ox Core
Ox Core (formerly ox_core) is the newest of the three, from the Overextended team — the same people who made ox_inventory, ox_lib, oxmysql. Built from the ground up in TypeScript, with strong typing, modern Lua bindings via ox_lib, and zero legacy baggage.
Ox Core is built around composable services. The framework gives you primitives (accounts, groups, metadata, vehicles) and you build your concept of "job" on top. More work upfront, dramatically cleaner long-term.
Side-by-side comparison
ESX Legacy QBCore Ox Core
First released 2018 2021 2023
Maintenance Active Active Active
Codebase quality ★★★☆☆ ★★★★☆ ★★★★★
TypeScript No No Yes
ox_lib integration Optional Optional Built-in
ox_inventory Optional Optional Required
Performance overhead Low Low Lowest
Script ecosystem ★★★★★ ★★★★☆ ★★☆☆☆
Learning curve Easy Moderate Steep
Hosting cost Same Same Same
Migration difficulty — Hard Very hard
Ecosystem size: this is the real deciding factor
The framework itself is 5% of what your server actually runs. The other 95% is third-party scripts: jobs, phones, garages, inventories, anti-cheat, mini-games. Your framework choice determines how much of that ecosystem you can use without modification.
ESX ecosystem (2026)
- Tebex / Cfx.re escrow listings tagged ESX: ~12,000+
- GitHub repos: thousands, mixed quality
- Premium script vendors with active ESX support: 50+
- Compatible OR convertible scripts: ~95% of the FiveM market
If you pick ESX, you can buy or download a script for nearly anything you can think of, today, this afternoon, and it will probably work. That's the biggest reason ESX still dominates.
QBCore ecosystem
- Tebex listings tagged QBCore: ~4,500+
- Premium QBCore-first vendors: 15-20
- Ecosystem trend: stable to slightly growing
QBCore has its own dedicated vendor scene now. Quality is generally higher than the ESX average (less recycled junk), but you'll occasionally need an ESX→QB conversion for something niche.
Ox Core ecosystem
- Native Ox Core scripts: a few hundred
- Ox Core compatible (via ox_lib bindings): growing
- Vendor commitment: mostly Overextended themselves + a few dedicated devs
Ox Core's ecosystem is real but small. If you go Ox Core, expect to write or commission 30-40% of your scripts. For a dev-heavy team that's exciting; for a solo owner with no coder, it's a trap.
Code quality & developer experience
ESX code looks like
ESX = exports['es_extended']:getSharedObject()
RegisterNetEvent('myscript:giveMoney')
AddEventHandler('myscript:giveMoney', function(amount)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return end
xPlayer.addMoney(amount)
end)
Works. Verbose. Lots of indirection (events for things that could be direct calls). No type safety.
QBCore code looks like
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent('myscript:giveMoney', function(amount)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
Player.Functions.AddMoney('cash', amount)
end)
More structured. Functions live on the player object. Slightly more typing but easier to discover what's available.
Ox Core code looks like
local Ox = require '@ox_core/lib/init'
lib.callback.register('myscript:giveMoney', function(source, amount)
local player = Ox.GetPlayer(source)
if not player then return end
player.addAccountMoney('cash', amount)
end)
Cleanest. Callbacks instead of fire-and-forget events. Explicit imports. If you're writing in TypeScript (ox_core supports it), you get full IDE autocomplete.
Performance
On idle and low-player counts, all three frameworks perform basically identically (sub-0.10ms resmon). The difference shows up at scale.
- ESX Legacy: performs well up to 200 players. Some legacy event patterns are inefficient under load.
- QBCore: similar to ESX. The metadata system can become a hotspot if you store lots of custom keys.
- Ox Core: measurably leaner thanks to ox_inventory's batched updates and ox_lib's modern primitives. Best choice for 500+ slot ambitions.
That said: your scripts bottleneck the server long before the framework does. A single badly-written job script with a 200ms DB query will hurt more than the framework choice.
Player-facing differences (your community will notice)
Players don't know what framework you run. They notice:
- Identifier system — ESX uses license-prefix identifiers. QBCore uses citizenids. Ox Core uses charid. Switching frameworks means new IDs for everyone unless you migrate manually.
- Multi-character — QBCore has it built-in. ESX and Ox Core need an addon (most ESX servers use
esx_multicharacter). - Status system — QBCore ships hunger/thirst/stress. ESX has basic needs as add-ons. Ox Core leaves it to you.
Migration cost (if you're already running one and considering switching)
ESX → QBCore
A 30-60 day full-time project for a decent dev. Player data conversion is the easy part (script exists). The hard part is rewriting all your custom scripts to use Player.Functions instead of xPlayer.* — and finding QBCore equivalents for every paid ESX-only script you bought.
ESX → Ox Core
3-6 months. You're not just rewriting framework calls, you're rewriting against a different paradigm. Most existing scripts won't work without significant refactor. Realistically: only do this if you're committing to be primarily Ox Core long-term.
QBCore → Ox Core
2-4 months. Easier than ESX → Ox because QBCore's metadata model is closer to Ox's composable services. Still nontrivial.
The honest take
Almost nobody actually completes a framework migration. They start, run both frameworks in parallel "temporarily" for testing, lose 30% of players to the chaos, and abandon the migration 8 weeks in. Pick the right framework the first time is much cheaper advice than "migrate when it's wrong."
Picking by community type
Pick ESX if…
- You're launching your first server
- You don't have a dedicated developer on the team
- You want to use the biggest possible script catalog
- You're targeting German / EU roleplay (ESX dominates here)
- Your community wants "classic GTA RP" feel
Avoid ESX if…
- You want clean, modern code from day one
- You're targeting 500+ player scale
- You hate writing event-handler boilerplate
Pick QBCore if…
- Your community is mostly US/EN roleplay (QBCore dominates US scene)
- You want multi-character out of the box
- You want character-first design (metadata, citizenid)
- You like the QBCore code style better than ESX
Avoid QBCore if…
- You need German-language script vendors (smaller scene)
- You're worried about ecosystem trajectory (QBCore growth has plateaued)
Pick Ox Core if…
- You have a full-time developer on the team
- You're building a custom RP concept that breaks the "job/money" mold
- You want TypeScript & modern tooling
- You're OK writing or commissioning 30-40% of scripts
- You're betting on the long-term future of FiveM frameworks
Avoid Ox Core if…
- You can't read Lua reliably
- You're on a tight launch timeline
- You expect to buy 90% of your scripts off-the-shelf
The most common mistake we see
People pick QBCore or Ox Core because "it's better than ESX" — without budgeting for the smaller script ecosystem. Three weeks in, they realize the garage script they wanted is ESX-only, the phone they wanted requires conversion, the job they planned needs custom development. They either: (a) painfully port everything, or (b) quietly switch to ESX and try not to mention it.
"Best framework" doesn't matter if you can't actually ship a server. "Best framework I can practically launch with" usually means ESX.
What we recommend devCon customers run
We test our scripts primarily on ESX Legacy (where most of our customers are). All our products work on Legacy 1.13.x with OneSync Infinity. For QBCore, we ship dedicated QBCore-compatible versions of our most-used scripts. Ox Core support is on the roadmap for 2026 H2.
If you're picking your stack right now, our advice: start with ESX Legacy + ox_inventory + ox_lib + lb-phone. That combo lets you use 95% of the ecosystem, has the lowest launch friction, and you can always add Ox Core primitives later for new development without ripping out what works.
Bringing it together
None of these frameworks is "wrong." All three power successful, profitable RP servers in 2026. The difference is fit: matching the framework to your team's skill, your community's expectations, and your willingness to do custom development.
Pick honestly. Don't pick based on what someone louder than you says is "better." Pick based on what you can actually build with, ship with, and maintain in two years.