minimapspecificationtexturesdxt10 min read · updated 9/7/2026

The technical specification of a FiveM minimap

The GTA V minimap is not one image. It is a grid of texture dictionaries drawn onto a set of geometry, with a separate ocean layer underneath and a low-detail texture for the zoomed-out pause map. Replacing it correctly means matching all of that exactly.

FiveM minimap technical specification

#Dimensions

The aspect ratio is fixed by the geometry: San Andreas is taller than it is wide, and the 2 × 3 grid is what the base game uses. A replacement that changes the grid will not line up no matter how good the art is.

PropertyValue
Full map resolution6144 × 9216
Grid2 columns × 3 rows
Tile resolution3072 × 3072
Land dictionaries6 (minimap_0_0 … minimap_1_2)
Sea dictionaries6 (minimap_sea_0_0 … minimap_sea_1_2)
LOD texture1 (minimap_lod)
Geometry65 .ydd drawable dictionaries
CompressionDXT5 (BC3), mipmapped
VRAM≈ 113 MB, identical to stock
On disk≈ 22 MB per resource

#Why the sea layer is separate

The ocean is drawn underneath the land with its own set of textures. This is what lets the game fade the water differently, and it is why a replacement has to provide both sets — a land-only replacement gives you the new island floating over the old ocean.

#Radar zoom data

The radar samples the texture at zoom levels defined in game data. A higher-resolution replacement needs those levels adjusted or the map appears at the wrong scale relative to the player blip — usually described as "the map is zoomed in too far".

-- what a minimap resource's client.lua does
Citizen.CreateThread(function()
  SetMapZoomDataLevel(0, 0.96, 0.9, 0.08, 0.0, 0.0)
  SetMapZoomDataLevel(1, 1.6,  0.9, 0.08, 0.0, 0.0)
  SetMapZoomDataLevel(2, 8.6,  0.9, 0.08, 0.0, 0.0)
  SetMapZoomDataLevel(3, 12.3, 0.9, 0.08, 0.0, 0.0)
  SetMapZoomDataLevel(4, 22.3, 0.9, 0.08, 0.0, 0.0)
end)

#How ours are produced

The pipeline is two stages. First the source map is decomposed into semantic layers — ocean alpha, bathymetric depth, coastline, terrain relief, directional hillshade, three road classes, labels and label halos — and cached as a 12288 × 18432 twelve-channel structure. Then each palette is a colouring pass over that structure.

Rendering at 2× and resampling down is what keeps the coastline smooth instead of stair-stepped, and what keeps labels readable at radar size. Colouring a finished image instead would tint everything together; separating the layers first is why twelve palettes look like twelve different maps rather than twelve tints of one.

StageOutput
Structure12288 × 18432 × 12 channels, cached once per base map style
Colourise6 × 3072 × 3072 PNG per palette
Pack12 DXT5 .ytd + LOD + 65 .ydd
DeliverA complete resource, 78 stream files

#The three base map styles

The same palette work is applied to three different sources, which is why a theme looks consistent across all three while the underlying map differs.

  • With postal codes — the classic base map with the community postal grid and street names burned in.
  • Without postal codes — the same coastline and street network with the grid removed and the ground beneath it rebuilt.
  • Google style — a colour street map as the source: road classes, water, parks and beaches segmented from its own colours, then re-lit with the elevation relief of the base map.

#What a correct replacement must do

  • Provide all twelve dictionaries plus the LOD texture. A partial set gives a map with holes.
  • Use DXT5 with mipmaps. Uncompressed textures multiply VRAM for no visible gain and cause stutter.
  • Keep the exact file names. They are what the geometry references.
  • Ship the .ydd geometry, or rely on the base game's — but not a mixture of the two.
  • Set the radar zoom levels once, at start.
  • Not collide with any other resource. One minimap per server.

Questions

Can I use a higher resolution than 6144 × 9216?
You can render higher, but the game samples at a fixed rate and the extra data is discarded, while the VRAM cost is real. We render the master at 12288 × 18432 and resample down precisely because the extra resolution is useful during rendering and useless at runtime.
Does a custom minimap increase VRAM use?
No, provided it is DXT5 compressed at the standard dimensions. It replaces textures the game already loads, so the total is unchanged at roughly 113 MB.
Why do some minimaps look blurry in game?
Either they were upscaled from a lower-resolution source, or they were saved without mipmaps, or they are compressed with DXT1 where alpha was needed. All three are visible as soft edges on the coastline.

Ready to pick a map?

Twelve themes on three base map styles, $8 each, instant download.