Menu

Guidefor developers5 min read

Minecraft protocol versions: full list and snapshot quirk

Every Java Edition protocol number in one ordered table, what a matching number does and does not guarantee, and why snapshot numbers set the high bit.

What the protocol number is for

The protocol version is a single integer sent in the first packet of a connection. The client states the number it speaks, the server compares it to its own, and if they differ the connection is closed with a version mismatch before login begins. It exists because the wire format changes constantly and there is no negotiation step: either both ends agree on the packet layout or they cannot talk at all.

The number is not derived from the version string. It is assigned by Mojang, it increments only when the wire format actually changes, and it is the only value that decides whether a handshake succeeds. Of the 903 Java Edition versions on this site, 777 carry a protocol number. The rest predate the field.

Protocol numbers for the calendar releases

ProtocolVersionsReleasedJava
77626.216 June 202625
77526.1, 26.1.1, 26.1.224 March to 9 April 202625

The switch to calendar versioning did not reset the counter. 26.1 continued from 774, which was the last 1.x release, 1.21.11. That is deliberate: the protocol number is a wire format identifier and the wire format did not restart, only the naming did. If you are wondering where 1.22 went, see why 1.22 became 26.1.

Protocol numbers across the 1.x era

Two patterns are worth reading out of the table below before you use it.

First, a bump is not guaranteed per release. Patch releases that change no packets keep the number, which is why 1.21.7 and 1.21.8 both speak 772 and interoperate freely in both directions.

Second, the number is not continuous. It jumps from 578 at 1.15.2 to 735 at 1.16, and from 736 at 1.16.1 to 751 at 1.16.2. The reason is that snapshots used to consume numbers from the same space as releases. Development builds between two releases each took a number, so by the time the release shipped the counter had moved a long way. Mojang fixed this in November 2020, which is where the next section starts.

Why snapshot protocol numbers are enormous

From 20w45a, published 4 November 2020, snapshots stopped sharing the release number space. Instead they set bit 30 of the integer and count upward from there:

0x40000000 = 1073741824   the base
1073741829 = base + 5     20w45a
1073742151 = base + 327   26.3-snapshot-5

Subtract 1073741824 and you get a plain sequence number for the snapshot, counted from that November 2020 starting point. The current snapshot line, 26.3-snapshot-1 through 26.3-snapshot-5, sits at 1073742147 through 1073742151.

This is why a naive integer comparison puts every snapshot above every release. If you are ordering versions, do not sort on the protocol number. Sort on release order, which is what sortIndex on this site does, and treat protocol as an attribute of the version rather than a rank.

What a matching protocol does not guarantee

A matching protocol number gets you past the handshake. It does not get you into the world.

  • Assets are separate. A client on the same protocol but a different version can be missing block models, sounds or translations added in a later patch. It connects and then renders wrongly.
  • Server software has its own opinion. Paper, Purpur and the proxies check the Minecraft version they were built for, not just the protocol number, and will refuse a client the vanilla server would have accepted.
  • Plugins can enforce more. Anything that inspects the client brand or the exact version string can reject a connection the protocol layer allowed.
  • Data version is a different check. World and chunk format compatibility is decided by the data version, not the protocol. 26.2 speaks protocol 776 and writes data version 4903, and those two numbers answer different questions.

The correct reading of a protocol match is narrow: these two ends will not be disconnected for a version mismatch. Everything after that is a separate question.

Letting older clients connect anyway

Multi-version support is not a vanilla feature. A vanilla server speaks exactly one protocol number and rejects everything else. Servers that accept a range of client versions are running a translation layer that rewrites packets between the client's protocol and the server's, either as a plugin on the server or on a proxy in front of it.

That translation is best effort. Features added after the client's version cannot be represented in the older packet format, so the layer either approximates them or drops them. It is a viable way to keep a public server reachable, and it is not a substitute for the client and server agreeing on a version.

Full protocol table

Java Edition releases, newest first. Versions sharing a number are grouped on one row.

ProtocolReleases
77626.2
77526.1.2, 26.1.1, 26.1
7741.21.11
7731.21.10, 1.21.9
7721.21.8, 1.21.7
7711.21.6
7701.21.5
7691.21.4
7681.21.3, 1.21.2
7671.21.1, 1.21
7661.20.6, 1.20.5
7651.20.4, 1.20.3
7641.20.2
7631.20.1, 1.20
7621.19.4
7611.19.3
7601.19.2, 1.19.1
7591.19
7581.18.2
7571.18.1, 1.18
7561.17.1
7551.17
7541.16.5, 1.16.4
7531.16.3
7511.16.2
7361.16.1
7351.16
5781.15.2
5751.15.1
5731.15
4981.14.4
4901.14.3
4851.14.2
4801.14.1
4771.14
4041.13.2
4011.13.1
3931.13
3401.12.2
3381.12.1
3351.12
3161.11.2, 1.11.1
3151.11
2101.10.2, 1.10.1, 1.10
1101.9.4, 1.9.3
1091.9.2
1081.9.1
1071.9
471.8.9 down to 1.8
51.7.10 down to 1.7.6
41.7.5 down to 1.7.2

Snapshots, pre-releases and release candidates are omitted here because there are hundreds of them and their numbers follow the rule in the section above. Each one is listed on its own page under all Minecraft versions.

What could change

The protocol number for a released version never changes, so every row above is stable. What moves is the top of the table: each new release either takes the next number or reuses the current one, and the snapshot counter advances weekly. Two things are worth rechecking rather than remembering. Whether a new patch release bumped the number, because that decides if existing clients keep working, and which snapshot number the current development line has reached. Both are read from Mojang's version manifest on every sync and shown on the individual version pages, such as 26.2.

Frequently asked

What protocol version is 26.2?

776. The 26.1 family, covering 26.1, 26.1.1 and 26.1.2, speaks 775, and the last 1.x release, 1.21.11, speaks 774.

Why is a snapshot protocol number over a billion?

Since November 2020 snapshots set bit 30 of the protocol number, which is 0x40000000 or 1073741824 in decimal, and count upward from there. It keeps snapshot numbers out of the release number space so a release never collides with a development build.

Can two Minecraft versions share a protocol number?

Yes, and it is common. 1.21.7 and 1.21.8 both speak 772, 1.21.9 and 1.21.10 both speak 773, and every release from 1.8 to 1.8.9 spoke 47. When the number matches, the clients and servers involved interoperate.

Does a matching protocol mean a client can join?

It means the handshake will not be rejected for a version mismatch. It does not mean the client has the right assets, that server software will accept it, or that a plugin enforcing an exact version will let it through.

Referenced on this site

Last reviewed 2026-07-27. Version data on this site updates automatically; this guide is reviewed by hand when the ecosystem changes.