Textures, files & packs · 4 min read

Why are my FiveM textures pink, purple or white? (And how to fix it)

Read in: Español · Français · Deutsch · Português · Italiano · Polski · Türkçe · Русский

Your new prop, car or MLO streams in, but part of it is plain white, or a loud pink or purple. The model itself loaded fine: what is missing is one of its textures. The game looked for it, found it nowhere, and drew that part without it.

The fix is almost never to clear your cache or reinstall the resource. It is to find which texture is missing and why the model cannot see it. Here is where the game looks, the mistakes that break it, and how to find the culprit without opening every file in OpenIV.

Where the game looks for a texture

A model does not carry a list of files. Each part of it (each shader) names the textures it needs, and the game looks for each name in this order:

  1. Inside the model itself. A .ydr or .yft can hold its own textures (embedded).
  2. The texture dictionary its archetype names. For a prop or a map model that is the textureDictionary of its entry in the .ytyp, which is not always a .ytd with the model's name. For a car it is the txdName in vehicles.meta.
  3. That dictionary's parents, set in a gtxd.meta (CMapParentTxds), one after another up the chain.
  4. The game's own shared dictionaries that are always loaded, such as vehshare (car glass, wheels and paint) and mapdetail.

A texture that is in none of these places is the white, pink or purple part. So the question is never just "is the texture in my resource?" but "is it somewhere this model looks?".

The usual causes

  • The .ytd is not the one the .ytyp names. Renaming the .ytd to match the model is a common guess, but what counts is the archetype's texture dictionary.
  • The .ytd is not in the resource at all, or not in its stream folder, and the game does not have one of that name either.
  • The texture is in another .ytd of the same resource, one this model never looks in: a shared dictionary with no parent link to it.
  • The gtxd.meta is there, but the fxmanifest does not load it. Without its data_file line the game never sees those parents.
  • A car's txdName in vehicles.meta does not match its .ytd.

There is one more case that can look the same but is not a missing texture: a texture saved without mipmaps. A customer's addon ped was pink up close in game with every texture in place, and its textures had no mipmaps. That case has its own guide: how to add mipmaps to a YTD.

Find the missing texture in a minute

Missing Textures Check follows the same lookup for every model in a resource. It is free (you sign in with Discord) and only reads: it changes nothing.

  1. Drop your FiveM resource, its folder or its .zip, with its .ytyp, vehicles.meta and gtxd.meta if it has them.
  2. Read Totals: Missing is the number of textures that draw white or purple; From the game are textures only the game's dictionaries have, which is fine.
  3. Open a model's card. Its table lists every texture with its slot and where it was found: in the model, its .ytd, a parent .ytd, the game, or Missing.
  4. When a missing texture is somewhere else in your drop, the table says so under its name ("Is in X, where this model doesn't look."), and the hint under the model says how to fix it.
  5. Keep Only problems ticked to see just the broken models, and download the report as a .csv if you want to work through it.
Missing Textures Check report for a test police car whose .ytd was taken out: 15 textures missing, each with its slot, the rest found in the game's dictionaries
A test car with its .ytd taken out: 15 textures found nowhere, and the hint naming the dictionary its vehicles.meta asks for.

Fix each cause

The texture really is missing

Put it into the dictionary the model uses. Texture Editor opens the .ytd and adds one: Add a texture, give it the exact name the model asks for, pick its kind (colour, normal or specular map) and the picture, then download the .ytd. It comes back compressed, with mipmaps.

The model looks in the wrong dictionary

Change the archetype's texture dictionary in the .ytyp with the YTYP Editor, so it names the .ytd that has the textures. For a car, fix txdName in vehicles.meta.

The texture is in another .ytd

Move it into the model's own .ytd, or make that other .ytd a parent of it in a gtxd.meta. Texture Dedupe writes one for you when it shares textures between dictionaries. Either way the fxmanifest has to load it:

lua
files { 'gtxd.meta' }
data_file 'GTXD_PARENTING_DATA' 'gtxd.meta'

Pink or blurry only up close

Look at Size and format in the same report. Textures listed under no mipmaps can be rebuilt in one go with the Asset Optimizer.

Then reconnect, not just restart

Players keep the .ytd they already downloaded until they reconnect: restarting the resource is not enough to see a fixed texture. After a fix, drop the resource into the check again, then rejoin the server to look at it in game.

Questions

Does clearing the FiveM cache fix white or purple textures?
Not when a texture is missing from the resource: the cache cannot add a texture nobody sends. Find the missing one first. After you change a .ytd, though, players do need to reconnect to get the new one.
Why is only part of my model white?
Each part of a model has its own textures. Only the parts whose textures were found nowhere are drawn without them, so a car can have perfect paint and white seats.
Can a texture come from the game instead of my resource?
Yes. A model can use textures from the game's own dictionaries, such as vehshare for car glass and wheels. Missing Textures Check shows those as From the game or Game shared, not as missing.

The tool for this

Missing Textures Check

Drop your resource and see every model's textures, where each one was found, and a fix for each one found nowhere.

Open Missing Textures Check

Also useful here: Texture Editor · Asset Optimizer

More guides

All guides →

Every tool is free to try, with 5 exports a day. Sign in with Discord to use them.