coordinatesscriptingmap11 min read · updated 9/11/2026

GTA V map coordinates explained for FiveM scripting

Every job marker, garage, shop and spawn point on a FiveM server is a set of numbers: where on the map, how high, and which way it faces. Once you understand how GTA V lays out those numbers, reading a config file or placing a new location takes seconds instead of trial and error. This guide explains the coordinate system, the Lua types FiveM gives you for it, and the quickest ways to capture a position in game.

Short answer: GTA V uses a right-handed world where X runs west–east, Y runs south–north and Z is height, all in metres. A position is stored as vector3(x, y, z) and a position plus facing as vector4(x, y, z, heading), where heading is 0–360 degrees with 0 facing north. Get your own position with GetEntityCoords(PlayerPedId()) and your facing with GetEntityHeading.

GTA 5 Map Coordinates in FiveM: vector3, Heading and Getting Coords

#The three axes

The GTA V map is one continuous world measured in metres from an origin near the middle of Los Santos. The map is taller than it is wide, which is why the minimap textures are arranged in a tall grid — see the minimap technical specification.

AxisDirectionRough range on the playable map
XWest (−) to East (+)about −3,700 to +4,300
YSouth (−) to North (+)about −4,000 to +8,000
ZDown (−) to Up (+)sea level ≈ 0; Mount Chiliad peak ≈ 800

#Heading: which way something faces

Heading is a rotation around the vertical axis in degrees, from 0 to 360. GTA V measures it counter-clockwise from north, which surprises people used to compass bearings:

HeadingFaces
0 (or 360)North
90West
180South
270East

That is why a car spawned with heading 90 points left on the map. Headings matter for vehicle spawns, ped placement and doors, and they are the fourth number in most config entries.

#vector3, vector4 and distance in Lua

CfxLua has built-in vector types. They are faster and easier to read than tables of numbers, and they support arithmetic.

Working with vectors
local cityHall = vector3(-544.9, -204.5, 38.2)
local garage   = vector4(215.8, -810.1, 30.7, 157.0) -- x, y, z, heading

-- Access components
print(garage.x, garage.y, garage.z, garage.w)
print(garage.xyz) -- the position part as a vector3

-- Distance between two points
local pos = GetEntityCoords(PlayerPedId())
local dist = #(pos - cityHall)
if dist < 3.0 then
    print('near city hall')
end

#Getting your current coordinates

The fastest way to collect positions for configs is a small command that prints and copies them.

client.lua — /coords
RegisterCommand('coords', function()
    local ped = PlayerPedId()
    local c = GetEntityCoords(ped)
    local h = GetEntityHeading(ped)
    local line = ('vector4(%.2f, %.2f, %.2f, %.2f)'):format(c.x, c.y, c.z, h)
    print(line)                          -- shows in the F8 console
    TriggerEvent('chat:addMessage', { args = { 'coords', line } })
end, false)
  1. Stand exactly where the marker or spawn should be, facing the right way.
  2. Type /coords and copy the line from the F8 console.
  3. Paste it into the script’s config.
  4. For a vehicle, sit in it and read the vehicle’s coords instead: GetEntityCoords(GetVehiclePedIsIn(ped, false)).

Admin menus such as vMenu and txAdmin’s in-game menu can also show coordinates, and txAdmin can teleport you to a waypoint or to typed coordinates.

#Finding the ground height

A Z value taken on a slope or from a map website is often slightly wrong, so things spawn in the ground or float. Ask the game for the ground height at an X/Y:

client.lua
local function groundZ(x, y)
    for height = 1000.0, 0.0, -25.0 do
        RequestCollisionAtCoord(x, y, height)
        Wait(0)
        local found, z = GetGroundZFor_3dCoord(x, y, height, false)
        if found then return z end
    end
    return nil
end

Collision only exists where the world has streamed in, which is why the function requests collision at each height it tries. For spawns, add half a metre to the ground Z and let the ped settle.

#Approximate coordinates of well-known places

Handy for testing teleports and sanity-checking configs. These are rounded and approximate — capture exact positions in game for anything you place.

PlaceXYZ
Legion Square195-93530
Los Santos International Airport-1035-273514
Pillbox Hill Medical Center300-58543
Mission Row Police Station430-98030
Vinewood sign7101200345
Sandy Shores1850370034
Paleto Bay-150640031
Mount Chiliad summit5005595795

Rounded values for orientation only.

Zone and district names such as “Vinewood” or “Sandy Shores” can be read from coordinates with GetNameOfZone — see GTA V zone names.

Questions

How do I get my coordinates in FiveM?
Use GetEntityCoords(PlayerPedId()) in a client script, or make a /coords command that prints them to the F8 console. Many admin menus can show them too.
What is the difference between vector3 and vector4?
vector3 is a position (x, y, z). vector4 adds a fourth value, usually the heading, so it describes where something is and which way it faces.
Which way is heading 0 in GTA V?
North. Heading increases counter-clockwise, so 90 is west, 180 is south and 270 is east.
Why does my NPC or car spawn under the ground?
The Z value is too low or the area had not loaded. Use the ground height from GetGroundZFor_3dCoord plus a small offset.
How do I measure the distance between two points?
Subtract the vectors and take the length: #(pointA - pointB). It returns metres.

Ready to pick a map?

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