<!-- fivemad.com, Markdown source of https://fivemad.com/docs/tools/blip-marker-browser -->
> Source: https://fivemad.com/docs/tools/blip-marker-browser
> Section: Tools
> Tags: blips, markers, checkpoints, SetBlipSprite, DrawMarker, CreateCheckpoint
> Tool: https://fivemad.com/tools/blip-marker-browser
> Last updated: 2026-09-25
> Site map for assistants: https://fivemad.com/llms.txt

# Blip, Marker & Checkpoint Browser

Pick a GTA V blip sprite and colour, a DrawMarker type or a race checkpoint by picture, tune it, and copy a ready FiveM Lua snippet.

The Blip, Marker & Checkpoint Browser shows every map blip sprite (966), blip colour (100), marker type (44) and checkpoint type (50) with a preview and its id. Click one to copy the id, tune the options in the side panel, and copy a Lua snippet that creates it.

Every snippet block on this page has a **Lua / JS / TS / C#** switcher in its corner. The choice is remembered across the site, and [the runtimes page](/docs/development/runtimes) explains what changes between them.

## What it is for

Blip sprite 52, colour 2, marker 1: scripts are full of these numbers and nobody remembers them. Instead of guessing and reconnecting, you pick the icon or shape by picture here, check how the colour looks on it, and paste a working snippet into your client script.

## Quick start

1. Pick a tab: **Sprites**, **Colours**, **Markers** or **Checkpoints**. The tab is kept in the URL (`?tab=markers`), so you can link straight to it.
2. Search by id or name in the box on the right. A number matches ids that start with it.
3. Click a tile. It becomes the selected one and its id is copied (the tile briefly says **Copied**).
4. Adjust the options in the panel (**Blip**, **Marker** or **Checkpoint**).
5. Copy the code block under the panel (`blip.lua`, `marker.lua` or `checkpoint.lua`).

## Sprites and colours

The **Sprites** and **Colours** tabs share the **Blip** panel.

| Option | What it does | Default |
| --- | --- | --- |
| **Colour** swatches | Pick the blip colour. Picking one also turns the tint preview on. | 0 (White) |
| **Tint preview** | Multiplies the sprite previews by the selected colour, the way the game tints white icons. | off |
| **Label** | The name shown in the map legend. | `My Blip` |
| **Scale** | Blip size, 0.3 to 2. | 0.8 |
| **Coords (x, y, z)** | Where the blip goes. Any `x, y, z` text works. | `215.76, -810.12, 30.73` |
| **Short range** | Only show it on the minimap when the player is nearby. | on |

The **Colours** tab lists every `SetBlipColour` value with its name and hex code. Some colours have **enemy** and **friendly** variants: picking one adds `SetBlipAsFriendly` to the snippet.

Most sprites are white and take the colour. A few (police, gang and mission icons) are already coloured and ignore it, which the tint preview shows too.

```lua title="blip.lua"
local blip = AddBlipForCoord(215.76, -810.12, 30.73)
SetBlipSprite(blip, 1) -- radar_level
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 0.8)
SetBlipColour(blip, 0) -- White
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName("My Blip")
EndTextCommandSetBlipName(blip)
```

`SetBlipDisplay(blip, 4)` shows the blip on both the pause map and the minimap.

## Markers

The **Markers** tab lists every `DrawMarker` type with a picture. The **Marker** panel:

| Option | What it does | Default |
| --- | --- | --- |
| **Scale X / Y / Z** | Size on each axis. | 1.0, 1.0, 1.0 |
| **Colour** | Any colour from the picker. | `#5db6e5` |
| **Alpha** | Opacity, 0 to 255. | 150 |
| **Blip colour presets** | The first 30 blip colours as quick picks, so a marker can match its blip. | |
| **Bob up and down** | Marker floats up and down. | off |
| **Rotate** | Marker spins. | off |
| **Face camera** | Marker always turns towards the camera. | off |
| **Draw distance** | Only draw it when the player is within this many metres. | 20 |
| **Coords** | Marker position (shared with the blip coords). | |

Markers only last one frame, so the snippet draws it every tick while you are close and sleeps 500 ms when you are not. The z is lowered by 0.98 so the marker sits on the ground when you paste player coordinates.

```lua title="marker.lua"
local pos = vector3(215.76, -810.12, 30.73)

CreateThread(function()
    while true do
        local sleep = 500
        local dist = #(GetEntityCoords(PlayerPedId()) - pos)
        if dist < 20.0 then
            sleep = 0
            DrawMarker(
                1, -- MarkerTypeVerticalCylinder
                pos.x, pos.y, pos.z - 0.98,
                0.0, 0.0, 0.0,   -- direction
                0.0, 0.0, 0.0,   -- rotation
                1.0, 1.0, 1.0,   -- scale
                93, 182, 229, 150,   -- rgba
                false, false, 2, false,
                nil, nil, false
            )
        end
        Wait(sleep)
    end
end)
```

## Checkpoints

The **Checkpoints** tab lists the `CreateCheckpoint` types (race cylinders, rings, arrows, flags). Ids match game build 2189 and newer. Types that are not used in game are dimmed. A checkpoint is created once and the game keeps drawing it until you delete it, so there is no per-frame loop.

| Option | What it does | Default |
| --- | --- | --- |
| **Number or icon (reserved)** | Only for types 44 to 46. Pick a group (numbers 0 to 99, or chevrons, circles, arrows and spheres with a digit, 100 to 189) and a value. The preview tile updates. | 1 |
| **Position (x, y, z)** | Where the checkpoint is. Shared with the blip and marker coords. | |
| **Next point (x, y, z)** | Only sets where the arrow faces. Pass the next checkpoint of the route. | `225.40, -798.90, 30.73` |
| **Diameter** | 0.5 to 20. | 4 |
| **Colour** / **Alpha** | Main colour. | `#5db6e5`, 120 |
| **Blip colour presets** | Quick picks for the main colour. | |
| **Icon colour** / **Alpha** | Colour of the arrow, flag or number inside. | white, 200 |
| **Cylinder height**: **Near**, **Far**, **Radius** | Height while the player is within the radius (near) and outside it (far). | 2.0, 2.0, 4.0 |
| **Delete when reached** | Adds a loop that deletes the checkpoint once the player is inside it. | on |

```lua title="checkpoint.lua"
local pos = vector3(215.76, -810.12, 30.73)
local nextPos = vector3(225.40, -798.90, 30.73) -- arrows point here

-- Created once. The game draws it every frame until you delete it.
local cp = CreateCheckpoint(
    12, -- Ring, 1 arrow
    pos.x, pos.y, pos.z,
    nextPos.x, nextPos.y, nextPos.z,
    4.0, -- diameter
    93, 182, 229, 120, -- rgba
    0 -- reserved
)
SetCheckpointCylinderHeight(cp, 2.0, 2.0, 4.0) -- near, far, radius
SetCheckpointRgba2(cp, 255, 255, 255, 200) -- icon colour, old name SetCheckpointIconRgba

CreateThread(function()
    while true do
        if #(GetEntityCoords(PlayerPedId()) - pos) < 2.0 then
            DeleteCheckpoint(cp)
            break
        end
        Wait(100)
    end
end)

AddEventHandler("onResourceStop", function(resource)
    if resource == GetCurrentResourceName() then DeleteCheckpoint(cp) end
end)
```

## Tips

- Use **Short range** for shops, garages and other static points so the minimap edge stays clean.
- `SetBlipScale` between 0.8 and 1.0 matches most vanilla blips.
- Set the same coordinates once: the blip, marker and checkpoint panels share one position, so a shop's blip and its marker line up.
- For a race, chain checkpoints by passing the following checkpoint as **Next point**, and use a chequered flag type for the last one.
- Grab coordinates on the [Interactive Map](/tools/interactive-map) and paste them into **Coords**.

## Common mistakes

- **Marker flickers or costs CPU.** `DrawMarker` must run every frame while visible, but the thread should sleep when the player is far away. Keep the distance check.
- **Checkpoints pile up.** `CreateCheckpoint` inside a loop creates a new one every tick. Create once, delete with `DeleteCheckpoint`.
- **Blip has no name.** The label needs the three text command natives (`BeginTextCommandSetBlipName`, `AddTextComponentSubstringPlayerName`, `EndTextCommandSetBlipName`).
- **Wrong checkpoint shape.** Type ids moved in build 2189. On an older game build, types can look different.

## Limitations

- Previews are pictures, not live renders. Colour and size in game can look a little different.
- Sprite, marker and checkpoint pictures load from the FiveM docs site. If one fails, an icon is shown instead.
- Everything else runs in your browser.

## Related tools

- [Interactive Map](/docs/tools/interactive-map)
- [Text Colors](/docs/tools/text-colors)
- [Controls Reference](/docs/tools/controls-reference)
- [Scaleform Reference](/docs/tools/scaleform-reference)
