Protocol version

A protocol version number (PVN) is an integer used to check for incompatibilities between the player's client and the server they are trying to connect to.

Usage
Client and server versions with the same protocol version are compatible with each other. For example, a client running Java Edition 1.8.9 can connect to a server running Java Edition 1.8, as both have a protocol version of 47.

Upon attempting to join a multiplayer server, the game checks if the client has a protocol version newer or older than the selected server; if it does, the game then alerts the player that their client (or the server) is outdated.

Versioning
All versions, including minor releases and development versions on both, have their own protocol version. The version takes the form of an ever-increasing positive integer unlike client versions. Since 1.16.4-pre1, protocol versions of development releases take the form of very large numbers best represented using hexadecimal (represented by the prefix "0x" in the protocol version tables). Protocol versions may occasionally be skipped between major releases.

Java Edition
Each Minecraft build since 18w47b specifies its current protocol version in the version.json file, found in the root directory of the client and server jars.
 * version.json
 * : The protocol version of this build.

Bedrock Edition
Since 1.2.0 beta, the protocol version can be viewed by going into Profile Settings and scrolling down to the bottom. The protocol version appears in front of the text saying "Protocol Version:". It can also appears on the beta text in front of the text saying "cli-pn".

List of protocol versions
The tables below are sorted by data version.