FiveM framework converter

Drop in a resource built on one framework and get it back on another. ESX, QBCore, Qbox and ox_core, in any of the twelve directions. Every conversion is checked six ways before you get it, and when a check does not pass we say so instead of calling it done.

What a find-and-replace converter does to your script

This is one line from a real money-laundering script, converted three ways. Dirty money is an account in ESX. QBCore has no such account.

A free converter
if Player.getAccount('black_money')
     .money >= amount then

getAccount is not a QBCore method and black_money is not a QBCore account. The resource loads. Laundering never works, and nothing says why.

SwisserAI
local worth = tonumber(metadata.worth) or 0
total = total + (worth * item.amount)
exports['qb-inventory']:RemoveItem(
  src, 'markedbills', toRemove, item.slot)

Re-modelled as the item QBCore servers actually use for dirty money, and the decision is in the report, so you can disagree with it.

See the gap before you pay

Upload a resource and the analysis runs instantly and for free, because none of it needs a model. It reads your code and tells you exactly what a conversion would face.

Free analysisesx_carthief12 constructs · ESX to QBCore
Direct
6
A rename. Same call, different name.
Reshaped
5
Same capability, different call shape or argument meaning.
Rebuilt
0
No single call does this. It gets built from several.
Needs a decision
1
The target framework has no such concept at all.
  1. Get the player object for a server idPlayer lookup · 8x · Direct
    ESX.GetPlayerFromId(source)
    QBCore.Functions.GetPlayer(source)
  2. Look up a translated stringLocalisation · 11x · Reshaped
    _U('key', ...)
    Lang:t('key', { value = x })
  3. Dirty or unlaundered moneyMoney · 1x · Needs a decision
    xPlayer.addAccountMoney('black_money', amount)
    no equivalent in QBCore, decided explicitly in the plan

You also see which resources you will need to install, which files change format, and the steps only you can do: a SQL migration, an item added to your inventory. Across the 33 official ESX addons, only 14% of framework call sites are a straight rename. The rest is where servers break.

Six checks, then delivery

A FiveM resource has no compiler and no tests, so most converters cannot tell you anything about the result. But a resource’s contract with the rest of your server is made of names: commands, events, exports and items. Names can be verified, and so can the calls the output makes, against the target framework’s own source.

Files

Every file survived at full length

Syntax

Every Lua file parses

Leftovers

No source-framework code left behind

Calls exist

Every call it makes exists in the target

Contract

Commands, events, exports and items unchanged

Wiring

Manifest and files agree, no event points at nothing

And this is a real failure, as the page shows it

  • QBCore.Functions.SetTimeout does not exist in QBCoreCalls exist

    The output calls `QBCore.Functions.SetTimeout`, which is not defined by qb-core and is not used by any official resource in its ecosystem. Replace it with a real call or compose the behaviour from calls that exist.

And when a check fails, you get the conversion anyway, with the failures listed, in plain language, on the result page and in a report inside the ZIP. A partial result you can inspect beats no result. Calling it finished would not.

Twelve routes

Not twelve conversion tables. One model of what each framework can express, so every direction is served by the same knowledge, and going back is as good as going forward.

Every source framework, in rows, against every target framework, in columns
from \ toESXQBCoreQboxox_core
ESX·
QBCore·
Qbox·
ox_core·

How it works

  1. 01

    Upload the folder, zipped

    Or paste a public GitHub URL. We identify the framework from the code rather than asking you to pick, and show you what the evidence was.

  2. 02

    Read the free analysis

    Every construct, how faithfully the target can express it, what has no equivalent, and what you will need to install. Then decide.

  3. 03

    Convert, check, download

    The conversion runs on our servers, so you can close the tab. You get the resource, a conversion report, and a diff of every file.

FiveM Framework Converter FAQ

They are find-and-replace tables. They rename what is in the table and leave everything else untouched, which is why a converted script often loads and then fails on the first message it tries to show, because the ESX locale helper is not in anyone’s table. We measured the free tools on real resources: they leave source-framework code behind in every run, and in three quarters of runs they emit calls that do not exist in QBCore at all, like Player.getIdentifier or Player.canCarryItem. Those look right and crash the first time they run.

No, and we say so on the result page and in the report that ships with the download. What we do check is everything that can be checked without one: the resource parses, no code from the old framework is left, every framework call it makes exists in the target’s own source, and it keeps the same commands, events, exports and item names it had before, because those are what other resources on your server use to reach it. Behaviour that depends on your database contents, other resources, or timing needs a test server. Nothing can substitute for that and we do not pretend otherwise.

You see them before you pay. black_money is the clearest example: it is an account in ESX and QBCore has no such account, so a find-and-replace tool either maps it to cash, which silently launders the money, or leaves a call that does not exist. We model it as the markedbills item with worth metadata, which is what QBCore servers actually use, and the decision is written into the conversion report so you can disagree with it.

ESX Legacy, QBCore, Qbox and ox_core, in any direction: twelve routes. vRP is deliberately not supported: every call there crosses an RPC proxy and identity is an integer user_id rather than a license or citizenid, so converting to or from it is a rewrite of the calling model rather than of the call names. That deserves its own pass rather than a half-working one.

Only if its licence allows modification, and you confirm that when you upload. A large share of FiveM resources are sold under licences that forbid it. Escrow-protected resources are refused outright: their code cannot be read, so there is nothing to convert.

The analysis is free: upload a resource and see exactly which constructs are a rename, which change shape, and which have no equivalent. No credits, no commitment. A full conversion is priced from the size of the resource, typically 100 to 350 credits for a normal one.

That is one of the six checks. Other resources on your server call yours by name, with a command, a net event or an export, and renaming one breaks them silently, because nothing errors, the call simply reaches nothing. The converter extracts every one of those names before it starts and verifies they are all still there afterwards. If one went missing, the conversion does not pass.

Start with the free analysis

Upload a resource and see exactly what a conversion would change: which calls are a rename, which have no equivalent, and what you would need to install. No credits, no commitment.