I = Universe
J = Lowest bit of Account ID (0 or 1)
K = Highest 31 bits of Account ID
C = Character representation of Account Type
U = Universe
A = Account ID
I = Instance
A bit more complicated, but you'll see this on the Steam Community and in the Steam Web APIs. This value is generated as a function of the 4 components described above using bit shifting and bit arithmetic. The function is:
((Universe << 56) | (Account Type << 52) | (Instance << 32) | Account ID)
64-bit Steam ID Components
Given 64-bit Steam ID: 76561197960361544 --- Binary = 100010000000000000000000100000000000000010111011001001000 ^^ ^^ ^^ ^ ||__||__________________||______________________________| U AT INSTANCE 32-BIT ACCOUNT ID --- Account ID = Low 32 bits of 64-bit Steam ID Account ID = 76561197960361544 & ((1 << 32) - 1) Account ID = 95816 --- Instance = Next 20 bits of 64-bit Steam ID Instance = (76561197960361544 >> 32) & ((1 << 20) - 1) Instance = 1 --- Account Type = Next 4 bits of 64-bit Steam ID Account Type = (76561197960361544 >> 52) & ((1 << 4) - 1) Account Type = 1 --- Universe = Remaining (max of 8) bits of 64-bit Steam ID Universe = (76561197960361544 >> 56) & ((1 << 8) - 1) Universe = 1
64-bit Steam ID Legacy TextUsing the results of the 64-bit Steam ID to Components conversion, we can obtain the Legacy Text.
Legacy Text = STEAM_I:J:K = STEAM_1:0:47908 I = Universe = 1 J = Lowest bit of Account ID = Account ID & 1 = 0 K = Highest 31 bits of Account ID = (Account ID >> 1) & ((1 << 31) - 1) = 47908
64-bit Steam ID Modern TextUsing the results of the 64-bit Steam ID to Components conversion, we can obtain the Modern Text.
Legacy Text = [C:U:A:I] = [U:1:95816:1] C = Account Type character (use lookup table on this page) U = Universe A = Account ID I = Instance
Components 64-bit Steam ID
Given Components: Universe = 1 Account Type = 1 Instance = 1 Account ID = 95816 --- 64-bit Steam ID = ((Universe << 56) | (Account Type << 52) | (Instance << 32) | Account ID) 64-bit Steam ID = ((1 << 56) | (1 << 52) | (1 << 32) | 95816) 64-bit Steam ID = 76561197960361544
32-bit Account ID Estimated 64-bit Steam ID
Dota 2 (and probably other games) only identify a Steam account by its 32-bit Account ID. This is often incorrectly called the user's "32-bit Steam ID". There is actually no such thing as a 32-bit representation of a Steam ID. In fact, it's only 32 bits of the full 64-bit Steam ID!
So the only type of "conversion" that can occur between the 32-bit Account ID and the 64-bit Steam ID is an estimation by assuming values for the other missing components.
Note that this will not work if the Steam account has components other than U = 1, AT = 1, and I = 1.
Given 32-bit Account ID: 95816 Assume Universe = 1 (or 00000001 in binary) Assume Account Type = 1 (or 0001 in binary) Assume Instance = 1 or (or 00000000000000000001 in binary) --- Bitwise OR against the assumed binary values from above. 64-bit Steam ID = Account ID | 00000001000100000000000000000001 64-bit Steam ID = 76561197960361544