Valve slipped the biggest crosshair change in the game's history into the Rush Hour update on September 22, right under the headline about Rush mode and silent reloads. Crosshairs now use real pixels instead of a scale tied to your resolution, the settings moved to a new Crosshair/Scopes tab, there are nine styles instead of six, and the default is a thing called Dynamic Quad.

The part Valve did not put in bold: every crosshair code created before September 22 is dead. Paste one in and the game answers “Invalid or old crosshair code”.

We think the new system is the right call and about five years late. Anyone who ever imported a pro's code on 1280×960 stretched and got a crosshair twice the size the pro sees knows why. The rollout is another story. Valve shipped it eleven days before ESL Pro League Season 24 in Katowice, without a converter, and followed up with a hotfix the next day that added more crosshair variables.

Timesaver.gg reports that the hotfix invalidated codes people had built on September 22 as well. Valve has not confirmed that, and we could not reproduce it ourselves, so treat it as a community report. Either way, pros are rebuilding their crosshairs in the week before a LAN instead of during the off-season.

If your muscle memory is tied to a crosshair you have used since CS:GO, this patch cost you a few Deathmatch sessions. Below is what changed, what the nine styles do, and how to get your old crosshair back. Between rounds of relearning it, you can still trade CS2 skins on SkinsMonkey, where nothing got reset.

cs2 crosshair settings dynamic preview

Pixels, Not Percentages: The Change That Broke Every Code

Before the update, cl_crosshairsize 3.9 and cl_crosshairgap -2.2 were numbers on an arbitrary scale that the engine converted to pixels depending on your resolution. The same code produced a different crosshair at 1080p, 1440p and on a stretched 4:3 setup.

The new values are pixels. Valve's own example from the patch notes: for a 1-pixel wide crosshair with 8-pixel bars and a 4-pixel gap, you set thickness 1, length 8, gap 4. Nothing to calculate.

The hotfix a day later (September 23 US time, September 24 in Europe) added automatic rescaling when the resolution changes, so the crosshair keeps its proportions when you jump from 1280×720 to 2560×1440. Valve calls the whole thing “resolution independent”. It is not identical on every monitor, because aspect ratio, color and style still shape what you see, but a code you import now lands close to what its author sees.

Three things vanished along with the old scale, and this is what the community is angriest about:

  • Negative gap is gone. Gap runs from 0 to 128. The trick of setting -2 or -3 to pull the bars into the center, which a large share of pros used, has no equivalent. Gap 0 with shorter bars is the closest you get.
  • Outline thickness no longer takes decimals. The 0.5 outline that half the scene ran is now a choice between off, half-outline (top and left edges only, added in the hotfix) and full.
  • Length caps at 255 pixels. Timesaver.gg also reports that the old fixed-crosshair style has no replacement, which we have not been able to confirm against the new tab ourselves.

The ranges (gap 0 to 128, length 0 to 255, thickness 0 to 31) match what SyberiaK documented in the csxhair repository on GitHub after dumping the new console variables. Timesaver.gg adds that the old defaults are not even expressible in the new units, which is why a converter cannot be exact.

Nine Styles and a New Default Nobody Asked For

The style selector went from six options to nine. Valve's patch notes only say “added new crosshair styles” and name Dynamic Quad and Static Square. The full list and numbering below come from Timesaver.gg's dump of cl_crosshair_style, so treat the order as community-documented rather than official.

Value Style Moves? Who it is for
0 Dynamic Cross Yes Learning movement inaccuracy
1 Dynamic Circle Yes Spray practice, rare in matches
2 Dynamic Cross (Legacy) Yes CS:GO dynamic holdouts
3 Static Circle No Niche
4 Static Cross No Almost every pro
5 Static Cross (Shot Feedback) Only when firing Static with a tap indicator
6 Dot Only No AWP and Deagle players
7 Dynamic Quad Yes (new default) New players
8 Static Square No Added in the hotfix
Numbering per Timesaver.gg's console dump. Static Square confirmed as style 8 by dataminer Thour.

Static Cross (4) is the classic pro crosshair and nothing about the update changes that. Dot Only (6) gives AWPers a dedicated dot style instead of a cross with the bars shrunk to nothing. Timesaver.gg reports that styles 0, 1 and 7 track the weapon's real inaccuracy, and the hotfix backs that up with a new cl_crosshair_dynamic_spread_limit command and a minimum dynamic spread lowered to 64 pixels.

Dynamic Quad, the new default, is four static bars for reference plus a dynamic layer that opens up as your accuracy drops. Valve says it “better represents weapon accuracy”, and for a player in their first hundred hours it does.

We tried it for a few evenings of Premier and switched back to static by the second map. Once you know that moving and shooting misses, the extra movement in the middle of the screen only pulls your eyes away from the head. The “Stop Dynamic Preview” button in the settings tab only freezes the preview animation, so if you want a crosshair that does not move in a match, pick one of the static styles.

The New Crosshair/Scopes Tab Is What the Game Tab Should Have Been

Crosshair settings used to live at the bottom of the Game tab with a tiny preview on a grey box. The new Crosshair/Scopes tab puts crosshair and scope controls in one place and previews the result on map backgrounds and player models. You can check whether your cyan crosshair survives Nuke's ceiling lights before you find out mid-clutch.

Share and Import are in the same place, and copying an opponent's crosshair from the scoreboard still works, with the bonus that everything you copy now is already in the new format.

The console route is still there for people who prefer an autoexec, but the commands were renamed:

Before September 22 Now Range
cl_crosshairsize cl_crosshair_length 0 to 255 px
cl_crosshairthickness cl_crosshair_thickness 0 to 31 px
cl_crosshairgap cl_crosshair_gap 0 to 128 px
cl_crosshairalpha cl_crosshaircolor_a 0 to 255
(new) cl_crosshair_style 0 to 8
(new) cl_crosshair_dynamic_spread_limit 0 to 255
cl_crosshaircolor, cl_crosshair_outlinethickness, cl_fixedcrosshairgap, cl_crosshairgap_useweaponvalue, cl_crosshairusealpha removed  
Ranges from SyberiaK's csxhair issue on GitHub and Timesaver.gg.

Any autoexec from before the patch still loads, it just silently skips the crosshair lines. Working examples in the new units are in our CS2 crosshair settings guide, and the wider CS2 console commands guide covers the rest.

Every “New Pro Crosshair” List Is a Guess

This is the part to be careful with. Within a day of the patch, articles with “donk's new crosshair” and “ZywOo's new code” were everywhere. As of the last week of September, none of them come from the players.

  • Escorenews states plainly that its list was generated with the converter built by Sebastian “Horizzon” Lalic of Rdy.gg.
  • Refrag says on its own page that its codes have not been updated since the change and are “purely for visual reference”.
  • Timesaver.gg could not find a single pro who had published a rebuilt crosshair in pixel units, and neither could we.

The converted numbers are still useful as a starting point:

Player Style Length Thickness Gap
ZywOo Static Cross 5 1 2
ropz Static Cross 5 1 2
donk Static Cross 2 2 0
m0NESY Static Cross 2 2 0
s1mple Static Cross 2 2 0
Converted from pre-update codes with Horizzon's tool, as published by Escorenews. Not verified by the players.

The converter cannot handle negative gaps, so EliGE and Twistzz, listed by Escorenews at -9 and -7 before the patch, get something visibly different from what they play on. Real codes will appear when players are on stage again. ESL Pro League Season 24 in Katowice, October 3 to 11 with playoffs from the 9th, is the first big LAN on the new system, and spectating a match exposes the crosshair. We will update the guide the moment verified codes exist.

How to Get Your Old Crosshair Back

Valve did not ship a converter, so you have two ways.

If you saved your old code

Paste the legacy CSGO- code into one of the community converters (Horizzon's cs2-crosshair-migrator, cstools.io/crosshair or crosshairrestore.com), copy the new code and import it in the Crosshair/Scopes tab. Expect small differences. If you used a negative gap or a 0.5 outline, expect bigger ones.

If you never saved anything

Rebuild by eye in the new tab. Thickness 1, length 2 to 6, gap 0 to 3 covers almost the entire pro scene, and the map previews make it a ten-minute job.

Whichever route you take, load a Deathmatch or a private match before Premier. Timesaver's advice on that point is the only thing every source agrees on.

What Is Still Missing

  • A converter from Valve. The company changed the code format twice in two days and left migration to a journalist with a weekend project. A short compatibility layer that reads old codes and approximates them would have saved the entire player base an evening.
  • Pro-facing timing. Shipping a crosshair overhaul eleven days before a full-LAN Pro League, and then adding more variables the next day, means teams are testing reticles in Katowice hotel rooms instead of during the off-season. SyberiaK, who maintains the open-source csxhair library that several code generators depend on, opened a GitHub issue on the hotfix day listing every renamed and removed variable and is still working through the changes, which tells you how settled the format is.
  • Fixed style parity. Some players ran the old fixed crosshair for years. There is no replacement, and no word on whether one is coming.

What This Means for Your Inventory

Nothing, in terms of prices. This is a settings patch, and skins do not care what your crosshair looks like. The practical effect is a week of Deathmatch and Rush mode for a lot of players who are relearning their aim, and more time on the SkinsMonkey trade page between sessions than usual.

If you are building a loadout, this is a fair moment to check how your favorite skins look under the new crosshair colors and outline options, since a full outline on a thick cyan cross covers noticeably more of the weapon at the bottom of the screen than the old 0.5 did. And if you play a lot of Rush, where rounds are short and the spray patterns matter more than the crosshair, the change will barely register.

FAQ

Why does my CS2 crosshair code say invalid or old?

Because it was created before September 22, 2026. The Rush Hour update changed crosshair units to pixels and rewrote the code format, and community reports say the September 23 hotfix invalidated codes made on the first day as well. Codes from before those dates fail to import. Convert the old code with a community tool or rebuild the crosshair in the Crosshair/Scopes tab.

What is the Dynamic Quad crosshair in CS2?

Dynamic Quad is the new default crosshair style. It combines four static bars as a fixed aiming reference with a dynamic layer that expands as your weapon accuracy drops. Most experienced players switch to Static Cross, but the dynamic part is useful for learning how movement affects accuracy.

Did the CS2 update change the crosshair console commands?

Yes. cl_crosshairsize became cl_crosshair_length, cl_crosshairthickness became cl_crosshair_thickness, cl_crosshairgap became cl_crosshair_gap and cl_crosshairalpha became cl_crosshaircolor_a. New commands include cl_crosshair_style (0 to 8) and cl_crosshair_dynamic_spread_limit. Old autoexec files still load but skip the renamed lines.

Can I still use pro player crosshair codes in CS2?

Only after converting them, and only as an approximation. No pro has published a rebuilt code in the new pixel units as of late September 2026, and the lists circulating online are tool conversions of old codes. Verified codes should appear once players compete on the new system at ESL Pro League Season 24.