<!-- fivemad.com, Markdown source of https://fivemad.com/docs/tools/decorations -->
> Source: https://fivemad.com/docs/tools/decorations
> Section: Tools
> Tags: tattoos, decorations, overlays, AddPedDecorationFromHashes, ClearPedDecorations
> Tool: https://fivemad.com/tools/decorations
> Last updated: 2026-09-25
> Site map for assistants: https://fivemad.com/llms.txt

# Ped Decorations

Find any GTA V tattoo, badge or decal, see it on a ped, and copy the collection and overlay hashes for AddPedDecorationFromHashes.

Ped Decorations lists all 3,373 tattoos, badges and t-shirt decals the game defines, from the base game and every DLC pack. Each one shows its artwork, a picture of it on a freemode ped, and the two hashes you need to apply it.

Every snippet block on this page has a **Lua / JS / TS / C#** switcher in its corner. The choice is remembered across the site, and [the runtimes page](/docs/development/runtimes) explains what changes between them.

## What it is for

`AddPedDecorationFromHashes` wants two hashes: a collection and an overlay. Nothing in game tells you what either of them is called, and the names are not guessable (`mpbiker_overlays` plus `MP_MP_Biker_Tat_001_F`). This page is the list, with a picture so you know what you are about to apply.

## Finding a decoration

Type anything into the search box: the overlay name, the shop name the game gives it ("Demon Rider", "Ship Arms"), the collection, or the texture dictionary. Then narrow it down:

| Filter | What it does |
| --- | --- |
| Collection | One DLC pack's overlay file, for example Bikers or Beach Bum |
| Zone | Torso, head and neck, left or right arm, left or right leg |
| Ped | Male, female, or entries that work on either |
| Kind | Tattoo, or badge and decal (t-shirt prints and crew badges) |

Your filters and the decoration you picked live in the address bar, so you can paste a link and the other person lands on the same one.

## The panel

Clicking a picture opens the detail panel. It has:

- **The artwork** on its own, trimmed to the part of the texture sheet that is actually used.
- **The ped picture**: the same decoration drawn on a freemode ped, framed on its zone, so you can see where it lands before you load the game.
- **Overlay, collection, pack, zone, ped and kind**, plus the texture dictionary and texture name.
- **Both hashes** as unsigned, signed and hex, all one click to copy.
- **The shop price**, when the game sells that one in a tattoo shop.
- **Ready Lua**, on four tabs.

## Applying one

```lua title="client.lua"
local ped = PlayerPedId()

-- collection first, then the overlay name
AddPedDecorationFromHashes(ped, `mpbeach_overlays`, `MP_Bea_M_Back_000`)
```

The backticks are FiveM's hash literals. The native wants the joaat of each name, not the string. If backticks are not an option, the panel also gives the plain numbers:

```lua title="client.lua"
AddPedDecorationFromHashes(ped, -1719270477, 1056297333)

-- same thing, hashed at runtime
AddPedDecorationFromHashes(ped, GetHashKey("mpbeach_overlays"), GetHashKey("MP_Bea_M_Back_000"))
```

> [!TIP]
> Store the two strings, not the hashes, in your character data. They are readable in a database dump and you can hash them again any time.

## Taking them off

```lua title="client.lua"
local ped = PlayerPedId()

ClearPedDecorations(ped)            -- everything, scars included
ClearPedDecorationsLeaveScars(ped)  -- keep scars, drop tattoos and decals
```

There is no native for removing a single decoration. Clear them all and reapply the ones you want to keep, which is why most scripts hold the player's tattoo list server side.

## Applying a set

```lua title="client.lua"
local tattoos = {
    { collection = "mpbeach_overlays", overlay = "MP_Bea_M_Back_000" },
    { collection = "mpbiker_overlays", overlay = "MP_MP_Biker_Tat_000_M" },
}

local function applyTattoos(list)
    local ped = PlayerPedId()
    ClearPedDecorations(ped)
    for _, t in ipairs(list) do
        AddPedDecorationFromHashes(ped, GetHashKey(t.collection), GetHashKey(t.overlay))
    end
end

applyTattoos(tattoos)
```

Call that again after every model change, respawn and clothing menu that rebuilds the ped. Decorations do not survive `SetPlayerModel`.

## Things to watch out for

> [!WARNING]
> The order of the two hashes matters. Collection first, overlay second. Swapping them does nothing at all and reports no error.

- **Male and female entries are separate.** Most tattoos ship twice, ending in `_M` and `_F`, with slightly different placement. Applying the male one to a female ped puts it in the wrong place.
- **DLC collections need the game build.** A collection from a newer pack only exists on a server running a build that includes it. Set `sv_enforceGameBuild` accordingly.
- **Crew emblem overlays have no picture.** They point at a texture the game builds at runtime from the player's crew, so there is nothing to show and nothing to extract.
- **A few entries have no ped picture.** They sit outside the parts of the ped we draw, so only the artwork is shown.

## Placing your own artwork

Every panel has a link into the [3D Tattoo Editor](/tools/tattoo-editor) opened at that decoration's zone, position, scale and rotation. Drop your own image on top and you get an overlay that sits exactly where the game tattoo sits.

## Where the data comes from

The collections, placements and hashes are read out of the game's own `PedDecorationCollection` files. The artwork is each decoration's texture, and the ped pictures are rendered by us on our own conversion of the freemode ped. Nothing on this page is taken from another site.
