The September "Rush Hour" update brought more than a new mode and silent reloads: Valve also shipped the biggest overhaul of the crosshair system in Counter-Strike history. The old mechanics are gone, replaced by a pixel-based system.
The catch is that every crosshair code generated before September 22 no longer works. If you paste an old code into the console, the game returns the error "Invalid or old crosshair code".
Pixel-accurate crosshairs are an upgrade the community has asked for for years. Below we break down what changed, what each new style does and how to rebuild the settings you are used to.
Pixels instead of percentages: why old codes broke
In CS:GO and early CS2, values like cl_crosshairsize 1.5 and cl_crosshairgap -1.6 were based on an abstract, invisible scale. The same crosshair could look noticeably bigger or smaller depending on whether you played at native 1080p, 1440p or stretched 4:3.

The new system drops that math in favor of real pixels. Set thickness to 1, length to 8 and gap to 4, and you get a crosshair exactly 1 pixel thick, with 8-pixel lines and 4 pixels between them. A recent hotfix also added automatic scaling, so the crosshair keeps its proportions when you change resolution.
A few familiar options did not survive the switch:
No more negative gap. The scale now runs strictly from 0 to 128. If you used a value like -2 for a very tight crosshair, set the gap to 0 and shorten the lines instead.
No fractional outline. The popular 0.5 outline thickness is gone. You can now turn the outline off, use a "half" outline (top and left only) or a full one.
Length limit. Line length is now capped at 255 pixels.
Nine styles and a new default
The update expands the crosshair styles from six to nine and moves all settings to a separate Crosshair/Scopes tab.

The new default is Dynamic Quad (style 7): four static lines for basic aiming plus an outer dynamic layer that expands as you lose accuracy. It is a good choice for new players who want to see the accuracy penalty for shooting on the move, while experienced players will most likely switch straight back to a static style.
| Value | Style name | Dynamic? | Best for |
|---|---|---|---|
| 0 | Dynamic Cross | Yes | Learning movement spread |
| 1 | Dynamic Circle | Yes | Spray practice |
| 2 | Dynamic Cross (Legacy) | Yes | Players used to the CS:GO dynamic crosshair |
| 3 | Static Circle | No | Niche playstyles |
| 4 | Static Cross | No | The choice of 99% of pros |
| 5 | Static Cross (Shot Feedback) | Only when firing | Players who tap fire |
| 6 | Dot Only | No | AWP and Deagle players |
| 7 | Dynamic Quad | Yes | New players (the new default) |
| 8 | Static Square | No | Added in the September 23 hotfix |
Console command changes
If you use an autoexec, it still loads, but the old crosshair commands are simply ignored. Update your config to the new commands:
| Old command | New command | New 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 |
Are the "new pro crosshair codes" real?
Treat headlines like "donk's new crosshair code" or "ZywOo's crosshair after the update" with caution.
So far, pro players have not published verified pixel-based codes. The lists circulating online come from fan-made converters. They are a good starting point but are not guaranteed to be exact. Here are the approximate conversions for top players right now (all of them use style 4, Static Cross):
| Player | Length | Thickness | Gap |
|---|---|---|---|
| ZywOo | 5 | 1 | 2 |
| ropz | 5 | 1 | 2 |
| donk | 2 | 2 | 0 |
| m0NESY | 2 | 2 | 0 |
| s1mple | 2 | 2 | 0 |
How to get your old crosshair back
Valve has not released an official converter, so you have two options:
If you saved your old code, use a fan-made converter (for example, cs2-crosshair-migrator) to translate it into the new format. If your old crosshair used a negative gap or a fractional outline, the result will look slightly different.

If you lost your old code, open the settings and rebuild it by eye. It is easier than it sounds: set thickness to 1, length to 2 to 6 and gap to 0 to 3. These values cover about 90% of pro settings.
