Press Enter to search

Home / Guides / Vehicle Optimization
THE COMPLETE TECHNICAL GUIDE

FiveM Vehicle Optimization: How to Compress Textures & Reduce Poly Count Without Losing Quality

Everything you need to know about YTD texture compression, 3D model decimation, the 16MB streaming limit, and how to eliminate texture loss on your FiveM server — whether you do it manually or let our tool handle it in 30 seconds.

Chapter 1

Why Vehicle Optimization Matters for FiveM Servers

Every custom vehicle you add to your FiveM server consumes streaming budget. The FiveM client has a finite amount of GPU memory and bandwidth it can allocate to loading assets in real time. When your server pushes more data than the client can handle, the consequences are immediate and visible: textures disappear, vehicles turn into blurry messes, frame rates tank, and players leave.

This is not a hypothetical problem. It is the number-one performance complaint across FiveM server communities. A single unoptimized vehicle can consume 20-40MB of streaming budget. Multiply that by the 50-200 custom cars on a typical roleplay server, and you are looking at gigabytes of data fighting for a few hundred megabytes of available memory.

The Texture Loss Cascade

Texture loss in FiveM is not random. It follows a predictable cascade. When the streaming budget is exhausted, the client starts unloading textures from the least-recently-used assets. A player driving through a populated area suddenly sees vehicles around them lose their paint, their interiors go flat, and their wheels turn into gray blobs. The more unoptimized vehicles in the area, the worse it gets.

The critical insight most server owners miss: optimizing just the cars that show texture loss is not enough. Because the streaming budget is shared across all loaded resources, every unoptimized vehicle contributes to the problem even if it looks fine on its own. You need to optimize everything. For a deeper dive on diagnosing and fixing texture loss, see our complete texture loss fix guide.

Server Performance Impact

Unoptimized vehicles do not just affect the client. Larger resource files mean longer server join times, higher bandwidth usage, and increased storage costs. A server with 100 unoptimized cars might have a 4-6GB resource folder. After proper optimization, that same folder can drop to 1.5-2.5GB with zero visible quality difference in-game. Players connect faster, your hosting costs go down, and the gameplay experience improves across the board.

Chapter 2

Understanding FiveM Vehicle Files: YTD, YFT & YDR

Before you can optimize FiveM resources effectively, you need to understand what you are working with. Every vehicle resource is a collection of proprietary RAGE engine file formats. Here is what each one does and why it matters for optimization.

YTD — Texture Dictionary

The YTD file is the texture container. It holds every texture the vehicle uses: diffuse maps (the actual color/paint), normal maps (surface detail and bumps), specular maps (how light reflects off surfaces), and sometimes additional maps for emissive lights, dirt overlays, or damage states. A typical custom vehicle YTD contains 15-40 individual textures.

This is where the biggest optimization gains live. Unoptimized YTDs routinely ship with 2048px or 4096px textures in uncompressed or poorly compressed formats. FiveM caps vehicle texture resolution at 1024px via str_maxVehicleTextureRes and RGBA textures at 512px via str_maxVehicleTextureResRgba. Anything above those caps is wasted data that the client downscales anyway.

YFT — Fragment Type (3D Vehicle Model)

The YFT file contains the vehicle's 3D geometry, physics data, breakable parts (doors, bumpers, hoods), and LOD (Level of Detail) levels. A single YFT can contain multiple LOD meshes: the high-detail version seen up close, medium-detail for mid-range, and low-detail for distant viewing. Many custom vehicles also include a _hi.yft variant with extra collision detail.

Polygon counts in custom FiveM vehicles range wildly. A well-made vehicle might have 30,000-60,000 polygons in its highest LOD. A poorly optimized port from another game can have 200,000+ polygons, with flat surfaces like hoods and roofs tessellated into thousands of unnecessary triangles.

YDR — Drawable

YDR files are the simpler cousin of YFTs. They contain 3D models without the physics and fragment data that vehicles need. You will encounter YDRs in vehicle resources as extra parts like custom wheels, accessories, or livery-specific geometry. They follow the same optimization principles as YFTs but are less common in vehicle-specific workflows.

A typical FiveM vehicle resource ZIP contains one YTD file, one or two YFT files (main model plus optional _hi variant), and sometimes additional YDR files for accessories. The file structure usually looks like this:

vehicle_name/ stream/ vehicle_name.ytd ← textures (usually 60-80% of total size) vehicle_name.yft ← 3D model + physics vehicle_name_hi.yft ← high-detail collision (optional) fxmanifest.lua ← resource manifest
Chapter 3

The Manual Optimization Workflow

Before automated tools existed, every FiveM server owner had to optimize vehicles by hand. Understanding the manual process is valuable both for appreciating what optimization actually does and for handling edge cases where you need granular control. Here is the standard workflow:

Step 1: Extract Textures with OpenIV

Download and install OpenIV, the community standard tool for working with RAGE engine files. Open the vehicle's YTD file, and you will see a list of every texture inside it. Export each texture as a PNG or DDS file to a working folder. For a vehicle with 30 textures, this takes about 5 minutes of clicking.

Step 2: Resize Textures

Open each texture in an image editor (Photoshop, GIMP, or a batch tool like XnResize). Resize diffuse textures to 1024px or 512px depending on your target quality. Normal maps and specular maps can often go to 512px or even 256px without visible quality loss. You need to identify each texture by its suffix: _n or _n2 for normals, _s for specular, no suffix or _d for diffuse.

Step 3: Re-import with Correct Compression

This is where most people go wrong. You need to re-import each texture back into the YTD with the correct DDS compression format. Using OpenIV or CodeWalker, set each texture to its appropriate format. Most people just pick DXT5 for everything because it is "safe," but this wastes space on textures that do not need an alpha channel and destroys quality on normal maps that need dedicated two-channel encoding.

Step 4: Repeat for Every Vehicle

This entire process takes 15-30 minutes per vehicle. If your server has 100 custom cars, you are looking at 25-50 hours of mind-numbing repetitive work. And if a car modder releases an update, you get to do it all over again.

Model Optimization Is Even Worse

For 3D model optimization, you need Blender with the Sollumz addon (the only tool that can properly import and export FiveM YFT files with intact physics and LOD data). Import the YFT, apply decimation modifiers to each mesh, fine-tune the settings to avoid destroying the vehicle's silhouette, and export. The learning curve is steep and mistakes can break the vehicle's collision or fragment data entirely.

Skip the tedious manual work. The FiveMRides Optimizer handles all of this automatically — smart compression, proper format selection, and 3D decimation in one drag-and-drop upload.

Try It Free
Chapter 4

Texture Compression Formats Explained

Not all compression formats are equal, and using the wrong one is the single biggest quality mistake in FiveM vehicle optimization. Most tools and tutorials tell you to use DXT5 for everything. That advice is outdated and wrong. Here is what each format does and when to use it.

DXT1 / BC1 — Diffuse Textures Without Alpha

DXT1 compresses at a 6:1 ratio (0.5 bytes per pixel). It is the most efficient format for color textures that do not need transparency. The vast majority of vehicle paint, interior, and trim textures fall into this category. DXT1 introduces minimal color banding on photographic textures and is the standard choice for diffuse maps across the entire game industry. If a texture has no alpha channel, there is zero reason to use anything heavier.

DXT5 / BC3 — Diffuse Textures With Alpha

DXT5 compresses at a 4:1 ratio (1 byte per pixel). It uses the same color compression as DXT1 but adds a separate high-quality alpha channel. Use this for textures that need transparency: glass, light lenses, decals, and mesh overlays. The alpha channel in DXT5 has 8 interpolated values, making it suitable for smooth gradients. Do not use DXT5 on textures that do not need alpha — you are wasting 50% more space for data that is not there.

BC5 / ATI2 — Normal Maps (The big deal)

This is where smart per-type compression makes a dramatic difference. Normal maps encode surface direction using two channels: X (tangent) and Y (bitangent). The Z component is derived mathematically at runtime. BC5 dedicates both of its high-quality channels to storing exactly these two values, with no wasted data.

Compare this to DXT5, which stores the normal map's two useful channels alongside two wasted color channels and an unused alpha channel. The result: BC5 normal maps have visibly sharper surface detail, fewer block compression artifacts, and more accurate lighting at the exact same file size as DXT5. Every AAA game studio uses BC5 for normal maps. Most FiveM optimization tools still use DXT5 because they do not distinguish between texture types.

Normal maps are identified by suffixes like _n, _n2, _normal, or _bump in the texture name.

BC7 — Specular Maps (Near-Lossless)

BC7 is the newest format in the BCn family and delivers near-lossless compression at the same 1-byte-per-pixel size as DXT5. It uses a sophisticated block encoding with multiple partitioning modes that adapt to the content of each 4x4 pixel block. For specular maps — which control how light interacts with surfaces and need precise gradient reproduction — BC7 is the ideal choice.

Specular maps are identified by suffixes like _s, _s2, _spec, or _specmap. Applying BC7 to these textures preserves the subtle reflectance variations that make a vehicle's paint look realistic under different lighting conditions.

Special Cases

  • Script RT textures (script_rt) — Must stay uncompressed. These are render targets used by the game engine at runtime and compressing them will cause visual glitches or crashes.
  • Emissive maps (_em) — Standard DXT1/DXT5 compression. These are simple color maps for light-emitting surfaces like headlights and taillights.
  • Dirt/damage overlays (_dirt, _dm, _burnt) — DXT1 if no alpha, DXT5 if alpha is present. Usually low-detail textures that compress well.
  • Detail/tileable textures (_detail, _tileable) — DXT1 typically. These are small repeating patterns.
  • Tiny textures (64px and below) — Skip compression entirely. The overhead of block compression on very small textures can actually increase file size. Leave them as-is.

Why Smart Per-Type Compression Matters

A vehicle with 30 textures where every one is compressed as DXT5 will look noticeably worse than the same vehicle with DXT1 on diffuse, BC5 on normals, and BC7 on specular — at the same or smaller file size. The quality improvement on normal maps alone is dramatic. Surface details like panel lines, rivet marks, and leather grain come through sharper and more accurately. This is not a marginal improvement. It is the difference between a car that looks "modded" and one that looks like it belongs in the base game.

The FiveMRides Optimizer automatically detects texture types by analyzing filename suffixes and applies the optimal compression format to each one. This is the same approach used by professional game studios, and as far as we know, we are the only FiveM optimization tool that does this.

Chapter 5

3D Model Decimation & Polygon Reduction

While textures are responsible for the majority of a vehicle's file size, polygon count affects rendering performance, especially in scenes with many vehicles on screen simultaneously. A well-optimized vehicle should have an appropriate polygon count for its role in the game, and its LOD levels should progressively reduce detail at distance.

What Is Decimation?

Decimation is the process of reducing the number of polygons (triangles) in a 3D mesh while preserving its visual shape as closely as possible. A polygon reduction from 150,000 to 80,000 triangles can be nearly invisible to the player while significantly reducing the GPU workload for rendering that vehicle.

Planar Dissolve vs. Collapse Decimation

There are two fundamentally different approaches to reducing polygons, and the best results come from using both in sequence:

Planar Dissolve (The "Free" Reduction)

Planar dissolve identifies faces that lie on the same flat plane and merges them into fewer, larger polygons. Think of a car's hood: it might be tessellated into hundreds of tiny triangles that all lie on the same flat surface. Planar dissolve merges those into a handful of large quads with zero change to the visual shape. This typically removes 20-40% of polygons from a vehicle mesh, and the reduction is completely lossless because the geometry was redundant to begin with.

Collapse Decimation (The Precision Reduction)

Collapse decimation iteratively removes the least-important edges in the mesh, collapsing them to reduce the overall triangle count. This does alter the mesh shape, but modern algorithms prioritize preserving edges that contribute most to the silhouette. Used after planar dissolve, a collapse ratio of 0.7-0.8 (keeping 70-80% of remaining polygons) produces results that are invisible at normal gameplay camera distances.

The Intelligent Multi-Step Pipeline

A naive approach of just applying a single collapse decimation to a vehicle mesh produces ugly faceting on curved surfaces like fenders and wheel arches. The intelligent approach is a multi-step pipeline:

  1. Merge duplicate vertices — Remove overlapping geometry left by the modeler (distance threshold ~0.0001).
  2. Fix normals — Recalculate face normals to ensure consistent surface orientation.
  3. Remove interior/hidden faces — Delete geometry that players will never see (faces hidden inside the mesh body).
  4. Auto-mark sharp edges — Protect body lines and panel edges greater than 30 degrees from being dissolved. This preserves the defining lines of the vehicle's design.
  5. Planar dissolve — Merge coplanar faces with respect to sharp edges, UV seams, and material boundaries. This is where the "free" polygon savings happen.
  6. Collapse decimate — Apply ratio-based collapse to the remaining geometry with X-axis symmetry enabled for vehicles.

This pipeline produces dramatically better results than any single-pass decimation. The flat surfaces (where most of the waste lives) get cleaned up losslessly first, and the collapse pass only needs to work on the geometry that actually contributes to the vehicle's shape.

LOD Levels: Why They Matter

FiveM vehicles use multiple LOD (Level of Detail) levels. LOD0 is the full-detail version seen when a player is right next to the car. LOD1, LOD2, and LOD3 are progressively lower-detail versions rendered at increasing distances. Many custom vehicles ship with only LOD0, meaning the full 150,000-polygon mesh renders even when the car is a hundred meters away and only a few pixels on screen. Proper LOD setup is critical for server-wide performance, and decimation should be applied across all LOD levels with increasingly aggressive ratios.

Chapter 6

The 16MB YTD Streaming Limit

FiveM has a hard streaming limit: no single YTD file can exceed 16MB. When a texture dictionary crosses this threshold, one of two things happens — the textures fail to load entirely (the vehicle appears with missing or default textures), or the oversized YTD causes cascading texture loss across all other vehicles in the area as the streaming system struggles to accommodate it.

How Vehicles Exceed the Limit

A vehicle with twenty textures at 4096x4096 resolution in uncompressed RGBA format would need roughly 1.2GB of raw texture data. Even with DXT5 compression, those twenty 4K textures still total approximately 80MB — five times over the streaming limit. This is not an extreme example. High-end vehicle mods designed for single-player GTA V regularly ship in this range because single-player does not have the same streaming constraints as FiveM's multiplayer engine.

How to Fix It

The solution is straightforward: resize and compress. Bringing textures down to 1024px (the FiveM display cap) and applying proper format-specific compression (DXT1 for diffuse, BC5 for normals, BC7 for specular) typically reduces a 40MB YTD to 6-10MB — well under the limit with headroom to spare. For vehicles with exceptionally large texture sets (livery packs, heavily detailed interiors), you may need to go to 512px on less critical textures like specular and normal maps.

The FiveMRides Optimizer automatically checks the output YTD size after optimization and flags any files that remain over 16MB so you can take further action. Most vehicles land well under the limit after a single optimization pass.

Chapter 7

The Automated Solution: FiveMRides Optimizer

We built the FiveMRides Optimizer because we got tired of spending hours in OpenIV doing the same repetitive work on every vehicle we added to our own server. It is a web-based tool — no software to install, no Blender to configure, no CodeWalker to wrestle with. Upload your vehicle resource ZIP, pick a preset, and download the optimized version.

What Makes It Different

  • Smart per-type compression — Automatically detects texture types (diffuse, normal, specular, emissive, etc.) by suffix and applies the optimal compression format: DXT1, DXT5, BC5, or BC7. No other FiveM tool does this.
  • Intelligent 3D pipeline — Server-side Blender with Sollumz integration. Multi-step decimation with planar dissolve, sharp-edge protection, and symmetry-aware collapse. Not a simple slider.
  • Preserves what matters — Skips script_rt textures, preserves UV seams and material boundaries during decimation, and leaves tiny textures (64px and under) untouched where compression would actually increase size.
  • Two presetsOptimized (1024px diffuse, 1024px normals, 512px specular, 0.8 decimate ratio) for zero visible quality loss. Maximum (512px diffuse, 256px normals, 128px specular, 0.5 decimate ratio) for aggressive size reduction when you need every byte.
  • Choose your optimization type — Full (textures + models), Textures Only, or 3D Models Only. If your textures are already optimized but your models are bloated, you only pay for what you need.

How It Compares

Feature Manual (OpenIV) ToolKitV FiveMRides Optimizer Fiverr Freelancer
Time per vehicle 15-30 min 2-5 min ~30 seconds 24-72 hours
Texture optimization Yes Yes Yes Varies
3D model decimation With Blender No Yes (Sollumz pipeline) Varies
Smart per-type compression Manual only DXT5 everything BC5 normals, BC7 specular Usually DXT5
Requires software install OpenIV + editor Windows app None (web-based) None
Batch processing No Limited Upload & go Per-order
Cost per vehicle Your time Free Token-based $5-20+
Consistency Human error Decent Identical every time Varies by person

Ready to optimize your server? Upload a vehicle and see the difference for yourself. Free trial available — no account needed to start.

Launch Optimizer
Chapter 8

FiveM Vehicle Optimization Best Practices

Whether you optimize manually or use an automated tool, these are the rules that every FiveM server owner should follow to maintain performance and visual quality:

  • Optimize every vehicle, not just the ones showing problems. The streaming budget is shared. One unoptimized 40MB car affects every other vehicle on the server.
  • Cap diffuse textures at 1024px. FiveM's str_maxVehicleTextureRes setting means anything above 1024px is downscaled by the client anyway. Ship at the resolution the client will actually display.
  • Use DXT1 for diffuse textures without alpha. It is half the size of DXT5 with no visible difference. Only use DXT5 when transparency is genuinely needed (glass, decals).
  • Use BC5 for normal maps. This single change produces the biggest quality improvement per byte. If your optimization tool does not support BC5, switch to one that does.
  • Use BC7 for specular maps. Near-lossless quality at the same size as DXT5. Your vehicle's paint reflections will look noticeably more realistic.
  • Never compress script_rt textures. These are runtime render targets. Compressing them causes visual bugs and potential crashes.
  • Skip compression on textures 64px and smaller. Block compression on tiny textures can increase file size. Leave them raw.
  • Keep every YTD under 16MB. Above this limit, the FiveM client will fail to stream the texture dictionary correctly.
  • Ensure proper LOD levels exist. A vehicle with only LOD0 renders the full model at every distance. That is a massive waste of GPU cycles.
  • Test after optimizing. Spawn the vehicle in-game, check all angles, verify the interior, and make sure breakable parts (doors, hood) still work correctly.
  • Optimize before adding to your server, not after. Retroactive optimization means your players already suffered through the lag. Make optimization part of your vehicle intake process.
  • Use optimized vehicles from trusted sources. Explore our debadged cars and car packs that ship pre-optimized for FiveM.
FAQ

Frequently Asked Questions About FiveM Vehicle Optimization

It depends on the texture type. Diffuse textures without transparency should use DXT1 (BC1). Diffuse textures with alpha channels need DXT5 (BC3). Normal maps get dramatically better quality with BC5/ATI2 because it uses both channels for the X and Y surface directions instead of wasting channels on unused color data. Specular maps are best served by BC7, which is near-lossless at the same file size as DXT5. Most optimization tools blindly apply DXT5 to everything, which wastes space on diffuse textures and crushes quality on normal maps.

Texture loss happens when your server exceeds the FiveM streaming budget. The client caps vehicle textures at 1024px (str_maxVehicleTextureRes) and RGBA textures at 512px (str_maxVehicleTextureResRgba). To fix it, you need to compress and resize your vehicle YTD files so they fit within those limits. You should also ensure no single YTD exceeds the 16MB streaming limit. Optimizing every vehicle on your server, not just the ones showing texture loss, is the most effective approach because the streaming budget is shared across all loaded resources.

FiveM cannot stream a single YTD (texture dictionary) file larger than 16MB. If a vehicle's YTD exceeds this limit, its textures will either fail to load completely or cause cascading texture loss on other nearby vehicles. High-end car mods with 4096px uncompressed textures frequently exceed this limit. The fix is to resize textures to 1024px or lower and apply proper compression formats like DXT1, DXT5, BC5, or BC7 depending on the texture type.

When done correctly, polygon reduction (decimation) is nearly invisible in-game. The key is using an intelligent multi-step pipeline: first dissolve flat planar faces that contribute nothing to the shape, then apply collapse decimation to the remaining geometry with sharp-edge protection. This removes 20-40% of polygons from flat panels (hoods, roofs, doors) before the collapse pass even begins. A ratio of 0.7-0.8 after planar dissolve produces zero visible quality loss at normal gameplay distances.

Manually optimizing a single vehicle typically takes 15 to 30 minutes per car. You need to open the resource in OpenIV, export each texture from the YTD, resize them individually in an image editor, re-import them with the correct compression format, and then repeat the process for every texture in the file. For 3D model optimization, you also need Blender with Sollumz to import the YFT, decimate the mesh, and re-export. Multiply that by 50-200 cars on a typical server and you are looking at days of work.

YTD (Texture Dictionary) files contain all the textures for a vehicle including diffuse (color), normal (surface detail), and specular (shininess) maps. YFT (Fragment Type) files contain the 3D model with physics, breakable parts, and LOD levels for vehicles specifically. YDR (Drawable) files also contain 3D models but are used for simpler static objects, props, and non-vehicle assets. When optimizing vehicles, you primarily work with the YTD for texture compression and the YFT for polygon reduction.

Yes. The FiveMRides Optimizer is a web-based tool that runs entirely in your browser. You upload your vehicle resource ZIP file, choose a preset (Optimized for zero visible quality loss, or Maximum for aggressive file size reduction), and download the optimized version. It handles texture compression with smart per-type format selection, 3D model decimation via a server-side Blender pipeline, and automatic YTD repacking. No need to install OpenIV, CodeWalker, Blender, or any image editors.

Typical file size reductions range from 40% to 70% depending on how unoptimized the original vehicle is. Cars with 4096px uncompressed textures see the largest reductions. A vehicle that shipped at 25MB might drop to 8-12MB after proper texture compression and resizing. The Optimized preset (1024px diffuse, smart compression) usually achieves 40-55% reduction with zero visible quality loss. The Maximum preset (512px diffuse, aggressive compression plus polygon decimation) can push reductions to 60-70%.

Stop Losing Players to Texture Loss and Lag

Every unoptimized vehicle on your server is costing you players. Smart per-type compression, intelligent polygon reduction, and proper format selection are no longer optional — they are the baseline for a competitive FiveM server in 2026.

Optimize Your First Vehicle Free

No download. No account needed to start. Results in 30 seconds.

Scroll to Top