CS2 · September 2026 crosshair update
Get your old CS2 crosshair back, pixel for pixel
Old code says “Invalid or old crosshair code”? Paste your CSGO- code or cl_crosshair commands. You get a new import code, console commands and an autoexec, converted at your resolution, plus a live preview of how it looks and moves in game.
- Pixel-identical
- New code, one-click import
- Static + dynamic preview
- Runs in your browser
In-game preview
Actual sizeFine-tune
How to apply
Put the new crosshair in game
Pick one of three ways. Importing the new code takes ten seconds; the console and autoexec are there if you like configs.
Option 1: Import the new code
RecommendedCarries every setting and your resolution, and rescales if you change resolution later.
- Open crosshair settingsLaunch CS2, click the gear at the top left to open Settings, then the Crosshair/Scopes tab.
- Click “Share or Import”It sits at the top right of the crosshair settings.
- Paste and importClick “Copy new code” on this page, paste it into the box in game (Ctrl+V) and click Import. Check the preview and you’re done.
Option 2: Console command
Handy if importing doesn’t suit you, or you want to see every value.
- Enable the consoleIn Settings → Game, set Enable Developer Console (~) to Yes.
- Paste and press EnterJoin a game at your usual resolution, press ~, paste the copied command and press Enter. The leading
cl_crosshair_screen_heightrecords your resolution.
Option 3: autoexec.cfg
Applies the crosshair every time the game starts, so a reset can’t lose it.
- Drop it in the cfg folderClick “Download autoexec” and put the file in
Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\. Already have an autoexec.cfg? Copy the crosshair lines into it instead. - Add a launch optionIn your Steam library, right-click Counter-Strike 2 → Properties → Launch Options and add
+exec autoexec.
Can’t find your old code?
- Check old screenshots, bookmarks, Discord messages or video descriptions for a
CSGO-code. - An old
autoexec.cfgorconfig.cfgbackup works too: paste itscl_crosshairlines. - CS2 keeps settings in
Steam\userdata\<your ID>\730\local\cfg\cs2_user_convars_0_slot0.vcfg. If you have a backup from before the update (system backup or cloud drive), paste the whole file and the crosshair values are picked out automatically. - Used a pro’s crosshair? Try the pro buttons above, or search “player name + crosshair code” for their pre-update code.
What changed
What the crosshair update changed
Old sizes were abstract numbers tied to your resolution, so the same code looked different at 1080p and 960p. New sizes are pixels plus the screen height they were made at. That’s why an old code can’t be reused as is: it has to be converted at the resolution you played at.
Old vs new commands
| Old | New | Change |
|---|---|---|
cl_crosshairsize | cl_crosshair_length | Pixels, 0–255 |
cl_crosshairthickness | cl_crosshair_thickness | Pixels, 0–32, no decimals |
cl_crosshairgap | cl_crosshair_gap | Pixels, from the centre line |
cl_crosshairalpha | cl_crosshaircolor_a | 0–255 |
cl_crosshair_outlinethickness | cl_crosshair_drawoutline | 0 none / 1 full / 2 half |
cl_crosshaircolor | cl_crosshaircolor_r/g/b | Presets gone, RGB only |
cl_crosshairusealpha | — | Removed |
cl_fixedcrosshairgap | — | Removed |
cl_crosshairgap_useweaponvalue | — | Removed |
| — | cl_crosshair_screen_height | New: height the sizes are for |
| — | cl_crosshairoutline_r/g/b/a | New: outline color |
| — | cl_crosshair_dynamic_spread_limit | New: max dynamic spread |
Timeline
- 22 Sep · Rush Hour updateCrosshair rebuilt in pixels, new styles, Dynamic Quadrant becomes the default, old codes stop importing.
- 23–24 Sep · HotfixSizes rescale when you change resolution; Half outline and Static Square added.
- 30 Sep · New code formatShare codes start with CS and have no dashes; outline color, negative gaps and Static Quadrant added.
The 10 new styles
| # | Style | Moves? |
|---|---|---|
| 0 | Dynamic Cross | Spreads with inaccuracy |
| 1 | Dynamic Circle | Spreads with inaccuracy |
| 2 | Dynamic Cross (Legacy) | Old split dynamic |
| 3 | Static Circle | No |
| 4 | Static Cross | No (the pro favourite) |
| 5 | Static Cross (Shot Feedback) | Only when firing |
| 6 | Dot Only | No |
| 7 | Dynamic Quadrant | Cross stays, outer ring spreads (new default) |
| 8 | Static Square | No |
| 9 | Static Quadrant | No |
FAQ
Questions
Why does CS2 say “Invalid or old crosshair code”?
The Rush Hour update on 22 September 2026 rebuilt the crosshair: length, thickness and gap are now pixels. From 30 September share codes use a new format that starts with CS and has no dashes. Old CSGO- codes, including interim codes made between 22 and 30 September, no longer import and have to be converted first.
Will the converted crosshair look exactly the same?
Static crosshairs convert pixel for pixel. Old length and thickness scaled with screen height ÷ 480 and rounded half to even; the old gap was 4 + gap raw pixels measured from the edge of the centre square, while the new gap is measured from the centre line. CrosshairGen applies these rules and was checked pixel by pixel against more than 30,000 combinations. How far dynamic styles spread can’t be matched exactly.
“Before vs after” puts the old and new crosshair side by side at the same zoom, so you can count every pixel yourself. Any pixel that differs is outlined.
Which resolution should I pick?
Pick the resolution you actually played at before the update. Only the height matters, so 1280×960 stretched means 1280×960. The new code stores that height and CS2 rescales it if you change resolution later. Native / Stretched / Black bars only affects the preview.
My thickness was 0.5 and decimals are gone. What now?
At 1080p a 0.5 thickness always drew 1 pixel (0.5 × 1080 ÷ 480 = 1.125, rounded to 1). The converter works in real pixels, so there is nothing to adjust.
What happened to the 0.5 outline?
A 0.5 outline only ever drew 1 pixel on the top and left edges. The new Half outline is exactly that, and the converter sets it for you.
Is this safe? Can I get banned?
Yes, it is safe. The tool only produces a share code for the in-game import box and standard console commands, the same as changing settings by hand.
Is my code uploaded anywhere?
No. Decoding, conversion and preview all run locally in your browser. Nothing is sent anywhere.
How accurate is the dynamic preview?
The preview follows the game’s spread projection for Dynamic Cross, Dynamic Circle, Dynamic Quadrant and the legacy split crosshair. Weapon inaccuracy and recoil are approximations, so treat it as a feel for how it moves; the game has the final say.
Got your old crosshair back?
Buy the author a coffee ☕
CrosshairGen is free, has no ads and collects nothing. Every time CS2 changes the crosshair, it gets updated. A coffee is what keeps that going.
One-off tip via Ko-fi.