Grand opening25% off everything with FAM-261023-261025-UL4B9this weekendAdded for you at checkout Halloween Edition36 maps, limited runlimited runShop the drop

FREE TOOL · DrawMarker & CreateCheckpoint

FiveM marker types and checkpoint types

All 44 marker types and all 50 checkpoint types, searchable, with the call written out for whatever scale, colour and flags you pick. The id is the easy part — the look comes from the twenty-three arguments after it, and those are explained below rather than left as a row of zeros.

Marker names from the FiveM docs — Markers reference (42 named, 2 listed without a name). Argument descriptions from Cfx.re natives — DRAW_MARKER. Checkpoint ids from the FiveM docs — Checkpoints reference, which gives pictures and no names — so 43 of those rows are derived from the older family table and tagged as derived.

DrawMarker type 1 — MarkerTypeVerticalCylinder

Client-side, and inside a per-frame loop — a marker that is not redrawn every frame is not there.

-- MarkerTypeVerticalCylinder
-- Markers are not objects. Nothing is created and nothing persists: the call
-- paints one frame, so it belongs in a loop that runs every frame.
local ZONE = vector3(-47.8, -1757.5, 29.4)

CreateThread(function()
    while true do
        Wait(0)
        local ped = PlayerPedId()
        local dist = #(GetEntityCoords(ped) - ZONE)

        -- Stop drawing well before the marker is out of sight. Every DrawMarker
        -- in every resource is drawn every frame whether anyone can see it or
        -- not, and that is where the frames go on a busy server.
        if dist < 25.0 then
            DrawMarker(
                1,                        -- type
                ZONE.x, ZONE.y, ZONE.z - 0.95,   -- position, sunk into the road
                0.0, 0.0, 0.0,                   -- dir: zero, so rot is used
                0.0, 0.0, 0.0,              -- rot: only rotZ matters here
                1.5, 1.5, 0.5, -- scale
                255, 122, 26, 120,      -- colour and alpha
                false,                         -- bobUpAndDown
                false,                        -- faceCamera
                2,                               -- rotationOrder
                false,                      -- rotate
                nil, nil,                        -- textureDict, textureName
                false                            -- drawOnEnts
            )
        end

        if dist < 1.5 then
            -- Inside it. Show the prompt here, not a second marker.
        end
    end
end)

44 of 44

  • MarkerTypeUpsideDownCone

    A cone hanging point-down in the air. The original mission "go here" shape, and still the clearest way to mark a spot the player should walk to rather than a zone they stand inside.

    documented
  • MarkerTypeVerticalCylinder

    A flat-topped cylinder standing on the ground. The default choice for shops, garages, job points and anything with a radius, because the player can see its edge from inside it.

    documented
  • MarkerTypeThickChevronUp

    A thick chevron floating above the ground, pointing up. Reads as "here" rather than "that way" unless you rotate it.

    documented
  • MarkerTypeThinChevronUp

    The same chevron drawn thinner. Less obtrusive where you want several in a line.

    documented
  • MarkerTypeCheckeredFlagRect

    A rectangular checkered flag panel. Race finish lines, and the obvious marker for the end of anything timed.

    documented
  • MarkerTypeCheckeredFlagCircle

    The checkered flag pattern in a circle instead of a rectangle.

    documented
  • MarkerTypeVerticleCircle

    A circle standing on its edge, like a hoop to fly or drive through — the air-race marker. The reference spells it "Verticle"; the name is kept as published so a search for it finds this row.

    documented
  • MarkerTypePlaneModel

    A plane as a three-dimensional model rather than a flat symbol. Larger and more detailed than the plane glyph at id 33.

    documented
  • MarkerTypeLostMCTransparent

    The Lost MC club emblem, drawn semi-transparent. Story content art; occasionally reused for biker gang territory.

    documented
  • MarkerTypeLostMC

    The same Lost MC emblem, solid.

    documented
  • MarkerTypeNumber0

    A floating numeral 0.

    documented
  • MarkerTypeNumber1

    A floating numeral 1. Ids 10 to 19 run 0 to 9 in order, so the id for digit n is 10 + n.

    documented
  • MarkerTypeNumber2

    A floating numeral 2.

    documented
  • MarkerTypeNumber3

    A floating numeral 3.

    documented
  • MarkerTypeNumber4

    A floating numeral 4.

    documented
  • MarkerTypeNumber5

    A floating numeral 5.

    documented
  • MarkerTypeNumber6

    A floating numeral 6.

    documented
  • MarkerTypeNumber7

    A floating numeral 7.

    documented
  • MarkerTypeNumber8

    A floating numeral 8.

    documented
  • MarkerTypeNumber9

    A floating numeral 9.

    documented
  • MarkerTypeChevronUpx1

    One chevron lying flat, pointing along the marker’s own direction. This is the first id where leaving the rotation at zero visibly costs you something: unrotated it points north.

    documented
  • MarkerTypeChevronUpx2

    Two chevrons, same orientation. Reads as a stronger "this way".

    documented
  • MarkerTypeChevronUpx3

    Three chevrons. The usual choice for a one-way route or a mandatory direction of travel.

    documented
  • MarkerTypeHorizontalCircleFat

    A thick ring lying flat on the ground. A zone outline without the wall of a cylinder, so it does not block the view of what is inside it.

    documented
  • MarkerTypeReplayIcon

    The replay icon from the editor. Rarely used in scripts; it is here because the id is.

    documented
  • MarkerTypeHorizontalCircleSkinny

    A thin flat ring. The understated version of id 23, and the nicest marker for a parking spot.

    documented
  • MarkerTypeHorizontalCircleSkinny_Arrow

    The thin flat ring with an arrow on it, so the ring also shows a facing. Good for a parking bay where the direction matters.

    documented
  • MarkerTypeHorizontalSplitArrowCircle

    A flat circle broken by arrow shapes. Busier than the plain rings; the published picture is the only reliable guide to it.

    documented
  • MarkerTypeDebugSphere

    A plain unshaded sphere. It is the one marker that looks the same from every angle, which makes it the right tool for checking a coordinate and the wrong one for anything a player should see.

    documented
  • MarkerTypeDollarSign

    A dollar sign. Pay points, tills, ATMs, sale spots.

    documented
  • MarkerTypeHorizontalBars

    Flat bars. The reference gives no more than the name, so check the picture before committing to it.

    documented
  • MarkerTypeWolfHead

    A wolf head emblem from story content. Occasionally reused for hunting scripts.

    documented
  • MarkerTypeQuestionMark

    A question mark. The conventional marker for an unknown or random event.

    documented
  • MarkerTypePlaneSymbol

    A flat plane silhouette. Hangars, runways, air taxi stands.

    documented
  • MarkerTypeHelicopterSymbol

    A flat helicopter silhouette. Helipads, and the clearest way to say "rotary only".

    documented
  • MarkerTypeBoatSymbol

    A flat boat silhouette. Docks and slipways.

    documented
  • MarkerTypeCarSymbol

    A flat car silhouette. Garages and vehicle spawn points.

    documented
  • MarkerTypeMotorcycleSymbol

    A flat motorcycle silhouette.

    documented
  • MarkerTypeBikeSymbol

    A flat pedal bike silhouette.

    documented
  • MarkerTypeTruckSymbol

    A flat truck silhouette. Loading bays and haulage jobs.

    documented
  • MarkerTypeParachuteSymbol

    A parachute. Jump points and base-jump scripts.

    documented
  • no published name

    The reference lists this id and gives it no name. It draws something; what, is not written down anywhere we are willing to cite. Try it and look.

    undocumented
  • MarkerTypeSawbladeSymbol

    A sawblade. From Arena War content; a plausible hazard marker.

    documented
  • no published name

    The last id the reference lists, also unnamed. Same honest answer as 41.

    undocumented

LOOKING FOR MAP ICONS?

Markers are in the world. Blips are on the map.

These are different systems and the vocabulary blurs them. A marker is drawn in the three-dimensional world, where the player walks into it. A blip is a flat icon on the minimap and the pause map, created with AddBlipForCoord and given a sprite number. Most job points need one of each: a blip so the player can find the place and a marker so they know where to stand. This site already has the sprite list, so it is not repeated here.

THE ARGUMENTS

All twenty-four, including the six everyone zeroes

Each row gives the published description first and then what it means when you are trying to get a marker to look right. The direction and rotation arguments are the interesting pair: they are alternatives, not a set, and the choice is made by whether the direction vector is zero.

  • typeint

    The marker type, 0 to 43.

    The list above. Everything else on this page is about the other twenty-three.

  • posX, posY, posZfloat

    The position of the marker.

    The marker is drawn centred on this point, so a cylinder sunk into the road wants a Z a little under the ground rather than exactly on it.

  • dirX, dirY, dirZfloat

    The direction vector for the marker, or 0.0 to use rotX/Y/Z.

    A vector the marker points along. Pass 0.0, 0.0, 0.0 and the rotation arguments are used instead — which is what almost every copied snippet does, usually without knowing there was a choice. Give it 0.0, 0.0, 1.0 and a flat marker faces straight up.

  • rotX, rotY, rotZfloat

    The rotation for the marker. Only used if the direction vector is 0.0.

    Degrees. rotZ is the one you want for a chevron: it turns the arrow on the ground to point where the player should go. rotX at 90 stands a flat marker up on its edge.

  • scaleX, scaleY, scaleZfloat

    The scale of the marker.

    Metres, roughly. A cylinder at 1.0, 1.0, 1.0 is about a metre across and a metre tall; most zone markers want something like 1.5, 1.5, 0.5 — wide enough to stand in, short enough to see over.

  • red, green, blueint

    The colour of the marker.

    0 to 255 each.

  • alphaint

    The alpha of the marker.

    0 to 255. Anything over about 150 looks like a solid object rather than a hologram; 100 to 120 is the usual compromise.

  • bobUpAndDownBOOL

    Whether or not the marker should slowly animate up/down.

    The gentle float. It draws the eye, and it makes a ground zone look like it is hovering, so it suits cones and chevrons more than cylinders.

  • faceCameraBOOL

    Whether the marker should be a "billboard", as in, should constantly face the camera.

    Turns the marker into a flat image that always faces you. Right for a symbol or a digit, which should be readable from anywhere. Wrong for a cylinder, which stops looking like a volume.

  • rotationOrder (p19)int

    The order yaw, pitch and roll is applied. Usually 2.

    Only matters once you set more than one rotation axis. It is the argument most snippets show as a bare 2 with no comment.

  • rotateBOOL

    Rotations only apply to the heading.

    With this set, the marker spins on its vertical axis. A slowly rotating ring is the standard "interact here" look; combined with faceCamera it does nothing useful.

  • textureDictchar*

    A texture dictionary to draw the marker with, or NULL. Example: "GolfPutting"

    Lets a marker draw your own texture instead of the built-in shape. Pass nil for both texture arguments unless you have a streamed dictionary to point at.

  • textureNamechar*

    A texture name in textureDict to draw the marker with, or NULL. Example: "PuttingMarker"

    The texture inside that dictionary.

  • drawOnEntsBOOL

    Whether or not the marker should draw on intersecting entities.

    With it off, a marker is hidden by a car parked on top of it. With it on, the marker paints over the car. Neither is right in every case; false is the safer default.

HOW TO USE IT

A marker loop that does not cost you frames

DrawMarker, with a distance check

Client-side. The distance check is the whole difference between one marker and fifty of them being free.

-- MarkerTypeVerticalCylinder
-- Markers are not objects. Nothing is created and nothing persists: the call
-- paints one frame, so it belongs in a loop that runs every frame.
local ZONE = vector3(-47.8, -1757.5, 29.4)

CreateThread(function()
    while true do
        Wait(0)
        local ped = PlayerPedId()
        local dist = #(GetEntityCoords(ped) - ZONE)

        -- Stop drawing well before the marker is out of sight. Every DrawMarker
        -- in every resource is drawn every frame whether anyone can see it or
        -- not, and that is where the frames go on a busy server.
        if dist < 25.0 then
            DrawMarker(
                1,                        -- type
                ZONE.x, ZONE.y, ZONE.z - 0.95,   -- position, sunk into the road
                0.0, 0.0, 0.0,                   -- dir: zero, so rot is used
                0.0, 0.0, 0.0,              -- rot: only rotZ matters here
                1.5, 1.5, 0.5, -- scale
                255, 122, 26, 120,      -- colour and alpha
                false,                         -- bobUpAndDown
                false,                        -- faceCamera
                2,                               -- rotationOrder
                false,                      -- rotate
                nil, nil,                        -- textureDict, textureName
                false                            -- drawOnEnts
            )
        end

        if dist < 1.5 then
            -- Inside it. Show the prompt here, not a second marker.
        end
    end
end)
CreateCheckpoint, created once

Client-side, outside any per-frame loop. SetCheckpointCylinderHeight is what stops a race gate being a ten-metre pillar.

-- Checkpoints are the opposite of markers: the game owns them.
-- Create one once, keep the handle, delete it when you are done. Putting
-- CreateCheckpoint in a Wait(0) loop makes a new checkpoint sixty times a
-- second, which is the usual cause of a race that slows to a crawl.
local HERE = vector3(-47.8, -1757.5, 29.4)
local NEXT = vector3(-30.2, -1700.1, 29.6)

local cp = CreateCheckpoint(
    44,                    -- type
    HERE.x, HERE.y, HERE.z,      -- where it is
    NEXT.x, NEXT.y, NEXT.z,      -- where the arrow points
    10.0,                -- diameter, not radius
    255, 122, 26, 120,  -- colour and alpha
    3                 -- reserved: the number, on the numbered types
)

-- The column is 10 metres tall unless you say otherwise.
SetCheckpointCylinderHeight(cp, 3.0, 3.0, 10.0)

-- And when the player is through it:
-- DeleteCheckpoint(cp)

CHECKPOINTS

Why the numbers moved, and how this page handled it

The checkpoint ids changed at around game build 2189. The current reference lists them 0 to 49 as pictures with no names; the older native page describes them as families of five — a cylinder or a ring with one arrow, two arrows, three arrows, a cycling arrow or a checker pattern — but under the old numbering. Lining the two up gives an offset of 2: the old table’s two unknown slots land exactly on the two the current page marks unused, the numbered cylinder family lands exactly on the current numbered family, and the three plain cylinders at the end land exactly on the last three ids. The reference suggests subtracting three, which those three landmarks disagree with. We have gone with what the landmarks say, labelled every row derived, and left the pictures as the final word.

Old id rangeAs the native page describes it
0-4Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
5-9Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
10-14Ring: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
15-191 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
20-24Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
25-29Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
30-34Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
35-38Ring: Airplane Up, Left, Right, UpsideDown
39?
40Ring: just a ring
41?
42-44Cylinder w/ number (uses 'reserved' parameter)
45-47Cylinder no arrow or number

RESERVED

The argument that only matters on three types

On checkpoint types 44, 45 and 46 the reserved argument is not reserved at all: it chooses the number drawn on the cylinder, and above 99 it also attaches one of the markers from the list at the top of this page. Everywhere else, pass 0.

reservedWhat gets drawn
0 – 99The number itself, 0 to 99, with no marker beside it.
100 – 109The digit 0 to 9, with marker 20 — one flat chevron.
110 – 119The digit 0 to 9, with marker 21 — two chevrons.
120 – 129The digit 0 to 9, with marker 22 — three chevrons.
130 – 139The digit 0 to 9, with marker 23 — the fat flat ring.
140 – 149The digit 0 to 9, with marker 24 — the replay icon.
150 – 159The digit 0 to 9, with marker 25 — the skinny flat ring.
160 – 169The digit 0 to 9, with marker 26 — the skinny ring with an arrow.
170 – 179The digit 0 to 9, with marker 27 — the split-arrow circle.
180 – 189The digit 0 to 9, with marker 28 — the debug sphere.
  • typeint

    The checkpoint type.

    The list above. Ids shifted between builds, so an id copied from a 2017 script may not be the shape you expect.

  • posX1, posY1, posZ1float

    The position of the checkpoint.

  • posX2, posY2, posZ2float

    The position of the next checkpoint to point to.

    This is what the arrow on an arrow-type checkpoint aims at. Pass the same coordinates as the checkpoint itself and the arrow has nothing to point at, which is why so many race scripts have a checkpoint with a jittering arrow.

  • diameterfloat

    The diameter of the checkpoint.

    A diameter, not a radius — the argument markers get wrong in the other direction. 10.0 is a comfortable car-sized gate.

  • red, green, blue, alphaint

    The color of the checkpoint.

    0 to 255 each. The native page does not state the ranges; they are the usual byte values.

  • reservedint

    Special parameter, see below for details. Usually set to 0 in the scripts.

    Only meaningful for the numbered types, where it chooses the number and the marker drawn with it.

QUESTIONS

About markers and checkpoints

How many marker types does FiveM have?
The marker reference lists 44 ids, 0 to 43. 42 of them carry a published name; 2 are listed with no name at all, and this page says so rather than inventing one. The one you have seen most is type 1, the vertical cylinder — it is the default zone marker on practically every roleplay server.
What do the dir and rot arguments of DrawMarker do?
They are two ways of aiming the same marker, and only one is used at a time. dirX/dirY/dirZ is a direction vector the marker points along; rotX/rotY/rotZ is a rotation in degrees. If the direction vector is all zeros — which is what nearly every copied snippet passes — the rotation is used instead. So the six arguments people leave at zero are not dead weight: they are the reason a chevron marker always points north until you set rotZ.
Why is my DrawMarker not showing up?
Almost always because it is not being drawn every frame. DrawMarker paints a single frame and creates nothing, so it has to sit inside a loop with Wait(0) in a client script. The other two usual causes are an alpha of 0 and a Z coordinate that puts the marker under the road — subtract about a metre from the ground Z for a cylinder, and you will see its top at ankle height where it belongs.
What is the difference between a marker and a checkpoint?
Who owns it. A marker is a drawing instruction: you issue it every frame and nothing exists between frames. A checkpoint is an entity the game keeps — you create it once, hold the handle, and delete it when you are finished. That means a marker in a loop is correct and a checkpoint in a loop is a leak, which is the single most common performance bug in race scripts.
Do bobUpAndDown, faceCamera and rotate work together?
bobUpAndDown and rotate combine fine — a floating, slowly spinning ring is the standard interaction marker. faceCamera is the one to be careful with: it flattens the marker into a billboard that always turns towards the player, which makes a symbol or a digit readable from any angle but destroys the sense of volume on a cylinder, and makes rotate pointless because a plane facing you cannot be seen to spin.
Are the checkpoint type numbers the same on every game build?
No, and this is the trap. The ids shifted at around game build 2189, so an id copied from an older script does not draw the same shape today. The current reference numbers them 0 to 49 with pictures and no names; the older native page describes them in families but with the old numbering. Comparing the two, the landmarks line up at an offset of 2, not the three the reference suggests — so this page gives the family for each current id, marks it derived, and tells you to confirm against the picture.