# Postal codes on a FiveM server: baked into the map, or drawn by a script?

> How FiveM postal codes actually work, the difference between a postal grid baked into the minimap texture and one drawn by a resource, which one to run, and how to avoid ending up with two sets of numbers on screen.

Source: https://fam-tools.com/guides/postal-codes-explained · FAM Tools · published 2026-01-28 · updated 2026-09-07 · about 9 min

**Short answer.** Either the numbers are part of the minimap image, or a resource draws the nearest one on the HUD. Pick one. Baked costs nothing and cannot desync; a script can show one big number and can be renumbered without a re-render.

Postal codes are how roleplay servers give players a way to say where they are. GTA V has no addresses, so the community invented a numbered grid over the map. There are two completely different ways to put that grid in front of a player, and running both at once is a mistake almost every new server makes.

## The two approaches

Neither is wrong. They answer slightly different questions: the baked grid tells a player where everything is, the script tells them where they are.

|  | Baked into the map | Drawn by a script |
| --- | --- | --- |
| What the player sees | Numbers across the whole map | One number, usually near the minimap |
| Runtime cost | None | A loop, however small |
| Works before resources load | Yes | No |
| Renumbering | Needs a re-render | Edit a config |
| Readable while driving | Only at higher zoom | Always — it is a HUD element |
| Can desync from dispatch | No | Yes, if two resources use different data |

## How a baked postal map works

The numbers are pixels in the minimap texture, rendered at the same resolution as the roads and the coastline. There is nothing to run and nothing to configure — the map has the grid on it the same way it has street names on it.

The trade-off is that the numbers scale with the map. At full radar zoom while driving they are small; on the pause map they are perfectly legible. This is why most servers that use a baked grid also run a small "nearest postal" HUD element, which is the one legitimate reason to have both.

> **Both together, done correctly** — A baked grid plus a HUD element showing only the nearest number is a good combination — as long as both use the same postal data. Two different postal sets on one server is how you get players calling in numbers that dispatch cannot find.

## How a postal script works

A postal resource ships a list of coordinates with a number attached to each, finds the closest one to the player, and draws it. That is the whole idea; the differences between implementations are the size of the list and how efficiently they search it.

```lua
-- the shape of the data every postal resource uses
local postals = {
  { code = '119', x = -1037.0, y = -2737.0 },
  { code = '120', x =  -900.4, y = -2600.1 },
  -- ~1600 more
}
```

> **warn** — If your postal resource shows over 0.2 ms in resmon while standing still, it is searching every frame. That is the fix above.

#### The performance mistake

A naive implementation searches all 1600 entries every frame. At 60 FPS that is 96,000 distance calculations per second for a number that changes maybe twice a minute.

```lua
-- fine: recompute a few times a second, not every frame
CreateThread(function()
  while true do
    Wait(500)
    nearest = findNearest(GetEntityCoords(PlayerPedId()))
  end
end)
```

## Which one should your server run?

- You already run a postal HUD or a dispatch that draws postals — take the no-postals map. Two sets of numbers is worse than either alone.
- You want players to be able to read the grid off the pause map — take the baked map.
- You use custom postal numbering — take the no-postals map and let your script own the numbers.
- You are starting from nothing and want the least moving parts — take the baked map. It cannot break.

> **note** — We build every palette both ways for exactly this reason. The no-postals build is not the baked one with the numbers hidden — the ground underneath is rebuilt, so there are no ghosts where the numbers used to be. If the baked grid is the one you want, that is the [FiveM postal map](https://fam-tools.com/for/fivem-postal-map).

## The standard grid

Nearly every server uses the same community postal set, which is why a player from one server can read numbers on another. The numbers run roughly 1 to 1500 across the island, denser in Los Santos and sparse in the north.

Renumbering to something custom is possible and almost always a bad idea: you lose the shared vocabulary, and every new player has to relearn the map.

## Making dispatch and the map agree

1. **Find which postal data your dispatch uses** — It is a Lua table or a JSON file in the dispatch resource. Note the number range and a few sample coordinates.
2. **Compare against your HUD resource** — If they are different files, they will eventually disagree. Point both at one shared file.
3. **Decide who owns the numbers** — Either the map or the script. If the map is baked, the script must match it — not the other way round.
4. **Spot-check three locations** — Pillbox, the airport and Paleto. If all three agree, the sets match.

## Questions

### Can I have postal codes without a script?

Yes — that is exactly what a baked postal map is. The numbers are part of the texture, so nothing runs on the server or the client.

### Do baked postal codes cost performance?

No. They are pixels in a texture the game already loads. There is no loop and no per-frame work.

### Can I change the numbers on a baked map?

Not by editing a config — the numbers are rendered into the image. It needs a re-render, which we do, but it is not instant. If you renumber often, run the no-postals map with a script.

### Why does my server show two different postal numbers?

Two sources of postal data disagreeing — usually a HUD resource and a dispatch resource shipping different lists. Point both at the same file.

## Related

- https://fam-tools.com/guides/install-fivem-minimap
- https://fam-tools.com/guides/minimap-technical-specification
- https://fam-tools.com/guides/redzone-server-map
