FREE TOOL · GetHashKey / joaat
FiveM hash calculator
Type a model, ped or weapon name and the joaat hash appears as you type — the unsigned number, the negative one your console prints, and the hex the dumps are written in, all three at once, because they are all the same thirty-two bits. Paste a hash into the second box and it searches back the other way.
The arithmetic is done in your browser; nothing is sent anywhere. The implementation is checked against the hashes this site already stores for 921 vehicles, 860 peds and 113 weapons — all 1,894 match.
10110111011110011010000010010001
That is a known vehicle model — adder.
Searching 921 vehicle models, 860 ped models and 113 weapons. A joaat hash cannot be undone, so a reverse lookup is always a search over names somebody already has.
Client or server — GetHashKey exists on both, and the number it returns is the same on both.
-- Three ways to say the same thing. The engine sees one number.
local byName = GetHashKey("adder") -- -1216765807
local byNumber = -1216765807 -- what print() shows you
local byHex = 0xB779A091 -- what the dumps are written in
print(byName == byNumber) -- true
print(byName == byHex) -- true
-- So a model can be requested either way.
local model = `adder` -- the backtick is Lua 5.4 sugar for GetHashKey
RequestModel(model)
while not HasModelLoaded(model) do
Wait(0)
endHOW TO USE IT
One number, three ways of writing it
A hash is thirty-two bits. How it looks on screen depends only on what printed it. Lua prints a signed integer, so anything with the top bit set comes out negative; the published model dumps use unsigned decimal; the native documentation and CodeWalker use hex. Treating those as three different values is the single most common reason a model comparison silently never matches.
Client-side. The backtick syntax is FiveM's Lua 5.4 compile-time hash — it is GetHashKey evaluated once instead of every call.
-- Three ways to say the same thing. The engine sees one number.
local byName = GetHashKey("adder") -- -1216765807
local byNumber = -1216765807 -- what print() shows you
local byHex = 0xB779A091 -- what the dumps are written in
print(byName == byNumber) -- true
print(byName == byHex) -- true
-- So a model can be requested either way.
local model = `adder` -- the backtick is Lua 5.4 sugar for GetHashKey
RequestModel(model)
while not HasModelLoaded(model) do
Wait(0)
endClient-side. GetEntityModel and GetSelectedPedWeapon both return hashes, so the other side of the comparison has to be a hash too.
-- The useful half: checking what the player is in or holding.
-- Both natives return a hash, never a string, so compare against a hash.
CreateThread(function()
while true do
Wait(500)
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped, false)
if veh ~= 0 and GetEntityModel(veh) == GetHashKey("adder") then
print("in an Adder")
end
-- GetSelectedPedWeapon returns WEAPON_UNARMED's hash when empty-handed,
-- which is 2725352035 -- not 0. Comparing against 0 never matches.
if GetSelectedPedWeapon(ped) == GetHashKey("WEAPON_PISTOL") then
print("holding a pistol")
end
end
end)The hash folds A–Z to a–z before it starts, which is why case never matters and why a wrong name, not a wrong capitalisation, is always the real bug.
Each round multiplies and shifts inside thirty-two bits. JavaScript numbers are doubles, so this tool uses Math.imul and >>> 0 to keep every step exact. Calculators that skip that drift on long names.
A search, not a decode. joaat discards information, so the only route from number back to name is hashing names you already have — which is why this page says when a hash is simply not in its list.
The 21,631 createable objects are too large to ship into a browser tab, so they live on the prop list with a search of their own.
QUESTIONS
About hashes and GetHashKey
What is GetHashKey in FiveM?
Why do GetHashKey("PROP_X") and GetHashKey("prop_x") give the same number?
Why is the hash in my server console negative?
Can I turn a hash back into a name?
Do two different names ever produce the same hash?
MORE
Lists the hashes point at
921 spawn names with the hash, the class and the stats beside each one.
Ped list860 ped models with their component and prop counts.
Prop list21,631 object models with the hash CreateObject takes.
All the free toolsThe flag calculators, the text colour preview, the marker reference and the map.