
Two weeks after Counter-Strike 2's crosshair overhaul, the tooling that reads old codes has split. csgo-sharecode, a long-running share-code library, shipped a major version on 3 October 2026 that reads every old format and writes the one CS2 produces today; other projects dropped old-code support or are already out of date. Valve has still shipped no converter of its own.
Why old CS2 crosshair codes fail, and what can convert them now
The reason is the container, not the settings. There are two containers: the dash-separated CSGO-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx code players have pasted since 2020, and the one CS2 writes now, prefixed with CS and dashless. csgo-sharecode's documentation says legacy is the CSGO- code, "which CS2 no longer accepts on import."
The library documents four layouts, keyed to build numbers: legacy-v1 for anything before 1.41.8.2, legacy-v3 for 1.41.8.2 — the 22 September overhaul — legacy-v4 for 1.41.8.3 the following day, and cs2-v1 for 1.41.8.8, the 30 September update. It notes v3 and v4 "are CS2 era formats, they simply kept the old container," so every code exported before the 30 September update sits in that container: the rejection catches CS2-era codes too, not just CS:GO-era ones.
Version 7.0.0 decodes all four layouts and re-encodes in any of them: read an old code, write it back out as cs2-v1. Codes from the 22 September overhaul onward come back at the right size, because each carries the screen height it was authored at; only a gap above 127 clamps. Anything older is the lossy case — legacy-v1, which covers CS:GO-era and pre-22 September codes alike, stores no screen height.
That is a developer library on npm, not a website — using it means running Node. Everyone else's route is unchanged: rebuild in Settings → Crosshair/Scopes and export fresh.
Not every tool went that way. The Python library csxhair rebuilt the same day but dropped old-code support: since the Rush Hour update, its documentation says, "CS:GO and early CS2 crosshair share codes are no longer supported," sending CS:GO-code holders to its 1.0.1 release, which predates the September formats. JDD310/CS2-Crosshair-Converter, a purpose-built converter on GitHub, is a trap: created 30 September, its last commit landed just over eight hours before Valve's 22:46 UTC build changed the format, so it still emits the older legacy-v4 code its README calls "the current format."
What the 30 September CS2 crosshair update changed
Valve listed eight crosshair items on 30 September: an inaccuracy and spread visualisation fix, grenade crosshairs "in freeze time for insta-smokes", scope dot scale and colour in the share code, plus per-channel outline colours, Static Quadrant, the return of negative gaps, 0.01 alpha steps and a new share-code format.
The overhaul landed on 22 September and was extended on 23 September, covered in our CS2 Rush Hour update patch notes alongside its 3v3 Rush mode. Crosshairs then went untouched until 2 October, which fixed grenade crosshair rendering at thickness 3 and updated the workshop convar whitelist — see our 2 October patch notes.
Negative crosshair gaps are back — on one style in the menu
cl_crosshair_gap had a hard floor of 0 after the overhaul. That is partly reversed: the variable accepts −3840 to 3840, but the menu is narrower. Valve added a second gap slider running −10 to 128, shown only for style 2, Dynamic Cross (Classic). Styles 0, 3, 4, 5, 7, 8 and 9 keep a 0-to-128 slider; Dynamic Circle and Dot Only show none. Style 2's split-alpha sliders moved from 0.05 to 0.01 steps.
Static Quadrant is the tenth style, and the default was renamed
cl_crosshairstyle now accepts 0–9, not 0–8. The ten, as the menu names them: Dynamic Cross, Dynamic Circle, Dynamic Cross (Classic), Static Circle, Static Cross, Dynamic Cross (Legacy/Shot Feedback), Dot Only, Dynamic Quadrant, Static Square and Static Quadrant.
Style 7, the default, was renamed from Dynamic Quad to Dynamic Quadrant in the menu only; the convar help text and tooltip still say Dynamic Quad. Static Quadrant gets a Quadrant Size slider bound to cl_crosshair_dynamic_maxdist_splitratio, the same variable as style 2's Split Size Ratio.
The crosshair outline gets its own colours
Outlines are no longer colour-locked: cl_crosshairoutline_r, _g, _b and _a are new, each 0–255, behind a menu entry called Outline Color and Transparency, shown unless the dropdown reads No Outline.
ESL Pro League Season 24 runs until 11 October, with playoffs at Katowice's Spodek Arena from 9 October — the first S-Tier event played entirely on the new crosshair system.
FAQ
Can I convert my old CS2 crosshair code to the new format? Not in-game and not officially, but community tooling can: the csgo-sharecode library's 3 October release reads all four layouts and writes the current one. Codes older than 22 September convert only approximately — they store no screen height to rescale from.
Can I still use a CS2 crosshair code from before the 30 September 2026 update? No. Any code in the dash-separated CSGO- container is rejected on import, covering CS:GO-era codes and ones exported after the 22 September overhaul. Rebuilding in Settings → Crosshair/Scopes is the only UI route, though the cl_crosshair convars can also be set from the console.
Can I set a negative crosshair gap in CS2 again? In the menu, only on style 2, Dynamic Cross (Classic), via a slider running −10 to 128. On console cl_crosshair_gap now accepts −3840 to 3840.
What is the new CS2 crosshair style? Static Quadrant, style 9 — the tenth style, with its own Quadrant Size slider. Style 7, the default, was renamed to Dynamic Quadrant in the same update.
Why did my CS2 crosshair reset after the update? The September overhaul moved thickness, length and gap to pixel units, so a stored value no longer describes the same crosshair.
How do I change my crosshair outline colour in CS2? Pick Full or Half Outline in Settings → Crosshair/Scopes, which reveals Outline Color and Transparency. On console it is cl_crosshairoutline_r, _g, _b and _a, each 0–255.
Sources: Counter-Strike 2 update notes for 22, 23, 24, 25, 28 and 30 September and 2 October 2026 via the official Steam news feed for appid 730, for the change lists and publication timestamps; the akiver/csgo-sharecode repository README, its doc/code_layout.md, its commit and release history and the npm registry, for the crosshair code format table, container behaviour, which layouts carry a screen-height field and the 3 October 7.0.0 publish time; the SyberiaK/csxhair README and its PyPI release record for that project's dropped support for old codes; the JDD310/CS2-Crosshair-Converter repository metadata via the GitHub API for its creation and last-commit times and stated target build; the shipped client's console-variable dumps, English localisation strings and crosshair settings layout for builds 1.41.8.6 and 1.41.8.8 via the GameTracking-CS2 archive, for variable names and ranges, menu labels and per-style control visibility; the same archive's steam.inf for the shipped build and client version; ESL's Pro League Season 24 tour page and the Liquipedia MediaWiki API, for the event dates, venue and the S-Tier tournament calendar since 30 September. Retrieved 5 October 2026.


