# Hiding and replacing the FiveM crosshair

> Control the FiveM aiming reticle: hide HUD component 14, draw an aspect-correct custom crosshair with DrawRect, or overlay one in NUI per weapon.

Source: https://fam-tools.com/guides/fivem-crosshair-reticle · FAM Tools · published 2026-09-11 · updated 2026-09-11 · about 8 min

**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.

## Key points

- The reticle is HUD component **14**.
- Hiding lasts one frame — call it in a `Wait(0)` loop while aiming.
- `DrawRect` uses 0–1 screen units; correct for aspect ratio.
- Sniper scopes are a separate overlay from the reticle.

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 the reticle

*client.lua*

```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*

```lua
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.

## 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.

## Related

- https://fam-tools.com/guides/fivem-first-person-aiming
- https://fam-tools.com/guides/fivem-weapon-camera-shake-sway
- https://fam-tools.com/guides/fivem-disable-combat-roll-quickswap
- https://fam-tools.com/guides/fivem-recoil-script
