What the result actually measures
The share code is 18 bytes written in a 57-letter alphabet, with a checksum. Old codes stored length, thickness and gap in the old scale, where length and thickness were 1/480ths of the screen height and the gap was 4 + gap in pixels. The converter works out the pixels you actually saw at your resolution and writes them as a version 4 code, the kind the current game writes.
Measurement boundary: Styles changed with the update. A Classic Static crosshair becomes Static Cross and a dynamic one becomes Dynamic Cross; the old Legacy style is left for you to pick in the menu, because its new number is not confirmed. Outline thickness and “use weapon gap” no longer exist. Check the result in a private match and nudge a value by one pixel if needed.
How to interpret the output
Why the old code stopped working
The 23 September 2026 update moved the crosshair to pixels and changed the share code format. The game refuses the old format instead of guessing, so every code saved before the update fails to import.
Why the resolution matters
An old size 2 was 4 pixels long at 1080 and 3 pixels at 768. The new crosshair stores the pixels and the resolution they belong to, and rescales itself if you change resolution later.
Why the gap can change
Old gaps of −5 or lower made the arms overlap the centre. The new gap starts at 0, so those crosshairs come out closed rather than overlapping.
Troubleshooting unexpected results
The game still says the code is invalid
Copy the whole code, CSGO- included. If a code made here fails, paste the console line instead; it sets the same values.
It looks a pixel bigger or smaller
The old scale was rounded to whole pixels, half to even. On some resolutions a size sits right on the edge; change that value by one.
Frequently asked questions
Why does my old CS2 crosshair code not work?
Since the 23 September 2026 update the game only imports the new pixel format. Old codes have to be converted; the settings they hold are still readable, which is what this page does.
What is the new command for crosshair size?
cl_crosshair_length, in pixels. Thickness is cl_crosshair_thickness and the gap is cl_crosshair_gap, both in pixels too. The colour is cl_crosshaircolor_r, _g, _b and _a.
Does 4:3 stretched change the result?
Use the height you render at, for example 960 for 1280 × 960. The old sizes were a share of that height, so the pixels follow it.
Is the code sent anywhere?
No. Decoding and encoding happen in the page.