# ESX vs QBCore: Which FiveM Framework Should You Choose? (/docs/fivem/esx-vs-qbcore)



ESX and QBCore are the two dominant roleplay frameworks for FiveM. Both are free, open-source, and actively maintained. This guide compares them to help you choose.

Quick Comparison [#quick-comparison]

| Feature        | ESX Legacy                         | QBCore                   |
| -------------- | ---------------------------------- | ------------------------ |
| Multicharacter | Addon (`esx_multicharacter`)       | Built-in                 |
| Gang system    | Addon                              | Built-in with grades     |
| Inventory      | Default F2 menu (or ox\_inventory) | Built-in `qb-inventory`  |
| Jobs           | 32 addon job resources             | \~50 qb-\* job resources |
| Economy        | Bank accounts, billing, society    | Cash, bank, crypto       |
| Starting money | 50,000 bank                        | 500 cash + 5,000 bank    |
| Phone          | Addon                              | Built-in (`qb-phone`)    |
| HUD            | Addon                              | Built-in (`qb-hud`)      |
| Voice          | pma-voice (addon)                  | pma-voice + qb-radio     |
| MySQL resource | oxmysql                            | oxmysql                  |
| OneSync        | Required (1.7.5+)                  | Required                 |
| txAdmin recipe | Yes                                | Yes                      |
| License        | GPL                                | GPLv3                    |

Technical Differences [#technical-differences]

| Aspect                | ESX                            | QBCore                               |
| --------------------- | ------------------------------ | ------------------------------------ |
| Player loaded event   | `esx:playerLoaded`             | `QBCore:Client:OnPlayerLoaded`       |
| Get player data       | `ESX.GetPlayerData()`          | `QBCore.Functions.GetPlayerData()`   |
| Server callbacks      | `ESX.RegisterServerCallback`   | `QBCore.Functions.CreateCallback`    |
| Register usable items | `ESX.RegisterUsableItem`       | `QBCore.Functions.CreateUseableItem` |
| Notifications         | `esx:showAdvancedNotification` | `QBCore:Notify`                      |

Scripts written for one framework **do not work on the other** without conversion.

When to Choose ESX [#when-to-choose-esx]

* You want the **largest script ecosystem** — ESX has been around longer and has more third-party resources available
* You're migrating from an existing ESX server
* You prefer more **modular** architecture — pick only the addons you need

When to Choose QBCore [#when-to-choose-qbcore]

* You want more **built-in features out of the box** (phone, HUD, gangs, multicharacter)
* You're starting a **new server from scratch** and want a complete package
* Your community prefers QBCore scripts (increasingly common for newer RP servers)

Can You Switch Later? [#can-you-switch-later]

Switching between frameworks is a **major migration** — it requires converting all scripts, re-importing the database, and retraining admins. Choose carefully before building your server.

Related Guides [#related-guides]

* [Install ESX](/docs/fivem/install-esx)
* [Install QBCore](/docs/fivem/install-qbcore)
* [Database Setup](/docs/fivem/database-setup)
