Converting Mouse Sensitivity Between Games Is One Division
Every cross-game sensitivity converter runs on one division and seven numbers. Where those numbers come from, and four places the arithmetic stops matching how aim feels.
Someone links a pro's config and you want their aim in the game you actually play. Or you are moving from Counter-Strike to Valorant for a season and you do not want to relearn your flicks. Either way you paste a number into a converter, it hands back another number, and you get on with your day.
That returned number is one division. The seven-game table beside it, the eDPI readout, the cm/360 line: all of it is arrangement around a single operation. Knowing where that operation comes from is most of what makes it trustworthy, and knowing the few spots where it quietly stops being enough is the rest.
The conversion is one line of arithmetic
The math inside the converter on this site is a lookup table and three functions, none longer than a line. This is the one that matters:
sensB = sensA * yawA / yawB
Your sensitivity in the new game is your old sensitivity, times your old game's yaw constant, divided by the new game's. That is all of it. CS2 to Valorant with a sens of 2.0 is 2.0 * 0.022 / 0.07, which comes out 0.6285714..., and the repeating tail is the first hint that the clean answer and the number you can actually type into a settings box are different things.
Mouse DPI is not in that line, and it does not need to be. As long as you keep the same mouse and the same DPI in both games, DPI cancels out of the ratio. It matters for the eDPI and cm/360 figures the tool prints next to the result, and nowhere else.
What a yaw constant is, and where 0.022 comes from
A yaw constant is the number of degrees your view rotates for one count of mouse movement when in-game sensitivity is 1. Counter-Strike's is 0.022. For the Source family this is not a community estimate the way it is for every other game here. It is the literal default string in Valve's published engine code, where m_yaw and m_pitch are both declared as ConVar( "m_yaw", "0.022", ... ), and the line that turns a mouse movement into a camera movement reads viewangles[YAW] += m_yaw * mouse_x.1
Read the chain right to left and the conversion formula falls out. If the degrees added per count must stay the same, and that quantity is sens * yaw, then changing yaw forces sens to move by the inverse ratio. Multiply by the old yaw, divide by the new one.
The seven games the tool knows about carry four distinct constants. CS2, CS:GO, Apex Legends, Quake and Rust all use 0.022, which is why the tool reports a one-to-one conversion between any pair of them and why Apex players and CS players can trade configs without arithmetic. Valorant uses 0.07. Overwatch 2 uses 0.0066. Rainbow Six Siege uses 0.005729578, which is not really a yaw constant at all but a conversion factor the community settled on, and Siege has changed its underlying sensitivity model more than once, so treat that row as the roughest of the seven.
Only one of those four numbers is documented, and it is the 0.022. Riot has never published Valorant's 0.07. Blizzard has never published Overwatch's 0.0066. Every sensitivity converter ever made, this one included, runs those games on figures that players measured by turning in a practice range and counting degrees, then agreed on. The figures are stable and almost certainly right. They are also nobody's official number, so when a game ships a quiet tuning change the converters find out from the complaints.
cm/360 is the number that actually stays put
Sensitivity values are a per-game coordinate system. The thing they are coordinates for is cm/360: the centimetres of mouse movement it takes to spin a full circle.
cm/360 = 360 / (sens * dpi * yaw) * 2.54
A CS2 player at sens 2.0 and 800 DPI has a cm/360 of 25.98. Convert to Valorant and the sensitivity becomes 0.6286, the DPI stays 800, the yaw is now 0.07, and the cm/360 is 25.98 again. Holding that figure still is the entire job of the conversion. Your hand makes the same physical sweep to turn 180 degrees in both games, and only the number in the settings menu is different.
It is also why comparing two players across games means comparing cm/360 and never the sensitivity field. A Valorant player and an Apex player both at 20 cm/360 have genuinely matched aim speed. Both at "sens 1.5" have almost nothing in common.
eDPI does not survive the trip
eDPI is sensitivity times DPI, and it is a fine shorthand inside one game. Two CS2 players comparing eDPI 800 against eDPI 1600 are comparing something real. The moment you carry the figure across a yaw boundary it stops meaning anything, because eDPI leaves the yaw constant out and the yaw constant is exactly what changed.
An eDPI of 1600 is a common competitive Counter-Strike figure, around 26 cm/360. Type that same eDPI into Valorant's yaw and you get 8 cm/360, a flick setup three times faster. Into Overwatch's yaw and you get 87 cm/360, an arm-sweep three times slower. The number on the spreadsheet is identical in all three; the aim is not remotely the same.
Where holding cm/360 still is not enough
The conversion is exact for horizontal view rotation and silent about everything else that decides whether a sensitivity feels like home.
Scoped and aim-down-sights sensitivity is a separate control in every game, with its own scaling rule. CS2 has zoom_sensitivity_ratio. Valorant has a per-magnification multiplier. Apex has a row of them. The hipfire conversion does not touch any of it, so a converted sensitivity can have your no-scope aim matched and your AWP or Operator aim noticeably off, and you fix that second number by feel afterwards.
Field of view changes what a matched cm/360 looks like on screen. Two setups with the same cm/360 but different horizontal FOV move the same number of degrees per centimetre, but the target under your crosshair slides across a different number of pixels, because a wider FOV paints more world into the same monitor. This is the argument behind the "monitor match" or "0% versus 100%" conversion options on the bigger calculator sites. cm/360 matching is the 0% end of that scale, and for most players moving between similar FOVs it is the right default. Between a 90 FOV game and a 106 FOV game it is a real difference in how a flick reads.
Mouse acceleration breaks the linear model the formula assumes. The diagram multiplies by a constant; acceleration makes that multiplier depend on how fast the mouse moved, so no single sensitivity converts cleanly. Almost every competitive player has it off, which is the only reason this footnote stays a footnote.
The target game rounds the field you type into. 2.0 * 0.022 / 0.07 is 0.62857142... forever, and Valorant's sensitivity box holds a few decimals. Enter 0.629 and your cm/360 lands at 25.96 against a target of 25.98. Enter 0.63 and it is 25.92. A fifth of a percent, far below what a hand can feel, and also the reason a round trip through two converters rarely hands back the number you started with. That is the typed value run through the same formula; whether a given game clamps or re-rounds it somewhere inside is its own business and not something the arithmetic can see.
Coming from CS:GO, there is nothing to convert
CS2 kept CS:GO's sensitivity model and its 0.022 yaw, so your sensitivity value moves over untouched and any converter that tells you otherwise is wrong. The setting to actually check is m_yaw. It is a separately saved console variable, FCVAR_ARCHIVE in the same engine code1, so if you ran a non-default value like 0.0165 for a stretched resolution, open the console and confirm CS2 still has it. A reset there makes horizontal aim read fast while the sensitivity number you keep looking at is unchanged.
What the converter does and does not touch
Paste your current game, sensitivity and DPI into the sensitivity converter and it prints the matched sensitivity for the other six games, plus your eDPI and cm/360. The maths runs in the browser and the tab sends nothing, because there is nothing to look up. It converts hipfire view rotation and stops there, so your scoped multiplier and your FOV setting are still yours to sort out. Match the main number with the tool, then give the scoped value ten minutes in a practice range. That part is on you.
Sources
Every number in this article traces to a source below. Where a claim could not be sourced, it was cut rather than softened.
- Primary sourceValve Corporation
That m_yaw and m_pitch are both declared as FCVAR_ARCHIVE ConVars with a default of "0.022", and that horizontal view rotation is computed as viewangles[YAW] += m_yaw * mouse_x, so the degrees added per mouse count are the count times sensitivity times 0.022.
Topics
- CS2
- Sensitivity
- Valorant
- Mouse
Tools mentioned in this article
- CS2 Sensitivity Converter - Convert mouse sensitivity between CS2, Valorant, Apex and more, with eDPI and cm/360.
- CS2 Voice Comms Calculator - Hear specific players in a CS2 or FACEIT demo - upload it to auto-fill players and get the tv_listen_voice_indices commands.
- CS2 Crosshair Code Decoder - Decode a CSGO-xxxxx crosshair share code into cl_crosshair console commands.
- SteamID Converter - Convert between SteamID64, STEAM_0:Y:Z, SteamID3 [U:1:W], account ID and profile URL.
Get new tools by email
New tools and the occasional deep-dive, about once a month. No spam, no sharing your address, unsubscribe in one click.