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.
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)- MarkerTypeUpsideDownConedocumented
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.
- MarkerTypeVerticalCylinderdocumented
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.
- MarkerTypeThickChevronUpdocumented
A thick chevron floating above the ground, pointing up. Reads as "here" rather than "that way" unless you rotate it.
- MarkerTypeThinChevronUpdocumented
The same chevron drawn thinner. Less obtrusive where you want several in a line.
- MarkerTypeCheckeredFlagRectdocumented
A rectangular checkered flag panel. Race finish lines, and the obvious marker for the end of anything timed.
- MarkerTypeCheckeredFlagCircledocumented
The checkered flag pattern in a circle instead of a rectangle.
- MarkerTypeVerticleCircledocumented
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.
- MarkerTypePlaneModeldocumented
A plane as a three-dimensional model rather than a flat symbol. Larger and more detailed than the plane glyph at id 33.
- MarkerTypeLostMCTransparentdocumented
The Lost MC club emblem, drawn semi-transparent. Story content art; occasionally reused for biker gang territory.
- MarkerTypeLostMCdocumented
The same Lost MC emblem, solid.
- MarkerTypeNumber0documented
A floating numeral 0.
- MarkerTypeNumber1documented
A floating numeral 1. Ids 10 to 19 run 0 to 9 in order, so the id for digit n is 10 + n.
- MarkerTypeNumber2documented
A floating numeral 2.
- MarkerTypeNumber3documented
A floating numeral 3.
- MarkerTypeNumber4documented
A floating numeral 4.
- MarkerTypeNumber5documented
A floating numeral 5.
- MarkerTypeNumber6documented
A floating numeral 6.
- MarkerTypeNumber7documented
A floating numeral 7.
- MarkerTypeNumber8documented
A floating numeral 8.
- MarkerTypeNumber9documented
A floating numeral 9.
- MarkerTypeChevronUpx1documented
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.
- MarkerTypeChevronUpx2documented
Two chevrons, same orientation. Reads as a stronger "this way".
- MarkerTypeChevronUpx3documented
Three chevrons. The usual choice for a one-way route or a mandatory direction of travel.
- MarkerTypeHorizontalCircleFatdocumented
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.
- MarkerTypeReplayIcondocumented
The replay icon from the editor. Rarely used in scripts; it is here because the id is.
- MarkerTypeHorizontalCircleSkinnydocumented
A thin flat ring. The understated version of id 23, and the nicest marker for a parking spot.
- MarkerTypeHorizontalCircleSkinny_Arrowdocumented
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.
- MarkerTypeHorizontalSplitArrowCircledocumented
A flat circle broken by arrow shapes. Busier than the plain rings; the published picture is the only reliable guide to it.
- MarkerTypeDebugSpheredocumented
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.
- MarkerTypeDollarSigndocumented
A dollar sign. Pay points, tills, ATMs, sale spots.
- MarkerTypeHorizontalBarsdocumented
Flat bars. The reference gives no more than the name, so check the picture before committing to it.
- MarkerTypeWolfHeaddocumented
A wolf head emblem from story content. Occasionally reused for hunting scripts.
- MarkerTypeQuestionMarkdocumented
A question mark. The conventional marker for an unknown or random event.
- MarkerTypePlaneSymboldocumented
A flat plane silhouette. Hangars, runways, air taxi stands.
- MarkerTypeHelicopterSymboldocumented
A flat helicopter silhouette. Helipads, and the clearest way to say "rotary only".
- MarkerTypeBoatSymboldocumented
A flat boat silhouette. Docks and slipways.
- MarkerTypeCarSymboldocumented
A flat car silhouette. Garages and vehicle spawn points.
- MarkerTypeMotorcycleSymboldocumented
A flat motorcycle silhouette.
- MarkerTypeBikeSymboldocumented
A flat pedal bike silhouette.
- MarkerTypeTruckSymboldocumented
A flat truck silhouette. Loading bays and haulage jobs.
- MarkerTypeParachuteSymboldocumented
A parachute. Jump points and base-jump scripts.
- no published nameundocumented
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.
- MarkerTypeSawbladeSymboldocumented
A sawblade. From Arena War content; a plausible hazard marker.
- no published nameundocumented
The last id the reference lists, also unnamed. Same honest answer as 41.
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
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)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 range | As the native page describes it |
|---|---|
| 0-4 | Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 5-9 | Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 10-14 | Ring: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 15-19 | 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 20-24 | Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 25-29 | Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 30-34 | Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker |
| 35-38 | Ring: Airplane Up, Left, Right, UpsideDown |
| 39 | ? |
| 40 | Ring: just a ring |
| 41 | ? |
| 42-44 | Cylinder w/ number (uses 'reserved' parameter) |
| 45-47 | Cylinder 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.
| reserved | What gets drawn |
|---|---|
| 0 – 99 | The number itself, 0 to 99, with no marker beside it. |
| 100 – 109 | The digit 0 to 9, with marker 20 — one flat chevron. |
| 110 – 119 | The digit 0 to 9, with marker 21 — two chevrons. |
| 120 – 129 | The digit 0 to 9, with marker 22 — three chevrons. |
| 130 – 139 | The digit 0 to 9, with marker 23 — the fat flat ring. |
| 140 – 149 | The digit 0 to 9, with marker 24 — the replay icon. |
| 150 – 159 | The digit 0 to 9, with marker 25 — the skinny flat ring. |
| 160 – 169 | The digit 0 to 9, with marker 26 — the skinny ring with an arrow. |
| 170 – 179 | The digit 0 to 9, with marker 27 — the split-arrow circle. |
| 180 – 189 | The 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?
What do the dir and rot arguments of DrawMarker do?
Why is my DrawMarker not showing up?
What is the difference between a marker and a checkpoint?
Do bobUpAndDown, faceCamera and rotate work together?
Are the checkpoint type numbers the same on every game build?
MORE
The rest of the free tools
Type a string and see the ~r~ codes drawn the way the game draws them.
Hash calculatorGetHashKey as you type, with the negative int32 your console prints.
Interactive mapClick anywhere on the map for the vector3 to drop a marker at.
All the free toolsThe flag calculators, the animation and cutscene lists, every reference table.