Every crosshair cvar CS2 exposes after the September 2026 crosshair update, with the range the console accepts, the value the game ships with, and what it changes on screen.
All of these run in the developer console. Turn it on under Settings, Game, Enable Developer Console, then open it with the tilde key. The update moved the crosshair to whole pixels and renamed the size commands, so cl_crosshairsize is now cl_crosshair_length and cl_crosshairgap is now cl_crosshair_gap. Old configs that use the old names no longer change anything. The settings menu exposes a narrower range than the console for gap, which is why some values look impossible to set through the UI.
If you would rather not type any of this, build the crosshair visually in the generator and export a code, or paste an existing code into the decoder to see the exact commands behind it.
Length of each bar in pixels. Replaces cl_crosshairsize.
cl_crosshair_gap
-3840 to 3840 px (UI -10 to 128)
4
Space between the bars and the centre in pixels. 0 and 1 both close the cross and each step above adds a pixel. Only style 2 honours negative values. Replaces cl_crosshairgap.
cl_crosshair_thickness
0 to 32 px
2
Width of each bar in whole pixels. Also sets the size of the centre dot.
cl_crosshairdot
0 or 1
0
Draws a dot in the centre of the crosshair.
cl_crosshair_t
0 or 1
0
T-style crosshair. Removes the top bar on the cross styles and leaves left, right and bottom.
cl_crosshair_screen_height
240 to 65535
1080
The screen height the pixel sizes are meant for. CS2 scales the crosshair from this to your resolution, so a code looks the same size on any monitor.
Outline
Command
Range
Default
What it does
cl_crosshair_drawoutline
0, 1 or 2
1
Outline mode: 0 off, 1 a one-pixel border around each bar, 2 a half outline on the top and left edges only.
cl_crosshairoutline_r
0 to 255
0
Red channel of the outline colour. The outline is no longer always black.
cl_crosshairoutline_g
0 to 255
0
Green channel of the outline colour.
cl_crosshairoutline_b
0 to 255
0
Blue channel of the outline colour.
cl_crosshairoutline_a
0 to 255
255
Opacity of the outline. 255 is fully solid.
Colour and alpha
Command
Range
Default
What it does
cl_crosshaircolor_r
0 to 255
0
Red channel of the crosshair colour. There are no colour presets any more.
cl_crosshaircolor_g
0 to 255
255
Green channel of the crosshair colour.
cl_crosshaircolor_b
0 to 255
0
Blue channel of the crosshair colour.
cl_crosshaircolor_a
0 to 255
255
Opacity of the crosshair. 255 is fully solid. Replaces cl_crosshairalpha.
Dynamic behaviour
Command
Range
Default
What it does
cl_crosshair_dynamic_spread_limit
0 to 255
255
Caps how far the dynamic styles (0, 1 and 7) open up with inaccuracy.
cl_crosshair_dynamic_splitdist
0 to 127
3
How far the bars split apart on Dynamic Cross (Legacy).
cl_crosshair_dynamic_splitalpha_innermod
0 to 1
0
Alpha multiplier for the inner part of the split bars.
cl_crosshair_dynamic_splitalpha_outermod
0.3 to 1
1
Alpha multiplier for the outer part of the split bars.
cl_crosshair_dynamic_maxdist_splitratio
0 to 1
1
Share of the maximum distance at which the bars finish splitting. On Static Quad it sets the size of the four arcs.
cl_crosshair_recoil
0 or 1
1
The crosshair follows your spray pattern instead of staying at the centre of the screen. On by default since the update.
Scope dot
Command
Range
Default
What it does
cl_ironsight_dot_scale
0.1 to 2
1
Size of the dot on scoped weapons, from 0.1 to 2.
cl_ironsight_usecrosshaircolor
0 or 1
0
Draws the scope dot in your crosshair colour instead of the default.
Not in share codes
Command
Range
Default
What it does
crosshair
0 or 1
1
Master toggle. Set to 0 to hide the crosshair completely.
cl_crosshair_friendly_warning
0 or 1
1
Shows a warning marker on the crosshair when a teammate is in your line of fire.
cl_crosshair_sniper_width
0 to 20
1
Thickness of the thin scoped sniper crosshair lines.
cl_crosshair_sniper_show_normal_inaccuracy
0 or 1
0
Adds movement inaccuracy to the scoped sniper crosshair display.
apply_crosshair_code
a share code
none
Applies a full crosshair share code at once. Only the new CS… format is accepted.
Renamed or removed in the September 2026 update
Old command
Use instead
What it does
cl_crosshairsize
cl_crosshair_length
Renamed. Values are now pixels, not the old 0 to 10 scale.
cl_crosshairgap
cl_crosshair_gap
Renamed. Values are now pixels from the centre, not an offset from a base of four.
cl_crosshairthickness
cl_crosshair_thickness
Renamed. Values are now whole pixels.
cl_crosshairalpha
cl_crosshaircolor_a
Renamed. Alpha is now part of the colour.
cl_crosshaircolor
the three RGB channels
Removed. The five colour presets are gone; set the RGB channels instead.
cl_crosshair_outlinethickness
the outline mode
Removed. The outline is one pixel; choose full or half with the outline mode.
cl_crosshairusealpha
nothing
No longer part of the crosshair code. Alpha always applies.
cl_crosshairgap_useweaponvalue
nothing
No longer part of the crosshair code.
cl_fixedcrosshairgap
nothing
No longer part of the crosshair code.
A ready-to-paste config
This is the shape most professional players land on, written with the new command names: a small Static Cross, solid green, the bars right against the centre and no outline. Paste the whole block into the console, or drop it into your autoexec.cfg.
From there, three values do most of the work. Raise cl_crosshair_length to 3 to 5 if the crosshair feels too easy to lose, raise cl_crosshair_gap to 2 or 3 if you want to see more of the centre, and set cl_crosshair_drawoutline to 1 or 2 if the crosshair vanishes on bright walls.
Useful binds
Toggle the crosshair following your spray, which is handy while learning a recoil pattern:
bind "F4" "toggle cl_crosshair_recoil 0 1"
Swap between two saved crosshairs, for example a rifle crosshair and a bigger one for the AWP. Use new-format codes; CSGO- codes no longer work in binds:
Hide the crosshair for screenshots and bring it back with the same key:
bind "F7" "toggle crosshair 0 1"
Binds typed into the console last only for that session. To keep them, put the lines in autoexec.cfg and add +exec autoexec to your Steam launch options. Full instructions are in our guide on importing a crosshair code.
Picking values
Knowing the ranges is only half of it. For what actually works in a match, including length and gap guidance and colour choices per map, read best CS2 crosshair settings, or start from a pro crosshair code and adjust from there.
Frequently asked questions
Why does cl_crosshairsize no longer work in CS2?
The September 2026 crosshair update renamed it to cl_crosshair_length and switched it to pixels. cl_crosshairgap became cl_crosshair_gap, cl_crosshairthickness became cl_crosshair_thickness and cl_crosshairalpha became cl_crosshaircolor_a. Old configs need the new names and new values.
Which crosshair commands are saved in a share code?
Everything under shape, outline, colour, dynamic behaviour and scope dot on this page. The master crosshair toggle, the friendly fire warning and the two sniper commands are not part of the format and have to be set separately.
Why does the console accept values the settings menu will not?
The menu sliders use a narrower range than the cvars themselves. The gap slider runs from -10 to 128, while cl_crosshair_gap accepts -3840 to 3840, and those values survive a round trip through a share code.
What does the gap value mean now?
It is the space between the bars and the centre in pixels. Gap 0 and gap 1 both close the cross, and each step above adds one pixel. Negative values only do something on Dynamic Cross (Legacy), style 2.
How do I make crosshair commands stick between sessions?
Put them in autoexec.cfg in the game csgo/cfg folder and add +exec autoexec to your Steam launch options, or just import a share code, which the game saves to your settings automatically.