The best crosshair is small, thin, static (no dynamic spread) and high-contrast against the maps you play — with either a small center dot or a small fixed gap so you can place an exact pixel on a target's head. There is no secret pro preset that fixes your aim; the two things that actually matter are visibility (you can always see it, on light and dark surfaces) and consistency (you keep the same crosshair long enough for your eyes to stop searching for it). Everything below is about getting those two right for CS2, Valorant and Apex Legends.
Every game exposes roughly the same handful of parameters. Get these right and the per-game menus become trivial.
Crosshair size is the length of each line; gap is the empty space in the center. Smaller is generally more precise because a big crosshair physically covers the head you are trying to hit, especially at range. A small gap (or a negative gap that nearly closes the crosshair) tightens your aiming reference. Go too small, though, and you lose it against busy backgrounds — which is what the outline and color settings fix.
Thickness is line width. Thin lines (around 0.5 in CS2 units) are more precise and obscure less of the target; very thick lines feel comfortable but blot out distant enemies. Most players settle on thin-to-medium and let the outline carry visibility.
Color is purely about contrast against your environment, and the outline is the unsung hero: a 1px black border makes a bright crosshair readable over both a white wall and a dark doorway. Without it, a green crosshair vanishes on green foliage and a white one disappears in muzzle flash. Always turn the outline on.
A dynamic crosshair expands when you move or shoot to visualise bullet spread. It sounds helpful but it trains bad habits: it hides the true center while you are moving (exactly when you most need a precise reference for counter-strafing) and it rewards reading the crosshair instead of knowing your spray pattern. Set it to static in every game. In CS2 that is cl_crosshairstyle 4.
Use these as clean, neutral baselines, then nudge size and gap to taste. They favour small, static, outlined crosshairs.
| Game | Style / type | Size | Gap | Thickness | Outline | Center dot |
|---|---|---|---|---|---|---|
| CS2 | Static (style 4) | 2–3 | -2 to -1 | 0.5–1 | On, 1px | Optional |
| Valorant | Crosshair menu, lines | Length 4, width 2 | 2–3 | n/a | On, 1px | Optional dot |
| Apex Legends | Default reticle 1 or 3 | Built-in | Built-in | Built-in | Built-in | Reticle-dependent |
CS2 gives you full control through console variables, and you can export or import any crosshair as a share code from our crosshair code database. The commands you will actually touch:
cl_crosshairstyle 4 — classic static crosshair (never expands). This is the single most important command.cl_crosshairsize 2 — line length.cl_crosshairthickness 0.5 — line width.cl_crosshairgap -2 — negative values tighten the center.cl_crosshair_drawoutline 1 and cl_crosshair_outlinethickness 1 — the visibility-saving black border.cl_crosshaircolor 5 with cl_crosshaircolor_r / _g / _b — custom RGB; set 0 255 255 for cyan.cl_crosshair_t 0 and cl_crosshairdot 1 — toggle the bottom line and the center dot.Build one by hand or generate it visually with our crosshair generator, which outputs the commands and a share code you can paste straight into Settings.
Valorant has no console; everything lives in Settings → Crosshair. The crosshair is always static (Valorant has no dynamic-spread option in the classic line crosshair beyond the optional movement/firing error toggles — turn those off). Sensible defaults: Crosshair Color cyan or green; Outlines On, opacity 1, thickness 1; Center Dot optional; Inner Lines opacity 1, length 4, thickness 2, offset 2; Outer Lines off. Critically, disable Movement Error and Firing Error so the lines never expand. You can also import a code from the same crosshair database.
Apex does not expose granular crosshair sliders the way CS2 does — you pick a reticle per optic/weapon and a color. For hipfire and close range, a simple default reticle (the small plus or a dot) keeps the center uncluttered. Apex reticles do bloom with hipfire spread, which is accurate game feedback here because Apex genuinely has hipfire bloom; the takeaway is to ADS for precision and not to fight the engine. Choose a high-contrast color from the limited palette and keep it identical across weapons so your reference point never changes.
Contrast is the whole game with color. The trick is to choose a hue that rarely appears in the environments you fight in, so the crosshair pops instead of camouflaging. This table is a practical contrast guide.
| Color | Contrast on common maps | Risk | Verdict |
|---|---|---|---|
| Cyan | Excellent — few maps are cyan | Slight wash-out on bright sky | Top pick for most players |
| Green | Very good indoors/urban | Blends into foliage/jungle | Great unless map is green |
| Pink / Magenta | Excellent — almost never in maps | Personal preference | Underrated high-contrast pick |
| Yellow | Good | Sand, desert, lighting | Solid alternative |
| White | Poor | Muzzle flash, smoke, light walls | Avoid |
| Red | Poor | Blood, lava, red signage | Avoid |
Always pair your color with a black outline. The combination of a non-environmental hue plus a 1px border is what keeps a small crosshair readable everywhere, which is the entire point of a small crosshair.
A center dot gives you an exact single-pixel aim point and is excellent for tap-firing, pistols and pixel-precise headshots. The downside is that it can obscure a far-away enemy's head — the very thing you are aiming at. Rule of thumb: if you play precise tap-shooting roles (rifles, awp/sniper, pistol rounds) try a small dot; if you spray or play movement-heavy, an open crosshair with a small gap may feel cleaner. Either is fine. Test one for a week before switching, because switching daily is itself a source of inconsistency.
Here is the uncomfortable truth: crosshair placement matters more than the crosshair. Holding your aim at head level, on the angle an enemy will appear from, means most duels begin with your crosshair already on or beside the target — a 50ms micro-correction instead of a 300ms flick from the floor. A plain default crosshair held at head height beats a perfect custom crosshair pointed at the ground every single time.
Placement is a trainable habit: walk every common angle pre-aiming head level, keep the crosshair off the floor, and lead corners. Then build the raw mechanics that back it up with our CS2 aim training guide and, for Riot's tactical pace, the Valorant sensitivity guide. The crosshair is the reference point; placement is what you do with it.
Small, thin, static and high-contrast against your maps, with a small center dot or small gap. There is no magic preset — visibility and consistency beat shape. Pick a clean static crosshair and keep it the same across sessions.
Static. A dynamic crosshair expands while you move or fire, hiding the true center exactly when you need it and training you to read inaccurate feedback. In CS2 set cl_crosshairstyle 4.
Cyan, green and pink/magenta give the highest contrast on most maps. Avoid red and white, which blend into blood, muzzle flash, smoke and bright walls. Always add a 1px black outline.
Yes. Holding head level and pre-aiming angles means fights start with your crosshair already near the target, needing a tiny correction rather than a flick. A plain crosshair at head height beats a perfect one on the floor.
Use cl_crosshairstyle 4, cl_crosshairsize 2, cl_crosshairthickness 0.5, cl_crosshairgap -2, cl_crosshair_drawoutline 1, cl_crosshair_outlinethickness 1 and a custom RGB color. Or import a share code from a crosshair database.