Skip to content
VPNDetection

Does blocking datacenter ASNs stop VPN users?

We checked 22.5 million VPN IPv4 addresses against brianhama/bad-asn-list: it catches 63.9% of consumer VPN services and 3.2% of unbranded VPN endpoints.

Published 2 min read

On this page
  1. What the list catches
  2. What it costs
  3. Check the address instead
  4. How we measured

"Block datacenter ASNs" is the first VPN rule most developers write, and the list they reach for is public. brianhama/bad-asn-list, with 547 stars on GitHub, names 723 networks belonging to cloud, hosting and colocation companies, Amazon, Google, Microsoft, DigitalOcean, OVH, Hetzner, Linode and M247 among them. When Discord explained its age checks in September, a Hacker News reader asked the question the rule is meant to answer: "why not apply the age verification check to known VPN services and leave residential IPs alone?"

We checked what that list catches. On 2026-10-09, we matched every IPv4 address in our VPN data, 22,497,180 of them, to the network announcing it in the global routing table that day, and counted the ones in a network on the list.

What the list catches

IPv4 addressesTotalIn a listed networkCaught
Consumer VPN services3,199,4672,043,85663.9%
Corporate VPN gateways1,827,33352,9332.9%
Peer-to-peer VPNs148,74731,18721.0%
Privacy relays16,33600.0%
VPN endpoints with no brand attached17,305,297551,5413.2%
All VPN22,497,1802,679,51711.9%
Tor12,6183,89730.9%
Every routed IPv4 address3,127,821,712320,970,78410.3%

The list isn't careless: the big clouds are all on it. But 36.1% of consumer VPN addresses sit in networks it doesn't name, and it barely touches the VPN endpoints with no brand attached, more than three quarters of all VPN addresses.

What it costs

The list blocks 321.0 million addresses, a tenth of the routed IPv4 internet, to catch 2.7 million VPN addresses, about 120 blocked for each one caught. It lets your customers' corporate VPN gateways through, 97.1% of them, which you usually want, and it catches 30.9% of Tor, where the Tor Project's own exit list names every exit.

A network list is still a fair filter for bots: scrapers and credential stuffing run from cloud servers, and that's what the list is for. It's a poor VPN filter.

Check the address instead

Whether an address is a VPN and whether it's in a hosting network are two separate questions, and our API answers both with is_vpn and is_hosting. With the Python package:

python
# check.py
import os
import sys

from vpndetection import VPNDetection

client = VPNDetection(api_key=os.environ.get("VPNDETECTION_API_KEY"))

for ip in sys.argv[1:]:
    result = client.lookup(ip)
    if result.is_vpn:
        verdict = "VPN"
    elif result.flagged("is_hosting"):
        verdict = "hosting, not a VPN"
    else:
        verdict = "neither"
    print(f"{ip}: {verdict}")
bash
$ python check.py 141.98.252.67 1.1.1.1
141.98.252.67: VPN
1.1.1.1: hosting, not a VPN

141.98.252.67 is a Mullvad server in London, from Mullvad's own server list. We ran it against the live API on October 9, 2026, with vpndetection 5.7.0. flagged() reads a flag your plan doesn't include as False, and is_hosting starts on the Starter plan (pricing).

How we measured

We took the list's 723 network numbers as published on GitHub on 2026-10-09, and every IPv4 address in our VPN, Tor and routing data from the same day. Consumer services are the commercial VPN brands people choose servers on. Corporate gateways are business VPN products, peer-to-peer VPNs run on their users' own connections, and privacy relays are services like iCloud Private Relay. The endpoints with no brand attached are VPN servers we haven't tied to a provider. Each address counts once, under the network that announced it.

Written by

  • Uman Shahzad

    Founder & CEO

    IP intelligence data expert for over 8 years, former lead engineer at IPinfo, Uman has pioneered many systems and practices used by IP data companies to operate at scale, provide high-quality data and offer the best developer experiences.

Get new posts by email

Or follow along in a feed reader.

RSS feed

Try it on your own traffic.

The detection these posts describe is one API call away, with SDKs for every major language.

00 · No key

Start without signing up.

Paste it into a terminal. No account needed. 1k daily allowance per user, answering ip and is_vpn.

curl "https://api.vpndetection.io/45.83.91.1"
{
"ip": "45.83.91.1",
"is_vpn": true
}
01 · Free key

Sign up and get 50,000 requests a month.

No card and no sales call: the key is issued on signup.
Every request flags VPN IPs.
Upgrade only when you outgrow the allowance.