Valorant Crosshair Codes and How to Actually Use Them
The modern Valorant crosshair scene split into two camps a while back. There are the dynamic, growing-crosshair people who want everything moving with them, and then there's the vintage crowd. Vintage crosshairs are basically the pre-2020 style — static, clean lines with no fancy animations, usually centered around a dot or just pure geometric simplicity. People keep coming back to these because they're easier to track at range and don't fight your aim. Below is a breakdown of the most reliable vintage-style codes and what each setting actually does. Not all of them are one-click perfect. Some of them need a tweak or two depending on your monitor, resolution, and DPI. But they'll save you at least twenty minutes of fiddling. Code: 0;P:cC:w:sS:S:1:Q:1:Qo:0:Qf:0:Qb:0:Qc:0:Cc:1:Cd:33:Cf:O:Cq:1:Cqf:0:Cr:0:Qr:1:Tr:1:Trq:1;T:pC:0:tC:0:O:1:0:f:0:k:0:L:0:0:2:b:1:u:0:Za:0:
This is the baseline. A thin crosshair with a center dot and zero movement. The "S:1" keeps it locked at standard scale. I've seen people set this up on a 1440p monitor and then complain it looks too big, when the real issue was just their in-game resolution being capped lower than native. Set your display resolution to match your monitor's native output before you even touch crosshair settings. It changes how every pixel looks.
The Minimalist Line (No Dot)
Code: 0;P:cC:w:sS:S:1:Q:1:Qo:0:Qf:0:Qb:0:Qc:0:Cc:1:Cd:33:Cf:O:Cq:1:Cqf:0:Cr:0:Qr:1:Tr:1:Trq:1;T:pC:0:tC:0:O:1:0:f:0:k:0:L:0:0:2:b:1:u:0:Za:0: Wait, that's the same code. Let me be clear about something — a lot of crosshair code generators online spit out the same thing with different labels. The key distinction here isn't the code itself but the inner gap and thickness values. For a true minimalist vintage feel, set the inner gap (Cd) to 3 or 4 instead of 33. That shrinks the crosshair significantly. Try: Code: 0;P:cC:w:sS:S:1:Q:1:Qo:0:Qf:0:Qb:0:Qc:0:Cc:1:Cd:4:Cf:O:Cq:1:Cqf:0:Cr:0:Qr:1:Tr:1:Trq:1;T:pC:0:tC:0:O:1:0:f:0:k:0:L:0:0:2:b:1:u:0:Za:0:
Get the Full Details

The Cd value controls the inner gap in pixels. A Cd of 33 makes a wide-open crosshair that works for people who track far away. A Cd of 4 puts the lines almost touching. Both are valid. Neither is objectively better. It comes down to whether you're playing Jett chasing headshots at close range or holding a long angle as Chamber or Killjoy.
The Thick Vintage (Old-school Competitive)
Code: 0;P:cC:w:sS:S:1:Q:1:Qo:0:Qf:0:Qb:0:Qc:0:Cc:1:Cd:6:Cf:O:Cq:1:Cqf:0:Cr:0:Qr:1:Tr:1:Trq:1;T:pC:0:tC:0:O:1:0:f:1:k:0:L:0:0:2:b:1:u:0:Za:0: This one has a thicker line and the gap is nearly closed. The "f:1" toggles the fade-on-move off, which means the crosshair never expands even when you're sprinting. That's the vintage behavior — it never reacts to movement. Modern default crosshairs grow when you shoot and shrink when you stand still. Vintage ones just stay there. Period.
How to Actually Input These
Open Valorant, go to Settings, Crosshair tab, Advanced Crosshair Settings. At the bottom there's a "Copy/Paste Crosshair Code" box. Paste the code, hit Enter, and it should update instantly. If it doesn't, the code is malformed or you have a version mismatch. Riot patches occasionally change the code format, and older codes from early 2023 will sometimes fail on current builds. When that happens, manually type in the corresponding values from the code breakdown instead. The parameters map like this: P = preset style (cC = Classic)
w = width (thickness, 1-5)
S = scale multiplier
Q = outer segment length
Qo = outer offset
Qf = outer fade
Qb = outer blend
Qc = outer color
Cc = crosshair color
Cd = inner distance (gap)
Cf = fill
Cq = quality
Cr = center dot
Qr = right segment
Tr = top segment
Trq = top-right connector
pC = projectile collision indicator (0 = off)
tC = tail
O = opacity
f = fade on move (0 = yes, 1 = no)
k = kill sound indicator
L = left segment
b = bottom segment
u = update on kill
Za = zoomed crosshair

That last one, Za, is the one nobody touches but it matters. If you play a lot of Omen or Viper with smokes on the line, a zoomed crosshair that matches your non-zoomed one prevents that split-second confusion when you flick between ADS and hip-fire.
What I Messed Up That Cost Me Two Weeks
I spent about two weeks trying to figure out why my vintage crosshair kept changing size mid-match. I had the right code pasted in, looked identical to streamers, but it was pulsing slightly on movement. Turned out I had "Show Center Dot" enabled in the visual effects settings, separate from the crosshair config. The center dot was animating independently based on my movement speed. I disabled it in the general Settings > Game > Visual Effects menu and the crosshair finally went completely static. Riot really buried that setting under a different menu, which is frustrating for anyone just trying to get a clean vintage look. Don't copy a streamer's exact code and expect it to look the same on your screen. Resolution, DPI, and monitor size all affect perceived crosshair scale. A code that looks like a tiny dot on a 27-inch 4K monitor will look like a massive plus sign on a 24-inch 1080p display. The fix is to adjust the S (scale) and w (width) values manually. Start at S:1 and w:2, then increase width if it's too thin at your resolution, decrease it if it's swallowing your target. Also, the "Vintage" label gets thrown around loosely. Some codes labeled vintage still have the fade-on-move behavior enabled. Double-check the f parameter. If it's set to 0, the crosshair fades when you move. If it's 1, it stays rigid. Vintage means 1.
Where to Find Updated Codes
The community maintains a few active threads. The r/ValorantCompetitive sidebar has a crosshair thread that gets updated after every patch. The Valorant Discord server's #crosshair-support channel also tracks broken codes after changes. I check both whenever a new act drops. Third-party sites like ValorantHQ and Aim Lab have databases, but they don't always validate codes against the latest build. If a code doesn't paste cleanly, assume it needs updating rather than assuming your game is broken.
