Glossary

Detection & reputation

TCP fingerprinting

Reading the sender's operating system out of the TCP handshake: the hop limit, the segment size, the window and the order of the options.

Updated 20 September 2026 · 8 primary sources

Every connection opens with a SYN packet, and that packet is not neutral. The operating system that sends it chooses a starting hop limit, a segment size, a receive window and a list of options. None of it is secret, none of it is negotiated, and the arrangement differs from one system to the next.

The method is old and still in use. p0f, the tool that made it known, needs one SYN packet. It weighs "the ordering of TCP options, the relation between maximum segment size and window size, the progression of TCP timestamps, and the state of about a dozen possible implementation quirks".

What one SYN packet gives away

Four fields carry most of the signal. The hop limit starts at a value the system picks, and p0f notes that "almost all operating systems use 64, 128, or 255". Every router on the way subtracts one, so a packet that arrives with 54 started at 64 and crossed ten routers. Unix-like systems start at 64 and Windows at 128.

The segment size comes from the sending interface, so it reports the link rather than the system. The window and its scaling factor were standardised in September 2014 and differ by system and by tuning. The order of the options is the quietest signal. The standard says which options exist. It never says in what sequence they must appear, so each stack lists them its own way.

The fields a passive fingerprinter reads from a single SYN packet, and what each one suggests.
FieldCommon valuesWhat it suggests
Hop limit64, 128, 255The system family, and the distance in routers
Segment size1460, or lowerThe link: 1460 is plain Ethernet, less means encapsulation
Window and scale64240 with scale 7The system and its tuning
Option orderTwo common layoutsThe stack itself, since no standard fixes the order

Whose machine does the handshake describe?

This is the part that matters for proxy work, and it depends on the arrangement. A SOCKS or HTTP proxy opens its own connection to the target on your behalf, a design written down in March 1996. Your own handshake ends at the proxy, and the target reads the proxy's machine.

A VPN does not work that way. It carries your packets inside a tunnel, so your own system still performs the handshake with the target and the target still reads your system. The tunnel takes bytes from each packet, which is why the segment size drops and gives the arrangement away.

Who performs the handshake the target sees, and what usually gives the arrangement away.
ArrangementWhose SYN the target readsThe usual tell
SOCKS or HTTP proxyThe proxy's machineA server stack behind a client's claims
VPN tunnelYour own machineA reduced segment size
CDN or reverse proxyThe CDN's machineOne fingerprint for very many visitors

What 594 live proxies actually send

On 20 September 2026 we asked 2,400 proxies from our own free list to open a connection to our own server. We captured the SYN that arrived from each of them. Of the 2,400, some 461 completed the request, and 594 distinct proxies reached us. Of those, 588, or 99.0 percent, started the hop limit at 64. Four started at 128, and all four also used the Windows option order, so the two signals agreed every time.

The segment size is the more interesting column. The plain Ethernet value of 1460 came from 72.2 percent of them. The other 27.8 percent sent something smaller, which means their traffic is encapsulated somewhere. That is more common on the addresses our list does not mark as datacenter, 30.9 percent against 18.1 percent. Altogether the 594 proxies produced 112 distinct fingerprints, 72 of which appeared exactly once.

The six most common exact fingerprints among 594 live free proxies, 20 September 2026. All six use the Unix option order.
Window and scaleSegment sizeProxies
64240, scale 71460215
14600, scale 7146080
65535, scale 6144026
14600, scale 4146022
14600, scale 5146015
65535, scale 9142414

The same thing happens in front of our own site

In the same minutes, 5,693 other connections arrived at that server from 2,504 addresses, carrying 53 distinct fingerprints. One of them covered 2,808 of the connections, because our site sits behind a content delivery network and those packets come from its machines. Our origin reads the network's stack and never sees a visitor's.

One more result is worth admitting. Our own server sends window 64240, segment size 1460, scale 7 and the Unix option order. That is exactly the fingerprint 215 of the 594 proxies sent. At this layer a rented server and a free proxy are the same shape. What matters is whether that shape matches what the client claims to be.

What it means when you work through a proxy

The contradiction is the whole detection. A request that announces Chrome on Windows, while its SYN describes a Linux server, has answered the question already. Our numbers show how likely that is: 99 percent of free proxies present a Unix stack. A Windows claim through one of them is therefore a mismatch.

You cannot correct this from your own machine, because the packet is the exit's. A Linux host can be told to use a different segment size for a route, but no proxy service does that per customer. The honest options are to claim what the exit actually is, or to use an exit whose machine really matches the claim.

How HProxy handles it

We do not sell a way to forge a handshake, because the packet belongs to the machine that sends it. What we can say is what our own measurement found, and our free list is nearly all Unix servers. If a target reads the stack, match your claims to the exit rather than the other way round.

Frequently asked questions

What is TCP fingerprinting?

Working out which operating system opened a connection by reading its first packet. The fields that matter are the hop limit, the segment size, the window and the order of the options.

Can a website identify my system without JavaScript?

It can narrow it down, yes. The handshake happens before any page code runs, and the fields in it are set by your operating system rather than by your browser.

Does a proxy hide my TCP fingerprint?

It replaces it. The proxy opens its own connection to the target, so the target reads the proxy's machine and never receives a packet from yours.

Does a VPN hide it?

Mostly not. The tunnel carries your own packets, so your system still performs the handshake. The smaller segment size the tunnel causes is itself a signal.

What is p0f?

The passive fingerprinting tool that popularised the method in 2012. It watches traffic without sending anything and names the system from one SYN packet.

Is this the same as a TLS fingerprint?

No, and the difference is useful. A TLS fingerprint describes your client software and travels through a proxy untouched. A TCP fingerprint describes the machine that opened the connection, which through a proxy is the proxy.

Can I change my TCP fingerprint?

On your own Linux host you can set a different segment size for a route, and tuning changes the window. Through a proxy it is the exit's stack that reaches the target, so your own settings do not apply.

Why is the hop limit useful to a detector?

It gives both the system family and the distance. The value that arrives, subtracted from the starting value, is the number of routers the packet crossed.

Sources

Back to the full glossary.

HProxy.

Do not take our word for it.Measure it yourself.

Runs in your browser against the live address. No signup, no stored list.

HProxy