Getting Your Hands on Those Retro Valorant Crosshairs
Valorant launched with a fairly minimal set of crosshair options, and a lot of players came from CS:GO or older shooters with very specific visual preferences. The "vintage" crosshair trend refers to those minimalist, single-dot or simple-line designs that were popular during Valorant's early seasons around 2020 through 2021, before Riot started adding more granular customization options. These crosshairs are usually defined by tiny center dots, minimal outer segments, and very low offset values — they look almost too plain until you're tracking moving targets at range. The main sources for these codes are community-maintained databases and third-party crosshair generator sites. Vandal.gg, Aim.bot, and the Valorant Crosshair Generator (valorantcrosshair.com) all have filter options for "classic" or "vintage" styles. The codes themselves are long strings of characters that look like gibberish — something like 0;S;P;bH0;bM2;bB1;bA1;bSA0;cC1;cG1;cR0;cB0;cO0;gG1;fH0;fM2;fB1;fA1;fSA0; and so on. You copy the whole string and paste it into the game via the inventory menu under crosshair settings. Here is the direct method that actually works: open Valorant, go to Settings > Crosshair, click Import at the bottom of the panel, paste the code, and hit confirm. That is it. No extra tools needed. If the import fails, it is usually because the code has trailing whitespace or was copied from a mobile browser that adds hidden characters. Strip the code down to just the raw string and try again.
I ran into this exact issue last year when I was testing a batch of vintage codes from a deleted Reddit thread. Three out of five would not import and just returned a generic error message. The workaround was opening each code in a plain text editor, selecting all, deleting everything, and re-pasting only the alphanumeric content without any surrounding quotes or formatting. The other two worked fine on the first try, which told me the original poster had probably copy-pasted them with invisible formatting from a webpage. Beyond importing codes, you can also manually recreate these crosshairs using the in-game slider system. Vintage-style crosshairs typically have the following settings dialed in: Inner Horizontal set to 0 or 1, Inner Vertical set to 0 or 1, Outer Horizontal and Outer Vertical both at 0, Center Dot size at 1, Center Dot color set to a high-contrast green or white, and thickness at 1. The Gap between inner segments is usually 0 to 2. These values get you something that looks like the classic dot-crosshairs from the early days. One thing most people miss is that the Center Dot and the Inner Segments are visually separate layers in Valorant's engine. You can have a zero-gap inner crosshair and a separate center dot floating on top of it. This means you can remove the center dot entirely and rely purely on the inner segment intersection as your aiming point, which actually looks cleaner at medium range because there is less visual clutter. I switched to this configuration about two years ago and it has stayed my main setup since. The tradeoff is that close-range spray control benefits slightly less from having that center anchor point, but for tap-and-tac play it removes a pixel of noise that used to throw me off.
Another counter-intuitive detail: lowering your Outer Crosshair opacity to 0 while keeping Inner at full opacity makes the crosshair feel significantly lighter on screen without actually removing any aiming guides. Players often assume they need both inner and outer segments visible, but the outer segments are mostly useful for long-range tracking where you need a wider reference frame. At competitive distances, that outer frame just becomes visual static. Setting Outer Alpha to 0 and keeping Inner Alpha at 100 gives you a much tighter feel. The main limitation with vintage crosshairs is that they do not scale well across different monitors or resolutions. A crosshair that looks perfectly sized on a 1080p 24-inch panel can appear abnormally small on a 1440p 27-inch panel at the same game resolution. The fix is to use the Scale slider in-game after importing a code, not to chase a universal code that works everywhere. I keep a reference setup for each resolution I play at and switch via the code import rather than trying to adjust sliders live during a match. There is also a real bottleneck with relying on imported vintage codes: Riot has changed crosshair rendering in patches, and codes that worked in Episode 3 Act 2 may render slightly differently in later episodes due to changes in how center dot blending works. This is rare but it happens. If a code looked perfect a few months ago and suddenly looks off, check the patch notes for crosshair-related changes and consider rebuilding from scratch rather than waiting for an updated code to surface.
Get the Full Details

If you want a starting point without hunting through multiple sites, here is a code that closely matches the most common vintage dot-crosshair style and imports cleanly on current builds: 0;S;P;bH1;bM2;bB1;bA1;bSA0;cC1;cG1;cR0;cB0;cO0;gG1;fH0;fM2;fB1;fA1;fSA0; Paste that into Settings > Crosshair > Import. From there, adjust the Scale and Gap sliders to match your monitor. The Inner Horizontal and Inner Vertical should already be set to 1, which gives you the tight intersection that vintage crosshair users look for. If you want the bare minimum version, set Inner Horizontal and Inner Vertical to 0 and leave only the Center Dot active. That gets you a single pixel crosshair with no lines at all, which is about as vintage as it gets.
The biggest mistake I see is people importing these codes and then immediately changing multiple sliders in a single session, which resets the visual intent of the original design. Pick one vintage code, lock in the settings, and give yourself at least a week of actual match time before tweaking anything. Your brain needs to adapt to the new aiming reference, and constant adjustment just resets that process.