joaat Hash Calculator
Turn any model, weapon or asset name into its GTA V joaat hash in unsigned, signed and hex form, one at a time or as a bulk Lua table.
Cette documentation est en anglais pour l'instant.
The joaat Hash Calculator turns any string into the 32-bit hash GTA V uses for it, the same value GetHashKey, joaat and the Lua backtick give you in game. It is for anyone who needs a hash outside the game: comparing a value from a log, filling a config, or building a lookup table for a script.
What it is for
GTA V (and RDR2) identify models, weapons, animations, components and most other assets by a Jenkins one-at-a-time hash of their lower-cased name. You meet those numbers everywhere: GetEntityModel returns one, weapon events carry one, and dumps print them in different formats. When a script prints -1216765807 and you want to know if that is adder, or when you need a hash table for a whitelist, this tool gives you the number without starting the game.
Quick start
- Open the tool. The Single tab is selected, with
adderalready typed in. - Type your string in the String field. The Result panel updates on every key press.
- Click any value in the result to copy it.
- For many names at once, switch to Bulk, paste one name per line, pick an Export format and copy the generated
hashes.lua.
Single mode
The Result panel shows four rows for the current string:
| Row | Example for adder |
Notes |
|---|---|---|
| Unsigned | 3078201489 |
The raw 32-bit value, 0 to 4294967295. |
| Signed (int32) | -1216765807 |
Same bits read as a signed int32. What most natives return and many dumps print. |
| Hex | 0xB779A091 |
Always 0x plus 8 upper-case digits. |
| Lua backtick | `adder` |
Your string lower-cased inside backticks, ready to paste into Lua. |
The input is lower-cased before hashing, exactly like the game does, so ADDER, Adder and adder all give the same result. WEAPON_PISTOL and weapon_pistol are the same hash too.
Bulk mode
Paste one string per line in One string per line. Empty lines are skipped and spaces around each line are trimmed. The panel title shows how many hashes were computed, and the table lists each name with its Signed and Hex value (click to copy).
Below the table, Export format (Hex, Signed or Unsigned, default Hex) controls the value used in the generated hashes.lua block:
local Hashes = {
adder = 0xB779A091,
zentorno = 0xAC5DF515,
WEAPON_PISTOL = 0x1B06D571,
mp_m_freemode_01 = 0x705E61F2,
prop_bench_01a = 0x6BA514AC,
}Names that are valid Lua identifiers become plain keys. Anything else (a name with a dash or starting with a digit) is written as ["name"], so the table always parses.
Examples
Reverse lookup of a model you got from the game, using a table built in bulk mode:
local Names = {
[`adder`] = "adder",
[`zentorno`] = "zentorno",
}
local veh = GetVehiclePedIsIn(PlayerPedId(), false)
local model = GetEntityModel(veh)
print(Names[model] or ("unknown model %d"):format(model))The backtick is resolved when the script is compiled, so it costs nothing at runtime:
local model = `adder`
RequestModel(model)
while not HasModelLoaded(model) do Wait(0) end
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
SetModelAsNoLongerNeeded(model)Signed vs unsigned
The hash itself is unsigned, but natives hand it to Lua as a signed int32, so GetEntityModel on an Adder returns -1216765807, not 3078201489. Both are the same model. In Lua, compare against the backtick or GetHashKey result instead of a hard-coded unsigned number, and the sign never gets in the way. Hex literals like 0xB779A091 are positive in Lua 5.4, so a table keyed by hex will not match a signed value from a native. Pick Signed as the export format when you compare against values returned by natives.
Tip
Use Signed when the table is compared with GetEntityModel, GetSelectedPedWeapon or event payloads. Use Hex when you want readable values in a config that is only passed back into natives.
Common mistakes
- Hashing a display name.
Adderis fine because case does not matter, but “Truffade Adder” is not the model name. Use the spawn name. - Adding spaces or a file extension.
adder.yfthashes to something else entirely. - Comparing a signed value from a native with an unsigned or hex constant.
Limitations
- The tool only hashes. It does not look a hash up to find the name. For vehicles, peds and weapons, the Model & Hash Browser lists spawn names next to their signed, unsigned and hex hashes.
- Everything runs in your browser. Nothing you type is sent anywhere.
