FiveM oversized assets: shrink .ytd textures without quality loss
FiveM says an asset uses 76 MiB of physical memory? What the oversized assets warning means, why it breaks streaming, and how to shrink .ytd files safely.
By Termi
- Streaming
- Textures
- Performance
- Desktop app
On this page
- What the warning means
- Why oversized assets break streaming
- Physical memory vs. virtual memory
- How big is too big?
- Find every oversized asset on your server
- Shrink .ytd textures without losing quality
- The manual way, and its catch
- Shrink them with the Stream Optimizer
- Which preset to pick
- What it never touches
- Lower lodDistances on addon cars
- Common questions
- Will an oversized asset crash my server?
- Is 16 MiB a hard limit?
- At what size does FiveM warn about oversized assets?
- What if the warning names a .yft or .ydr file?
- Do players have to do anything?
- Which plan has it
You start your FiveM server and the console fills up with warnings like this one: "Asset … uses 76.0 MiB of physical memory. Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)." Most owners ignore it, because the server runs fine. Then players start reporting roads that turn into blurry mush, buildings that never load, cars that show up as grey boxes. That is the warning coming true. This guide explains what the message means, how big is too big, and how to shrink oversized .ytd texture dictionaries without making your maps and cars look worse.
Short answer
The warning means one streamed file needs more graphics memory than FiveM is comfortable loading at once, almost always because of 4K textures. Keep each .ytd under about 16 MiB of physical memory. The fastest safe fix is to drop the largest mip levels of the oversized textures, which is what the FiveDock Stream Optimizer does in one click, with a backup of the originals.
What the warning means
This is what the message looks like in the server console. Your resource names will differ:
Asset example_resource/example_props_txd.ytd uses 76.0 MiB of physical memory. Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering).
Asset example_vehicle/example_vehicle+hi.ytd uses 24.0 MiB of physical memory.Read it from left to right:
The server prints the line when a resource starts, so it tells you about the problem before any player sees it. The file still streams. FiveM is only warning you that every player who gets near it now has to load 76 MiB in one piece.
Why oversized assets break streaming
GTA V was built to stream the world in small pieces as you move. It keeps a limited pool of memory for what is around you and keeps swapping things in and out of it. A single 76 MiB texture dictionary takes a large share of that pool on its own. When several of them sit in the same part of the map, the game runs out of room and starts dropping things it still needs. Players see that as:
Players with a lot of VRAM notice it later than players on a 4 GB card, so the same server can look fine to the owner and broken to half the player base.
Physical memory vs. virtual memory
Every streamed GTA V file is split into two parts. Virtual memory holds the structure: names, formats, the list of textures. Physical memory holds the raw pixel data that goes to the graphics card. For a .ytd, almost all of the weight is physical, and that is the number FiveM warns about.
How big is too big?
The usual target, and the one most FiveM developers work to, is 16 MiB of physical memory per asset. Below it FiveM stays quiet. Past it you get the warning, and the further past it you go, the more likely the problems above become. 16 MiB is not a hard wall, but treat it as your budget for every .ytd.
The size of a texture in memory depends on only three things: its resolution, its format, and its mip levels. The table shows one texture with its full mip chain:
size DXT1 DXT5 A8R8G8B8 (uncompressed)
4096x4096 10.7 MiB 21.3 MiB 85.3 MiB
2048x2048 2.7 MiB 5.3 MiB 21.3 MiB
1024x1024 0.7 MiB 1.3 MiB 5.3 MiB
512x512 0.2 MiB 0.3 MiB 1.3 MiBSo a single 4096×4096 DXT5 texture already costs 21.3 MiB, more than the whole budget. A map pack with three of them, a couple of normal maps and some trim textures lands right at the 76 MiB in the example above. An uncompressed 4K texture is worse still at 85.3 MiB on its own. Most oversized assets are just 4K textures that nobody needed in 4K.
Find every oversized asset on your server
The console only shows the warning while the server starts, mixed in with everything else, and it is easy to miss one. You have two better options.
example_resource stream/example_props_txd.ytd
this texture dictionary allocates 76.0 MiB of graphics memory (61.2 MiB on disk),
more than the 16.0 MiB a pack should stay underAsset Doctor also flags the models that two packs both stream and the resources that never start, so one scan covers the usual reasons a map or car shows up wrong. If two packs ship the same map file, the map conflicts guide explains what that breaks.
Shrink .ytd textures without losing quality
Every texture in a .ytd is stored several times: at full size, then at half, a quarter, an eighth and so on down to a few pixels. Those copies are mip levels. The game picks the level that matches how big the surface is on screen. A wall 20 metres away gets a small mip, the full-size one is only used when you press your face against it.
That gives you a way to shrink a texture without touching its pixels: drop the largest mip levels. A 4096×4096 texture with its top two levels removed becomes a 1024×1024 texture whose pixels are exactly the ones the game was already showing from any normal distance. Nothing is resized, re-compressed or re-encoded, so no new blur or blocky artifacts appear. Each level you drop cuts the memory to about a quarter.
Keep in mind how much screen there is. On a 1920×1080 monitor even a wall that fills the whole view never shows more than about 2000 pixels across, so a 4K texture on a lamp post or a car door is memory spent on detail no player can see.
The manual way, and its catch
Without a tool, the fix looks like this:
It works, but saving to DXT compresses the image a second time, and every pass adds artifacts, especially on normal maps and text. On a server with a few hundred cars and a dozen maps it is also days of work.
Shrink them with the Stream Optimizer
The Stream Optimizer in the FiveDock desktop app does the mip level trick for every .ytd in a folder at once. It cuts the oversized textures down to the largest mip level that fits your limit and leaves the remaining pixel data byte for byte as it was.
The same thing from the command line, for the file from the warning above:
> fivedock optimize C:\server\resources\example_resource
1 .ytd file under C:\server\resources\example_resource, textures over 1024px
stream\example_props_txd.ytd 76.0 MiB -> 12.0 MiB
example_wall_d 4096x4096 -> 1024x1024 DXT5
example_wall_n 4096x4096 -> 1024x1024 DXT5
example_floor_d 4096x4096 -> 1024x1024 DXT1
example_floor_n 4096x4096 -> 1024x1024 DXT1
example_trim_d 2048x2048 -> 1024x1024 DXT5
kept example_sign_emis 2048x2048 emissive
Would free 64.0 MiB of game memory. Nothing was written; add --apply --backup <dir>.A scan writes nothing. Add --apply --backup <dir> to write the smaller files and keep the originals in that folder. In this example the file goes from 76.0 MiB to 12.0 MiB, under the 16 MiB budget, and the warning is gone on the next start.
Which preset to pick
Start with Balanced, drive past what changed, and step up to Light for the few assets where you notice a difference.
What it never touches
Nothing is lost
With a backup folder picked, the originals are copied there before anything is written. To undo, copy them back.
Lower lodDistances on addon cars
Textures are half the story for vehicles. Each car in vehicles.meta has a lodDistances list: the distances, in metres, at which it switches from its high-detail model to simpler ones, and the last value is how far away it is drawn at all. Many addon cars ship with values far above the base game, so every car on a busy street is kept in full detail, +hi.ytd included, from hundreds of metres away.
<Item>
<modelName>example_car</modelName>
<lodDistances content="float_array">
40.000000
80.000000
200.000000
400.000000
1000.000000
1000.000000
</lodDistances>
</Item>Tick Optimize LOD distance in the Stream Optimizer, or pass --lod on the command line. Every value is lowered to at most 15, 30, 70, 140, 250 and 250 metres, close to the base game. A value that is already lower is never raised, and only the numbers in the file change.
> fivedock optimize C:\server\resources\example_vehicle --lod --no-textures
1 .meta file with lodDistances
data\vehicles.meta example_car 40 / 80 / 200 / 400 / 1000 / 1000 -> 15 / 30 / 70 / 140 / 250 / 250
Nothing was written; add --apply --backup <dir>.Common questions
Will an oversized asset crash my server?
No. The server only sends the file. The cost is paid by every player’s game, and it shows up as texture loss, missing models and crashes on the client side, more often on cards with little VRAM.
Is 16 MiB a hard limit?
No, a 20 MiB file usually streams fine on its own. The trouble comes from many oversized files in one place. 16 MiB per .ytd is the budget that keeps you safe on any map, with any number of players around.
At what size does FiveM warn about oversized assets?
FXServer checks every streamed file when its resource starts and prints Asset <resource>/<file> uses <size> MiB of physical memory. for any file over 16 MiB, in blue above 16 MiB, yellow above 32 MiB and red above 64 MiB. The sentence “Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering).” is only added past 48 MiB. The same check runs on a file’s virtual memory, and that line ends in of virtual memory. instead. The thresholds are in FXServer’s ResourceStreamComponent.cpp.
What if the warning names a .yft or .ydr file?
The textures are then embedded in the model file. The Stream Optimizer reads .ytd files only, so move the textures into a separate .ytd in OpenIV or CodeWalker first, or ask the author for a lighter version.
Do players have to do anything?
No. After you restart, the changed files have a new hash, so every player downloads the smaller version on their next join.
Test after optimizing. Drive past every map you changed and look at the cars up close. If one asset looks too soft, put its original back from the backup folder or run it again with the Light preset.
Which plan has it
The Stream Optimizer is on every plan, in the desktop app and the CLI. Everything runs on your machine, and your files never leave it. Asset Doctor is part of the Metro plan and watches your live server for new oversized assets, so the next 4K car pack gets caught before your players find it. Compare the plans or see every feature.