You just set up jumpthrow bind and practised offline for a sick smoke for Mirage. Your friends ask you to join a game on FACEIT, and you throw your smoke, but it missed! What the heck? You just tried it out... Why did this happen?
Game servers have different rates at which they communicate with your game, called tickrate. This slight timing difference affects the movement speed the server thinks you have while jumping, giving you slightly different results on 64 and 128 tick servers. See the video below.
What is tickrate?
Tick rate is a networking term for game servers. It tells us how often our game, the client, communicates with the game server hosted by Valve, or third party providers.
In Counter-Strike Global Offensive game servers are either 64 tick or 128 tick. For matchmaking, Valve has set the tick rate to 64, to save money... They can then run the servers on cheaper hardware. Professional tournaments and most external services like ESEA, FACEIT, and PopFlash all use 128 tick. So depending on what you play the most on, you know what throws will work for you and which won't.
What is the jump throw bind?
The jump throw bind is a small script you can bind to one of your buttons. It allows you with one click of a button to perform multiple actions. In the case of the jump throw bind, these actions are jumping and releasing the left mouse button at the same time.
So why is this so useful? It allows you to throw long-range with the same outcome every time. If you try to jump and release the nade yourself without the bind, you will see some variations for your throws as your not a robot, and you probably release the mouse button at slightly different times.
Why does the tickrate affect the jump throw bind?
As we have explained, the jumpthrow bind removes the need for you to try to time releasing the nade at the same height. We have now offloaded that responsibility to the game.
However, this comes at a cost. The bind will send two commands to the game server. First, it will send a jump command, then a release command.
Since the server and client communicate less frequently on 64 tick, the server will receive slightly different movement speeds during your jump. This is the reason your jumpthrow bind will have different outcomes on 64 tick and 128 tick. Because of the tickrate, the release of the grenade will have different speeds on 64 and 128 tick.
In the video below, you can see that the release happens at slightly different heights on the two tickrates.
Using the jumpthrow bind will give you the same result every time, if your playing on the same tickrate. If you play on both matchmaking and FACEIT, you are going to need to learn the same nade for both tickrates, if it uses a jumpthrow bind.
Here is also the YouTuber BananaGaming explaining the same concept:
Bonus: Variations of the jump throw bind
There are variations of the jump throw bind. More specifically, there are three. Let’s see them all and how they differ.
alias "+jumpthrow" "+jump;-attack"; alias "-jumpthrow" "-jump"; bind x "+jumpthrow";
The Standard jump throw bind. It will jump and release the left mouse button and is the most basic variation that most people use.
With both mouse buttons
alias "+jumpthrow" "+jump;-attack;-attack2"; alias "-jumpthrow" "-jump"; bind x "+jumpthrow"
Personally, I use this variation, as it allows you to do a jump throw with your right mouse button down for a short-range jump throw. Or for some particular situations, I hold down both mouse buttons and click the bind, giving me a medium-range jump throw result. Even with this slight modification to the bind, It will still work correctly with the normal left-click throw as well.
alias "+jumpthrow" "+jump;-attack;+forward"; alias "-jumpthrow" "-jump;-forward"; bind x "+jumpthrow;
Last but not least, we have the extra range jump throw bind that, in addition to doing a jump and release, takes a single step forward, giving it some extra distance. This is the least used one, and I would not recommend it if you're looking at guides as they 99% of the time use one of the other two.