Combatbeginner8 min readupdated 11 Sept 2026

Hiding and replacing the FiveM crosshair

The short answer

Call HideHudComponentThisFrame(14) every frame while aiming to hide GTA’s reticle. To draw your own, use two DrawRect calls at the centre of the screen (height scaled by GetAspectRatio(false) so the lines look equal) or an NUI overlay. Keep the loop asleep when the player is not aiming.

Hardcore roleplay servers remove the crosshair so shooting depends on sights; PvP servers often replace GTA’s dot with a cleaner, more visible crosshair. Both start with the same thing: the reticle is HUD component 14, and it can be hidden frame by frame.

Hiding and replacing the FiveM crosshair — illustrated with a FiveM-compatible minimap render

#Hiding the reticle

client.lua
CreateThread(function()
    while true do
        local sleep = 250
        if IsPlayerFreeAiming(PlayerId()) then
            sleep = 0
            HideHudComponentThisFrame(14)
        end
        Wait(sleep)
    end
end)

To keep the reticle for some weapons (for example tasers for police), check GetSelectedPedWeapon(PlayerPedId()) against a table before hiding.

#Drawing a custom crosshair

client.lua — a thin white plus
local LEN, THICK = 0.006, 0.0008

CreateThread(function()
    while true do
        local sleep = 250
        if IsPlayerFreeAiming(PlayerId()) then
            sleep = 0
            HideHudComponentThisFrame(14)
            local r = GetAspectRatio(false)
            DrawRect(0.5, 0.5, LEN * 2, THICK * r, 255, 255, 255, 220)
            DrawRect(0.5, 0.5, THICK, LEN * 2 * r, 255, 255, 255, 220)
        end
        Wait(sleep)
    end
end)

Screen units run from 0 to 1 on both axes, so a vertical length has to be multiplied by the aspect ratio to match the horizontal one in pixels.

#An NUI crosshair

For images, animations or player-configurable styles, draw the crosshair in NUI: a centred element in your HTML that the Lua side shows with SendNUIMessage({ crosshair = true }) when aiming starts and hides when it stops. Send messages only on change, not every frame.

#What players can change themselves

GTA V’s own display settings let players turn the reticle on or off and change its size. Your script’s hide runs on top of that, so a server rule always wins; a server that keeps the reticle cannot force it bigger than a player chose.

Share this guideXRedditFacebook

Questions

How do I remove the crosshair in FiveM?
Call HideHudComponentThisFrame(14) every frame while the player aims.
Which HUD component is the reticle?
Component 14.
Why is my custom crosshair stretched?
DrawRect uses screen units on both axes. Multiply vertical sizes by GetAspectRatio(false).
Does hiding the reticle affect sniper scopes?
No. The scope overlay is separate from component 14.

Ready to pick a map?

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

Relevant to what you just read