🔥 LAUNCH SALE — up to +60% bonus traffic · Residential from $0.67/GB · code BACK15 Claim →
Log in Get proxies
PyProxy is back — buy residential, ISP, mobile & datacenter proxies directly, from $0.67/GB. Launch bonus up to +60%.
Reference · CIDR notation

What does /24 mean in IP addressing and networking?

The number after the slash is how many bits of the address are fixed. In a /24, the first 24 bits are the network and the last 8 are free — 256 addresses, 254 of them usable, mask 255.255.255.0. Here is where that comes from, and why it decides whether a proxy gets blocked.

The short answer

/24 is a CIDR prefix length. Written after an address — 203.0.113.0/24 — it says that the first 24 bits of that 32-bit address identify the network and the remaining 8 bits identify hosts inside it. Eight free bits give 28 = 256 addresses, from 203.0.113.0 to 203.0.113.255. On an ordinary subnet the lowest is the network address and the highest is the broadcast address, leaving 254 usable. The equivalent dotted mask is 255.255.255.0.

That is the whole definition. The rest of this page is why it is written that way, how to read the other prefix lengths, and why anyone buying proxies runs into the notation constantly.

Where the 24 comes from

An IPv4 address is four bytes, normally shown as four decimal numbers, but the machine sees 32 bits:

203.0.113.77  =  11001011 00000000 01110001 01001101
                 |------- 24 bits fixed -------|-8-|
mask /24      =  11111111 11111111 11111111 00000000
                 =  255      .255     .255     .0

The mask is simply a run of ones followed by a run of zeros, and the prefix length counts the ones. So the two ways of writing it carry identical information: /24 and 255.255.255.0 are the same statement. Any address whose first 24 bits match belongs to the same block, which is why 203.0.113.77 and 203.0.113.200 are neighbours and 203.0.114.1 is not.

Two consequences follow from the ones-then-zeros rule. A prefix boundary can only fall where the arithmetic allows, so 203.0.113.5/24 is not a network — it is a host inside the network 203.0.113.0/24, and tools will normalise it or reject it. And because each extra fixed bit halves the block, sizes only come in powers of two: you cannot have a range of exactly 300 addresses.

Reading /16, /22, /28 and the rest

The rule is that a smaller number after the slash means a bigger block, which trips people up at first. Fewer fixed bits leave more bits free to vary. Each step down doubles the size:

PrefixSubnet maskTotal addressesUsable hosts
/8255.0.0.016,777,21616,777,214
/16255.255.0.065,53665,534
/20255.255.240.04,0964,094
/22255.255.252.01,0241,022
/24255.255.255.0256254
/26255.255.255.1926462
/28255.255.255.2401614
/30255.255.255.25242
/32255.255.255.25511

The general formula is 2(32 − prefix) addresses, minus two for the network and broadcast addresses on a normal subnet. The bottom of the table is where that subtraction stops making sense: a /32 is one single address, used in firewall rules and routing entries to mean “exactly this host”, and a /31 is used on point-to-point links where the two reserved addresses would leave nothing behind. IPv6 uses the same notation with 128 bits instead of 32, which is why you see /64 for a single subnet and /48 for a site allocation.

If you would rather not do the arithmetic, every operating system ships something that will. Python's standard library is the quickest:

>>> import ipaddress
>>> net = ipaddress.ip_network("203.0.113.0/24")
>>> net.netmask, net.num_addresses
(IPv4Address('255.255.255.0'), 256)
>>> net.broadcast_address
IPv4Address('203.0.113.255')
>>> ipaddress.ip_address("203.0.113.77") in net
True
>>> ipaddress.ip_address("203.0.114.1") in net
False

Why the notation exists at all

Until 1993 IPv4 was classful: the leading bits of an address fixed its size, so you got a class A (16.7 million addresses), a class B (65,536) or a class C (256), and nothing in between. An organisation needing 2,000 addresses had to take a class B and waste sixty thousand of them, and the global routing table grew one entry per allocation.

CIDR — Classless Inter-Domain Routing — removed the classes and let the prefix be any length. That fixed both problems at once. Allocations could be sized to the need, and adjacent blocks could be aggregated: four consecutive /24s advertise as a single /22, so backbone routers carry one route where they used to carry four. This is why a /24 is often described as a class C. They are the same size, but the class was a rigid category and the prefix is just a number of bits.

The practical residue is that the internet is administered in blocks, not addresses. Regional registries hand networks a prefix, networks advertise prefixes, firewalls and reputation systems store prefixes. Nobody keeps per-address records when a prefix will do.

What this has to do with proxies

That last point is the reason this notation matters if you buy proxies rather than run a network. Pools, allocations and blocklists are all described in ranges, and the decisions that affect you are taken on ranges too.

A datacentre proxy provider buys address space in blocks — a /24, several /24s, sometimes a /22. Every address in that block shares one registry record, one autonomous system and one reputation. When a target site decides the block is a source of automated traffic, it does not ban 254 addresses one at a time; it writes a single rule:

deny 203.0.113.0/24

One line, and every proxy you had in that range is gone at the same instant. This is what people mean when they say datacentre proxies “die in batches”. It is also why buying more addresses from the same provider often does not help: if the new ones come from the neighbouring /24, the next rule catches them too. Checking whether your addresses are spread across different prefixes and different networks tells you more about their durability than the raw count does.

Residential and mobile addresses behave differently for exactly this structural reason. They sit inside consumer ISP and carrier allocations, alongside ordinary customers, and consecutive requests from a rotating pool typically come from unrelated prefixes belonging to different networks. There is no shared block to write a rule against — blocking the range would block the ISP's real subscribers. That is the difference the notation exposes: not that one type of address is inherently trusted and the other is not, but that one type shares a range and the other does not.

The same idea is worth applying to your own side of the connection. If a provider authenticates by IP whitelist, the entry you register is a prefix, and a /32 means one exact address while a /24 would authorise 256 of them. And when you are diagnosing why a target treats two exits differently, comparing their prefixes is usually the fastest route to an answer:

curl -x http://USERNAME-country-us:PASSWORD@gw.pyproxy.com:1111 https://httpbin.org/ip

Run that a few times, note the addresses that come back, and look at how far apart they are. Exits landing in the same /24 every time are one block; exits landing in unrelated prefixes are a pool.

PyProxy residential starts at $0.67/GB with traffic that never expires. Link Telegram to a new account and the first gigabyte is free — no card, no deposit.
See proxy plans Get 1 GB free

Questions people ask

How many IP addresses are in a /24?

256 addresses in total. On an ordinary subnet the first is the network address and the last is the broadcast address, so 254 are usable by hosts. The equivalent subnet mask is 255.255.255.0.

Is a /24 the same as a class C network?

They are the same size, and people use the terms interchangeably, but they are not the same idea. Classes were a fixed scheme replaced by CIDR in 1993. CIDR lets a prefix be any length, so /24 is simply a prefix length that happens to match what a class C used to be.

Does a smaller number after the slash mean more addresses?

Yes. The number is how many leading bits are fixed, so the fewer fixed bits, the more addresses are free to vary. A /16 holds 65,536 addresses, a /24 holds 256, and a /28 holds only 16.

Why do proxy providers and blocklists talk in /24s?

Because addresses are allocated and routed in blocks, so it is far cheaper to make one decision about a whole range than about individual addresses. That is why a datacentre /24 can be blocked as a single unit, while residential addresses scattered across many different ISP ranges have no shared block to act on.