CS2 Crosshair Guide: Best Settings, Codes and New Commands
The new pixel crosshair, all 10 styles, every command, presets that work after the update, codes, pro crosshairs and a live setup script
In September 2026 Valve rebuilt the crosshair in Counter-Strike 2. Sizes are now real pixels, there are 10 styles instead of 3, the outline got its own color, several console commands were renamed, and every old crosshair code stopped working. If your crosshair suddenly looks different or your code says "Invalid or old crosshair code", that's why.
In this guide I go through what changed, where the settings are now, what every option and command does, and which settings make sense for rifles, tapping and stretched resolutions. Everything is checked against the current game files. If you came from the classic game, my CS 1.6 crosshair guide shows how it worked there.
CS2 Crosshair Update: What Valve Changed
The change came in three steps, and some guides still describe only the first one:
- 22 September
- Rush Hour update. New crosshair system: length, thickness and gap in pixels, new styles, renamed commands. Codes made before this date stop importing.
- 23 September
- Pixel sizes rescale automatically when you change resolution. Half outline added, Static Square style added, gap 0 fixed.
- 30 September
-
Static Quadrant style, outline color, negative gap allowed again, better display of weapon inaccuracy, grenade crosshair in freeze time. New code format: codes now start with
CSand have no dashes. - 2 October
- Grenade crosshair fix for thickness 3, workshop maps allowed to use the new settings.
Length 5 means 5 pixels. The game remembers the resolution you set it at and rescales it, so the crosshair looks the same on 1080p and 1440p.
Codes starting with CSGO- don't import anymore, the game shows "Invalid or old crosshair code". That includes codes made between 22 and 29 September.
cl_crosshairsize, cl_crosshairgap, cl_crosshairthickness and cl_crosshairalpha have new names. Old autoexec lines won't give you the same crosshair.
The game also shows a note in the menu: "The scale of this setting has changed. You may want to adjust it to your liking." The game carried your old settings over, but not exactly, so it's worth checking your crosshair once.
How to Change Your Crosshair in CS2
Open Settings → Game → Crosshair / Scopes. The page has four blocks:
- Style Settings
- Style, Follow Recoil, Center Dot, T style, friendly fire warning.
- Crosshair Settings
- Length, thickness, gap, outline, color and transparency, outline color.
- Sniper Sights
- Scope line thickness, scope dot, inaccuracy, re-zoom and unscope delay.
- Grenade Line-up
- The helper crosshair for lining up grenade throws.
The preview updates live, and the buttons next to it reset the crosshair, undo recent changes, share or import a code and switch the dynamic preview on and off. I set the look in the menu first, then save the final values as commands in a config, so the crosshair survives a reinstall or a new PC. Console commands also give exact values and are the only way to switch between several crosshairs with a key.
CS2 Crosshair Styles Explained
Before the update CS2 had three styles. Now there are ten. Dynamic styles change size when you move or shoot, static ones never move. The new dynamic styles (0, 1 and 7) show the weapon's real inaccuracy, so the crosshair grows exactly as much as your shots spread. That's a decent teacher for counter-strafing, before it was more of a hint.
| Value | Name in the menu | Type | What it's good for |
|---|---|---|---|
0 |
Dynamic Cross | dynamic | Learning movement and spray inaccuracy. Shows real spread. |
1 |
Dynamic Circle | dynamic | The same idea as a circle. |
2 |
Dynamic Cross (Classic) | dynamic | The old "Classic" dynamic crosshair, bars split while moving. |
3 |
Static Circle | static | A ring that doesn't move. |
4 |
Static Cross | static | The classic static cross. What most players and pros use. |
5 |
Dynamic Cross (Legacy / Shot Feedback) | dynamic | The old "Legacy" style: opens only when you shoot. |
6 |
Dot Only | static | Just a dot. Clean, but harder to see in smoke and chaos. |
7 |
Dynamic Quadrant | dynamic | The new default. Four corners that show spread. |
8 |
Static Square | static | A small box. Some like it for tapping at head level. |
9 |
Static Quadrant | static | Four corners that don't move. |
cl_crosshairstyle 4
Old values changed meaning: Classic was 2, Classic Static 4, Legacy 5. In the new list 2 and 4 are the same kind of crosshair as before, 5 is still the shot feedback one. If you used cl_crosshairstyle 4, you're fine.
CS2 Crosshair Settings and Commands
Every option from the menu with its console command. Length, thickness and gap are in pixels and assume the resolution you set them at.
Length and Thickness
Length is how long each bar is, thickness is how wide. A short thin crosshair is precise for long range taps but gets lost in fast fights. One extra pixel of thickness often fixes visibility without covering the target.
cl_crosshair_length 4 cl_crosshair_thickness 1
Length goes from 0 to 255 pixels (default 8), thickness from 0 to 32 (default 2), and never draws thinner than 1 pixel.
Gap
The space between the center and the bars. A tight gap feels precise for rifles, a bigger one makes it easier to see the target inside the crosshair. Since 30 September the console accepts negative values again, Valve's notes mention it for the Dynamic Cross (Classic) style.
cl_crosshair_gap 2
Center Dot
A dot in the middle. Good with a small crosshair for tapping, too busy with a big one.
cl_crosshairdot 1
Outline
The outline keeps the crosshair visible on bright walls and in mixed lighting. The old outline thickness setting is gone. Now there are three modes: 0 none, 1 full, 2 half (only the top-left edges). The outline also has its own color and opacity, black by default.
cl_crosshair_drawoutline 1 cl_crosshairoutline_r 0 cl_crosshairoutline_g 0 cl_crosshairoutline_b 0 cl_crosshairoutline_a 255
Color and Transparency
The color presets (red, green, yellow and so on) are gone. Every color is now just RGB plus opacity. Pick something that doesn't exist on the maps: cyan, light green, yellow or pink work well. Fully opaque is easier to follow in a spray.
cl_crosshaircolor_r 0 cl_crosshaircolor_g 255 cl_crosshaircolor_b 255 cl_crosshaircolor_a 255
T Style
Removes the top bar, so nothing covers the head above your crosshair. No accuracy bonus, just a cleaner view up there.
cl_crosshair_t 1
Follow Recoil
The crosshair moves with the recoil and shows where the gun is pulling. Useful for a few sessions to see spray patterns, distracting in real matches. I keep it off.
cl_crosshair_recoil 0
Friendly Fire Warning
A warning sign when you aim at a teammate. The menu has three options: Always Off, Only on Default Crosshair, Always On.
cl_crosshair_friendly_warning 1
Old and New Crosshair Commands
If you have an old config, change these lines. Commands that are not in this list kept their names.
- cl_crosshairsize
- →
cl_crosshair_length - cl_crosshairthickness
- →
cl_crosshair_thickness - cl_crosshairgap
- →
cl_crosshair_gap - cl_crosshairalpha
- →
cl_crosshaircolor_a - cl_crosshaircolor
- removed, use
cl_crosshaircolor_r,_g,_b - cl_crosshairusealpha
- removed, opacity is always on
- cl_crosshair_outlinethickness
- removed, use
cl_crosshair_drawoutline 0 / 1 / 2 - cl_crosshairgap_useweaponvalue
- removed, the Deployed Weapon Gap option no longer exists
Don't just rename the commands and keep the old numbers. Old size 2 is not 2 pixels, so take the values from the menu after you set the crosshair there. The full list of crosshair commands with defaults is also in my CS2 console commands guide.
CS2 Sniper Scope and Scope Dot Settings
Scope Dot Color and Size (AUG and SG 553)
The AUG and SG 553 scopes have their own dot, green by default. You can give it your crosshair color and change its size. Since 30 September both settings are part of your crosshair code.
cl_ironsight_usecrosshaircolor 1 cl_ironsight_dot_scale 1
Dot scale goes from 0.1 to 2.
Scoped Sniper Inaccuracy
Shows a moving inaccuracy indicator inside the sniper scope. It helps beginners understand when the shot will be accurate, most experienced players turn it off for a clean scope.
cl_sniper_show_inaccuracy 0
More on getting the classic look back in restore the classic AWP scope.
Re-Zoom and Unscope Delay
Auto re-zoom puts you back in the scope after a shot with the AWP or SSG 08. Turn it off if you like to unscope and reposition after every shot. The unscope delay keeps the scope for a moment after the shot, so you see whether you hit.
cl_sniper_auto_rezoom 1 cl_sniper_delay_unscope 0
Sniper Crosshair Thickness
Thickness of the scope lines. The menu stops at 6, the console doesn't. I tested big values: around 100 the lines get really fat, and from about 650 they cover the whole scope and you see almost nothing.
cl_crosshair_sniper_width 2
Crosshairs While Spectating
cl_show_observer_crosshair shows the crosshair of the player you watch: 0 never, 1 friends and party, 2 everyone. cl_observed_bot_crosshair decides which crosshair you see on bots: 0 always yours, 1 yours only when you can take over the bot, 2 the default one.
CS2 Grenade Line-up Crosshair
CS2 has a separate helper crosshair for grenades. Pull the pin, hold it for a moment, and a reticle with ticks shows up to help with lineups. You can turn it on or off for each grenade type and set how long you hold before it appears. Since 30 September it also works in freeze time, so you can line up instant smokes while holding the attack button.
cl_grenadecrosshair_smoke 1 cl_grenadecrosshair_flash 1 cl_grenadecrosshair_explosive 1 cl_grenadecrosshair_fire 1 cl_grenadecrosshair_decoy 0 cl_grenadecrosshairdelay_smoke 1 cl_grenadecrosshair_keepusercrosshair 1
The delay is in seconds, from 0 to 5, default 2. keepusercrosshair keeps your normal crosshair on screen together with the reticle. For lineups you throw the same way every time, look at my grenade binds.
Best CS2 Crosshair Settings for Competitive and Premier
In Competitive and Premier the crosshair should be the most boring thing on your screen. Same look every round, never in the way, always where the first bullet goes.
Static or Dynamic Crosshair
A static crosshair never moves, so your eyes only track the enemy. That's why most experienced players use Static Cross. The new dynamic styles are better than before because they show real spread. Play a few sessions with Dynamic Cross to feel when your shots are accurate after a counter-strafe, then go back to static.
Crosshair for Spray Control
In a spray the crosshair is a reference point, not something to chase. Static, tight gap, fully opaque, with an outline so it doesn't disappear in muzzle flash. Follow Recoil off.
Crosshair for Tapping and Bursts
Smaller is better here: short bars, small gap, maybe a center dot. The crosshair should feel quiet, so every tap lands exactly where you expect it.
Ready CS2 Crosshair Presets (New Pixel Values)
Starting points in the new pixel values, set for a 1080p screen. Paste a block into the console or a config, then fine-tune in the menu. The game rescales the sizes for other resolutions.
Static Crosshair for Rifles
Tight and stable for the AK-47, M4A4 and M4A1-S. Good for the first bullet and controlled sprays.
cl_crosshairstyle 4 cl_crosshair_length 4 cl_crosshair_thickness 1 cl_crosshair_gap 2 cl_crosshairdot 0 cl_crosshair_t 0 cl_crosshair_drawoutline 1 cl_crosshaircolor_r 0 cl_crosshaircolor_g 255 cl_crosshaircolor_b 255 cl_crosshaircolor_a 255 cl_crosshair_recoil 0
Crosshair for Beginners
A bit bigger and with a dot, easy to keep track of while you learn movement and basic fights.
cl_crosshairstyle 4 cl_crosshair_length 6 cl_crosshair_thickness 2 cl_crosshair_gap 3 cl_crosshairdot 1 cl_crosshair_t 0 cl_crosshair_drawoutline 1 cl_crosshaircolor_r 0 cl_crosshaircolor_g 255 cl_crosshaircolor_b 0 cl_crosshaircolor_a 255 cl_crosshair_recoil 0
Crosshair for 4:3 Stretched
Stretching makes horizontal bars wider, so this one is smaller.
cl_crosshairstyle 4 cl_crosshair_length 3 cl_crosshair_thickness 1 cl_crosshair_gap 1 cl_crosshairdot 0 cl_crosshair_t 0 cl_crosshair_drawoutline 1 cl_crosshaircolor_r 255 cl_crosshaircolor_g 255 cl_crosshaircolor_b 0 cl_crosshaircolor_a 255 cl_crosshair_recoil 0
Minimal Dot Crosshair
The new Dot Only style. As clean as it gets, but it needs confident aim and is easy to lose in a smoke.
cl_crosshairstyle 6 cl_crosshair_thickness 3 cl_crosshair_drawoutline 1 cl_crosshaircolor_r 0 cl_crosshaircolor_g 255 cl_crosshaircolor_b 255 cl_crosshaircolor_a 255
Best CS2 Crosshair for 4:3 Stretched and 16:9
Since the update the game stores the screen height you set the crosshair at and rescales it when the resolution changes. A 2-pixel crosshair made on 1280x720 becomes 4 pixels on 2560x1440, so it keeps the same size relative to the screen. What rescaling doesn't fix is stretching: on 4:3 stretched the picture is pulled sideways, and horizontal bars look wider than vertical ones.
16:9 Native (1080p and 1440p)
Native resolution shows the crosshair in its real proportions. A compact static cross with thin lines and a small gap, plus an outline, is all you need. The rifle preset above is made for this.
4:3 Stretched
Go smaller: shorter bars, smaller gap, thickness 1. Otherwise the crosshair feels fat and imprecise. The stretched preset above is a good start. Which resolution to play on is a separate question, I covered it in screen resolution in CS2.
How to Import, Share and Copy Crosshair Codes in CS2
A crosshair code holds your whole crosshair, since 30 September also the scope dot color and size. The current format starts with CS, followed by 44 letters and numbers, no dashes. Codes in the old CSGO-xxxxx-xxxxx-... format don't import anymore.
How to Import a Crosshair Code
- Open Settings → Game → Crosshair / Scopes.
- Click the share button next to the preview (Share or import a crosshair code).
- Paste the code and press Import. To share yours, copy your code from the same window.
Importing replaces your current crosshair, so copy your own code first and keep it somewhere. If you see "Invalid or old crosshair code", the code is from before the update. There's no official converter: set the crosshair by eye in the menu or ask the owner for a new code.
How to Copy Another Player's Crosshair
This still works, in matches and in demos:
- Hold TAB (
+showscores) to open the scoreboard. - Right-click to get the cursor, then right-click the player.
- Pick Copy Crosshair and confirm "Replace current crosshair?".
The crosshair is applied at once. Tweak it if you want and export the code to save it.
How to Get Pro Player Crosshair Codes After the Update
Every pro code that was floating around before 22 September is now useless, and many "new pro codes" lists from late September were just old codes converted into the same dead format. I compared two popular sites that publish new codes for the same players, donk, ZywOo and m0NESY among them, and they give different codes. Some even show one code for players from different teams. So I'm not going to paste codes I can't check.
The reliable way takes two minutes and always gives you the crosshair the player uses right now:
- Download a demo of a recent match of that player, for example from HLTV, and put the .dem file into
game\csgo. - Open it with
playdemo name_of_the_demoin the console. - Hold TAB, right-click the player, pick Copy Crosshair.
- Open your crosshair settings and copy your new code to keep it.
Watching a pro on a server works the same way. And remember what a pro crosshair is: the thing that works for one person on one monitor. Use it as a reference, not as the answer. What all pro crosshairs have in common is more useful than any single code: static, small, thin, high-contrast color, follow recoil off.
CS2 Crosshair Binds and Setup Mode Script
Tuning the crosshair through the menu means opening it again after every change. With binds you change it live, in a practice match, while you look at a wall or a bot. How binds work is explained in how to bind keys in CS2, and more ready binds are in CS2 useful binds.
Single Crosshair Binds
Each pair uses C and V only as an example. One key holds one bind, so take them one at a time or change the keys.
bind "c" "toggle cl_crosshairstyle 0 1 2 3 4 5 6 7 8 9" bind "c" "toggle cl_crosshairdot 0 1" bind "c" "toggle cl_crosshair_t 0 1" bind "c" "toggle cl_crosshair_recoil 0 1" bind "c" "toggle cl_crosshair_drawoutline 0 1 2"
bind "c" "incrementvar cl_crosshair_length 0 30 1" bind "v" "incrementvar cl_crosshair_length 0 30 -1" bind "c" "incrementvar cl_crosshair_thickness 1 10 1" bind "v" "incrementvar cl_crosshair_thickness 1 10 -1" bind "c" "incrementvar cl_crosshair_gap -5 20 1" bind "v" "incrementvar cl_crosshair_gap -5 20 -1"
bind "c" "incrementvar cl_crosshaircolor_r 0 255 25" bind "v" "incrementvar cl_crosshaircolor_r 0 255 -25" bind "c" "incrementvar cl_crosshaircolor_g 0 255 25" bind "v" "incrementvar cl_crosshaircolor_g 0 255 -25" bind "c" "incrementvar cl_crosshaircolor_b 0 255 25" bind "v" "incrementvar cl_crosshaircolor_b 0 255 -25" bind "c" "incrementvar cl_crosshaircolor_a 0 255 25" bind "v" "incrementvar cl_crosshaircolor_a 0 255 -25"
Crosshair Setup Mode Script
This script turns a group of keys into crosshair controls with one press of F, and gives them back with the next press. Updated for the new commands. In the old version the color keys (cr4) were never switched on, that's fixed too.
alias "cr1" "bind e toggle cl_crosshair_friendly_warning 0 1; bind r toggle cl_crosshair_recoil 0 1; bind t toggle cl_crosshair_t 0 1; bind y toggle cl_crosshairdot 0 1; bind u toggle cl_crosshair_drawoutline 0 1 2; bind i toggle cl_crosshairstyle 0 1 2 3 4 5 6 7 8 9; bind o toggle cl_crosshair_sniper_width 1 2 3; bind p toggle crosshair 0 1" alias "cr2" "bind 1 incrementvar cl_crosshair_length 0 30 1; bind 2 incrementvar cl_crosshair_length 0 30 -1; bind 3 incrementvar cl_crosshair_thickness 1 10 1; bind 4 incrementvar cl_crosshair_thickness 1 10 -1; bind 5 incrementvar cl_crosshair_gap -5 20 1; bind 6 incrementvar cl_crosshair_gap -5 20 -1" alias "cr3" "bind 7 incrementvar cl_crosshaircolor_a 0 255 25; bind 8 incrementvar cl_crosshaircolor_a 0 255 -25; bind 9 incrementvar cl_crosshairoutline_a 0 255 25; bind 0 incrementvar cl_crosshairoutline_a 0 255 -25" alias "cr4" "bind z incrementvar cl_crosshaircolor_r 0 255 25; bind x incrementvar cl_crosshaircolor_r 0 255 -25; bind c incrementvar cl_crosshaircolor_g 0 255 25; bind v incrementvar cl_crosshaircolor_g 0 255 -25; bind b incrementvar cl_crosshaircolor_b 0 255 25; bind n incrementvar cl_crosshaircolor_b 0 255 -25" alias "cr1_def" "bind e +use; bind r +reload; bind t +spray_menu; bind y messagemode; bind u messagemode2; bind i show_loadout_toggle; unbind o; unbind p" alias "cr2_def" "bind 1 slot1; bind 2 slot2; bind 3 slot3; bind 4 slot4; bind 5 slot5; bind 6 slot6" alias "cr3_def" "bind 7 slot7; bind 8 slot8; bind 9 slot9; bind 0 slot10" alias "cr4_def" "bind z radio; bind x slot12; bind c +radialradio; bind v +radialradio2; bind b buymenu; unbind n" alias "xh_on" "cr1; cr2; cr3; cr4; alias xh_mode xh_off; echo Crosshair Setup Mode ON" alias "xh_off" "cr1_def; cr2_def; cr3_def; cr4_def; alias xh_mode xh_on; echo Crosshair Setup Mode OFF" alias "xh_mode" "xh_on" bind "f" "xh_mode"
Why the Script Is Split into Blocks
The four blocks are not for looks. CS2 has a limit on how long one command or alias can be, roughly 400 characters. A longer one is ignored with "Command too long. Ignoring." in the console, and the script half works without telling you. A config file is also limited to 1 MB. If you add commands, keep each alias short.
Key Map: Setup Mode and Default
| Key | Setup mode | Command | Normal mode |
|---|---|---|---|
| F | Setup mode on / off | xh_mode |
stays on xh_mode (default: +lookatweapon) |
| E | Friendly fire warning | cl_crosshair_friendly_warning |
+use |
| R | Follow recoil | cl_crosshair_recoil |
+reload |
| T | T style | cl_crosshair_t |
+spray_menu |
| Y | Center dot | cl_crosshairdot |
messagemode |
| U | Outline none / full / half | cl_crosshair_drawoutline |
messagemode2 |
| I | Next style (0-9) | cl_crosshairstyle |
show_loadout_toggle |
| O | Sniper line thickness 1 / 2 / 3 | cl_crosshair_sniper_width |
unbound |
| P | Crosshair off / on | crosshair |
unbound |
| 1 / 2 | Length + / - | cl_crosshair_length |
slot1 / slot2 |
| 3 / 4 | Thickness + / - | cl_crosshair_thickness |
slot3 / slot4 |
| 5 / 6 | Gap + / - | cl_crosshair_gap |
slot5 / slot6 |
| 7 / 8 | Opacity + / - | cl_crosshaircolor_a |
slot7 / slot8 |
| 9 / 0 | Outline opacity + / - | cl_crosshairoutline_a |
slot9 / slot10 |
| Z / X | Red + / - | cl_crosshaircolor_r |
radio / slot12 |
| C / V | Green + / - | cl_crosshaircolor_g |
+radialradio / +radialradio2 |
| B / N | Blue + / - | cl_crosshaircolor_b |
buymenu / unbound |
If you changed any of these keys for yourself, edit the _def aliases so they bring back your binds, not the defaults.
How to Reset, Back Up and Autoload Your CS2 Crosshair
Reset the Crosshair to Default
The reset button next to the preview brings back Valve's default crosshair (Dynamic Quadrant, length 8, thickness 2, gap 4, green). If more than the crosshair went wrong, see how to reset all settings in CS2.
Save Your Crosshair in a Config
The simplest backup is your code in a text file. The more reliable one is a config with the commands, because it doesn't depend on the code format, which already changed twice this autumn. Create cross.cfg in:
...\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\
Put your crosshair commands in it (a preset from above with your values), and load it in the console:
exec cross
To load it on every start, add exec cross to your autoexec.cfg or +exec cross to the launch options. How configs work and where they live: CS2 config guide and CS2 config location.
Conclusion
The new CS2 crosshair is better than the old one: real pixels, the same look on every resolution, more styles and a dynamic crosshair that finally shows real spread. The price is that old codes and old commands are gone, so everybody had to rebuild their crosshair once.
Set it in the menu, save it in a config with the new commands, and stop touching it. The best crosshair is the one you don't notice during a round.
CS2 Console Commands
Practice, bots, HUD, radar and FPS commands that still work.
open →
Old AWP Scope in CS2
How to get the clean classic scope back.
open →
CS2 HUD Customization
Commands and a clean HUD setup.
open →
How to Bind Keys in CS2
Bind syntax, toggles and where binds are saved.
open →
CS2 Config Files
Create, load and manage cfg files without losing them.
open →
CS 1.6 Crosshair Guide
How the crosshair worked in the classic game.
open →CS2 Crosshair FAQ
Why does my crosshair code say "Invalid or old crosshair code"?
It was made before the September 2026 update. The new codes start with CS and have no dashes. Old ones can't be imported, set the crosshair again in the menu.
Why did my crosshair change after the update?
Sizes moved from an abstract scale to pixels, and the game converted your old values. The conversion isn't exact, so check length, thickness and gap once in the Crosshair / Scopes menu.
What is cl_crosshairsize called now?
cl_crosshair_length. Gap is cl_crosshair_gap, thickness is cl_crosshair_thickness, alpha is cl_crosshaircolor_a.
Which crosshair style is best in CS2?
Static Cross (cl_crosshairstyle 4) for real matches. The dynamic styles 0, 1 and 7 are good for learning spread and counter-strafing.
Can I import a crosshair code through the console?
No, codes are imported in the Crosshair / Scopes menu. In the console you set the crosshair with the commands from this guide.
Can I still copy a pro's crosshair?
Yes. In a match or a demo, open the scoreboard, right-click the player and pick Copy Crosshair.
Is Follow Recoil worth using?
For a few training sessions to see spray patterns, yes. In real matches most players turn it off, it pulls your eyes away from the target.
Does the crosshair affect FPS?
No. It only affects how clearly you see where you aim. For FPS look at how to show FPS in CS2 and the FPS guide.