What the CS2 crosshair update changed
On Valve updated how crosshairs work in Counter-Strike 2. This page sets out what changed, based on Valve's patch notes and on the public game files for the new builds. Where something has not been established, it says so.
If you just want your old crosshair back, go to the crosshair recovery tool. To learn how it treats each setting, read how the conversion works.
What Valve's patch notes say
According to Valve's patch notes for 22 September 2026:
- Crosshairs were changed to be resolution independent.
- A new Crosshair / Scopes tab was added to the game settings.
- New crosshair styles were added.
- The default crosshair is now Dynamic Quad.
The patch notes do not explain what "resolution independent" means for the size you see on screen, they do not say how the new sizes are calculated, and they do not list command names. The rest of this page comes from the public game files and from checks the site owner made in the game.
Where the settings are now
Crosshair settings live in the Crosshair / Scopes tab. The style controls are in a section called Style Settings. Follow Recoil is in a separate Crosshair Settings section, not under Style Settings.
Every style shows Color and Transparency, Outline and Thickness. The other controls depend on the style you pick, as the next table shows.
The eight crosshair styles
The number in the first column is the value of cl_crosshairstyle for that style. The old style numbers meant different things, so an old style number cannot simply be reused. "Static" styles stay fixed. "Dynamic" styles are the ones the game names as dynamic; the notes column says what is known about how each one behaves.
| Value | Style | Type | Extra controls | Notes |
|---|---|---|---|---|
| 0 | Dynamic Cross | Dynamic | Center Dot, Length, Gap, Dynamic Spread Limit, T Style | A cross that reacts to movement and firing. |
| 1 | Dynamic Circle | Dynamic | Center Dot, Dynamic Spread Limit | A circle whose size reacts to movement and firing. It has no Length or Gap control. |
| 2 | Dynamic Cross (Classic) | Dynamic | Center Dot, Length, Gap, Split Distance, Inner Split Alpha, Outer Split Alpha, Split Size Ratio, T Style | A dynamic cross with split controls, closest in name to the old Classic style. |
| 3 | Static Circle | Static | Center Dot, Gap | A fixed circle. It has a Gap control but no Length control. |
| 4 | Static Cross | Static | Center Dot, Length, Gap, T Style | A fixed cross that does not move. Old Classic Static crosshairs belong to this family. |
| 5 | Dynamic Cross (Legacy/Shot Feedback) | Dynamic | Center Dot, Length, Gap, T Style | A cross that reacts to shots, named after the old Legacy style. |
| 6 | Dot Only | Static | None | Only a dot. There is no separate Center Dot, Length or Gap control. |
| 7 | Dynamic Quad | Dynamic | Center Dot, Length, Gap, Dynamic Spread Limit, T Style | The new default style after the update. Its in-game shape is not drawn here because it has not been documented. |
Dynamic Quad (value 7) is the default style, which matches Valve's notes. Its in-game shape has not been documented, so this site does not draw it. Dynamic Cross (Classic) is the only style with split controls, and it is the style closest in name to the old Classic crosshair.
Current commands and their ranges
Transparency (alpha), Thickness, Length, Gap and Dynamic Spread Limit now use command names that differ from the old crosshair commands. The other settings use the same command names as the old ones. The ranges and defaults below come from the console variable list in the public game files for build 2000913 (unchanged in 2000914). Length, Thickness and Gap were also checked in the game console: decimals such as 7.5 were rejected, and numbers above the maximum (such as 999) were stored as the maximum.
| Setting | Command | Console range | Game default |
|---|---|---|---|
| Style | cl_crosshairstyle | 0–7 (one number per style) | 7 (Dynamic Quad) |
| Color and Transparency | cl_crosshaircolor_rcl_crosshaircolor_gcl_crosshaircolor_b | 0–255 for each channel, whole numbers | R 0, G 255, B 0 |
| Color and Transparency (A) | cl_crosshaircolor_a | 0–255, whole numbers | 255 |
| Outline | cl_crosshair_drawoutline | On or off | On |
| Thickness | cl_crosshair_thickness | 0–31, whole numbers | 2 |
| Center Dot | cl_crosshairdot | On or off | Off |
| Length | cl_crosshair_length | 0–255, whole numbers | 8 |
| Gap | cl_crosshair_gap | 0–128, whole numbers | 4 |
| Dynamic Spread Limit | cl_crosshair_dynamic_spread_limit | 0–255, whole numbers | 255 |
| Split Distance | cl_crosshair_dynamic_splitdist | 0–127, whole numbers | 3 |
| Inner Split Alpha | cl_crosshair_dynamic_splitalpha_innermod | 0–1, decimals | 0 |
| Outer Split Alpha | cl_crosshair_dynamic_splitalpha_outermod | 0.3–1, decimals | 1 |
| Split Size Ratio | cl_crosshair_dynamic_maxdist_splitratio | 0–1, decimals | 1 |
| T Style | cl_crosshair_t | On or off | Off |
| Follow Recoil | cl_crosshair_recoil | On or off | On |
A few things stand out:
- Length, Thickness and Gap are now whole numbers (0–255, 0–31 and 0–128). Old sizes such as 1.5 or 0.6 have no direct place in the new ranges.
- Gap can no longer be negative. Setting a negative gap in the console stores 0.
- Thickness 0 is accepted. The help text says bars have a minimum of 1 pixel, but in tests at 1920×1080 and 1280×960 Thickness 0 drew no crosshair at all, so use 1 or more.
- Transparency is now a single alpha value from 0 to 255. There is no separate on/off switch for it.
- Dynamic Spread Limit is new. The old game had no equivalent setting.
"Game default" is the value compiled into the game. It is shown for reference only. It is not a recommendation, and it is not what your old crosshair converts to.
Old commands removed or hidden
Comparing the console variable lists before and after the update (game file change for build 2000913) shows that several old crosshair commands were removed and others are now marked as hidden. This site never includes any of them in its output.
| Old command | Old setting | After the update |
|---|---|---|
cl_crosshairgap | Old gap | Removed |
cl_crosshaircolor | Color mode | Removed |
cl_crosshairusealpha | Use transparency | Removed |
cl_crosshair_outlinethickness | Outline thickness | Removed |
cl_fixedcrosshairgap | Fixed crosshair gap | Removed |
cl_crosshairgap_useweaponvalue | Use weapon gap | Removed |
cl_crosshairsize | Old size (length) | Hidden |
cl_crosshairthickness | Old thickness | Hidden |
cl_crosshairalpha | Alpha | Hidden |
Outline thickness, the weapon-based gap and the fixed gap have no replacement in the new menu. The new Outline control is only on or off.
Sizes use a new scale
In the new menu, Color, Thickness, Length and Gap each carry a note that their scale has changed. Combined with Valve's statement about resolution independence, you should not expect old size numbers to look the same if you type them into the new settings.
Valve has published no formula for converting old sizes. This site measured one from screenshots of the old and new game at 1920×1080 and 1280×960 (4:3): the old Length and Thickness were 2.25 pixels per unit at 1920×1080 and 2 (the captures allow about 1.9643 to 2.0313) at 1280×960 (4:3), the old gap was not scaled at all, and the new game counts Gap from the centre. The recovery tool uses those measurements only for the setups they were taken on and asks you to choose sizes everywhere else. How sizes are converted explains the details.
Thickness slider hotfix: 32 to 31
Build 2000913 shipped with a Thickness slider that went up to 32, while the console only accepted up to 31. The hotfix build 2000914 changed the slider maximum to 31 (game file change for build 2000914). This site uses 31 as the maximum Thickness.
New color picker with no presets
The Color and Transparency control is now a free color picker. It has entries for red, green and blue, a hex code, and alpha (A). Each channel is a whole number from 0 to 255. It writes cl_crosshaircolor_r, _g, _b and cl_crosshaircolor_a.
There is no preset list any more. If your old crosshair used a preset such as Green or Yellow, you need to pick the color yourself. The exact shades the old game drew for its presets were not found in the public game files, so this site does not guess them. A custom color is different: the recovery tool carries it over unchanged.
Crosshair codes
After the update, the game can refuse an old code with the message "Invalid or old crosshair code" (as reported from the game's Share or Import dialog). That message does not mean your old code is broken. The recovery tool can still read its settings.
New-format game codes appear to use a different format marker from the old ones. This is inferred and unverified: the crosshair code built into the game changed with the update and now has a different value in the byte that identifies the format. The layout of the new format is unknown, so this site can neither read nor create new-format codes. See the FAQ for the difference between a game code and a website link.
What is still unknown
- How old sizes relate to new ones at other resolutions. The conversion was measured at 1920×1080 and 1280×960 (4:3) only. Other resolutions (including other 4:3 ones such as 1440×1080 and 1024×768), other old styles and CS:GO crosshairs have not been measured yet.
- The shape of Dynamic Quad. No evidence documents it, so the preview on this site shows its settings only.
- Dynamic behaviour. It has not been shown that Dynamic Cross (Classic) moves like the old Classic crosshair, or that Dynamic Cross (Legacy/Shot Feedback) responds to shots like the old Legacy style. How Dynamic Spread Limit changes the shape is not documented either.
- The console line limit. The maximum length of a line you can paste into the game console has not been checked. The tool therefore also splits a long command line into blocks of at most 120 characters, and offers a CFG file.
- Whether the game migrates old settings. There is no evidence either way on whether the game converted your previous crosshair settings automatically after the update. Check what your crosshair looks like in game.
- The new code format. Beyond the changed format marker, nothing about new-format codes is known.
As evidence arrives, changes are recorded in the changelog. For step-by-step help with the tool, see how to use it.
Sources
Game file links point to fixed versions of the public GameTracking-CS2 mirror, so they will not change. CS2 Crosshair Restore is an independent tool and is not affiliated with Valve.
- Valve patch notes, 22 September 2026 (Official, checked )
- Current-build console variable list (Locally checked, build 2000913, checked )
- Old crosshair commands removed or hidden (Locally checked, build 2000913, checked )
- Crosshair / Scopes menu layout and per-style rows (Locally checked, build 2000914, checked )
- Menu slider ranges (Locally checked, build 2000914, checked )
- Menu labels (Locally checked, build 2000914, checked )
- Thickness slider changed from 32 to 31 (Locally checked, build 2000914, checked )
- New color picker has no presets (Locally checked, build 2000914, checked )
- Pre-update crosshair commands and menu (Locally checked, build 2000908, checked )
- New-format game codes appear to use format byte 3 (Unverified, build 2000913, checked )
Last checked against builds 2000913 and 2000914. The full evidence list is on the conversion method page.