myminingrig

Mining · Tool

Stratum ping test

Updated 22 July 2026 · free, no sign-up

This is a rebuild of a tool I wrote as a WordPress plugin years ago, back when I was moving rigs between pools and wanted to know which ones my connection actually reached quickly. It opens a real TCP connection to each pool's stratum port, sends the same handshake your miner sends, and times the reply.

Pick a pool with a long round trip and you lose a sliver of every share you submit. It is a small effect, and I will be honest about how small further down, but it costs nothing to measure.

Run the test

Nine Bitcoin pools, three samples each. It takes a few seconds.

Stratum handshake latency

Pinging from your nearest network centre

Press Run test to measure.

Testing your own pool

The box above takes a pool of your own. Type the stratum hostname, pick the port, and it runs alongside the fixed list with your result at the top.

Two limits, and they are deliberate. It only dials known stratum ports, and it only accepts a public hostname, not an IP address or a name on your own network. That is not me being awkward - without those two rules this page would be an open port scanner running from Cloudflare, pointed wherever anybody typed, and that is the sort of thing that gets a whole domain blocked. A real pool has a public hostname on a stratum port, so it sails through. If your pool is on your own LAN, the edge cannot reach it anyway, and you want the command-line tool on your own machine for that.

What it measures

Two numbers per pool, both in milliseconds:

  • TCP connect - how long the three-way handshake takes to the pool's stratum port. This is close to raw network distance.
  • Best and median - the full round trip: connect, send mining.subscribe, wait for the pool's reply. This adds however long the pool's own server takes to answer, which is the part a plain ping never shows you.

That second number is the useful one. A pool can sit close to you on the network and still answer slowly if its stratum server is loaded, and your miner feels the answer time, not the distance.

One thing to be straight about: the test runs from the Cloudflare data centre nearest you, not from your own router. The box above tells you which location it used. That makes it a good read on your region's route to each pool, and a poor read on your specific line - if your broadband is the problem, this will not show it. The old WordPress version measured from a single server in one country, which was worse; this at least measures from somewhere near you.

Reading the results

Rough bands, from what I have seen running this against pools over the years:

  • Under 50 ms - the pool has infrastructure near you. Nothing to think about.
  • 50 to 150 ms - normal for a pool on another continent. Fine for a home miner.
  • Over 250 ms - a long way away, or a busy stratum server. Worth preferring a closer option if the pool offers regional endpoints.
  • Refused or timed out - usually the pool has moved its stratum address, occasionally it is down. It does not mean the pool is broken.
  • Can't measure from here - a limitation at my end, not the pool's. Explained below.

When latency actually matters

Less than pool marketing suggests, and here is the honest version. Every millisecond of round trip is time your miner spends waiting rather than submitting, so very high latency can cost you a fraction of a percent in stale or rejected shares. On a home miner that is a rounding error. I would not move pools for 40 ms.

Where it does matter: if you are running a serious farm where fractions of a percent add up, if you are seeing rejected shares and want to rule latency in or out, or if you are solo mining and want the shortest path between finding a block and telling the network about it. That last one is mostly emotional - the block is yours either way - but I understand the instinct.

If you are pointing a Bitaxe at a solo pool, the choice of pool barely moves your odds. My solo pool guide covers what actually differs between them, and the lottery-odds calculator gives you the real numbers.

How it works, and what it is not

The original was a WordPress plugin based on 2miners/stratum-ping. Despite the name it is not ICMP ping - stratum runs over TCP, so the tool opens a socket, writes a single mining.subscribe line, and stops the clock when the pool replies. That is the same first sentence your miner speaks when it connects.

The four pools I can't measure

Braiins, F2Pool, ViaBTC and AntPool all come back blank, and it took me a minute to work out why. It isn't them. All four put their stratum endpoints behind Cloudflare, and Cloudflare Workers are not allowed to open a socket to a Cloudflare IP address. This test runs on Cloudflare. So the one thing it cannot measure is anything hosted on the same network it lives on.

That's a real limitation and I'd rather name it than quietly show those pools as dead. If you want numbers for those four, you need to ping them from somewhere that isn't Cloudflare - a VPS, or your own machine with the original command-line tool. Ironically the old WordPress plugin could reach them, because it ran on a shared host rather than an edge network.

This version runs as a Cloudflare Pages Function using the Workers TCP socket API. Worth saying plainly, because people ask: nothing here mines anything. No hashing happens, no work is requested, no shares are submitted. It connects, says hello, times the answer and hangs up. The pool list is fixed in the code rather than accepting an address you type, which stops the endpoint being used as a port scanner pointed at the rest of the internet.

Share