Paste a subnet plan and find every overlapping, duplicate and contained range — IPv4 and IPv6 in the same list.
IPv4 and IPv6 in the same list. Blank lines are skipped and everything after a # is ignored. Nothing is sent to the server — all processing happens in your browser.
Paste a subnet plan above to check it for overlaps
A router forwards to the most specific match. Given a route for 10.0.0.0/16 and another for 10.0.0.0/24, traffic for an address in both follows the /24 every time — the longer prefix always wins. That rule is what makes overlapping ranges dangerous: a range that was never meant to carry traffic silently takes it.
The worse case is two identical prefixes. When the same subnet is advertised from two places, there is no longer prefix to break the tie, and routers do not agree on what to do next. Some keep the first route they learned, some replace it with the last, some install both and load-balance. Traffic then behaves differently depending on which device you ask and when you ask it — the classic signature of an intermittent fault that nobody can reproduce.
This is why the check is worth running before a plan goes live rather than after the first outage. Comparing ranges by hand does not scale past a handful, and it is precisely the ranges you skim past — the summary route covering a range you thought was elsewhere — that cause the problem.
Only two of these four pairs are a problem, and telling them apart is most of the work.
| Pair | Verdict |
|---|---|
| 10.0.0.0/24 & 10.0.0.0/24 | Duplicate — the same subnet twice. Almost always a mistake. |
| 10.0.0.0/16 & 10.0.0.0/24 | Contained — the /24 sits inside the /16. Sometimes deliberate supernetting, sometimes an accident. |
| 192.168.0.0/24 & 192.168.1.0/24 | Adjacent — no shared address. This is how a healthy plan looks. |
| ::10.0.0.0/104 & 10.0.0.0/8 | Different families — can never conflict, despite beginning at the same integer. |
That last row is the trap. Both ranges start at 167,772,160, because a 128-bit value with leading zeros is numerically equal to its 32-bit counterpart. A checker that compares ranges as plain integers reports a conflict that cannot exist. This one compares the address family before anything else.
A CIDR block is defined by its prefix length, not by the address you happen to write. Enter 10.0.0.5/24 and you have described the network 10.0.0.0/24 — the .5 is a host bit, and host bits are not part of the network.
Plans written by hand often keep those host bits, so 10.0.0.5/24 from one document and 10.0.0.200/24 from another look like different subnets. They are the same one. This tool clears host bits first and shows you the normalised form, so a comparison is never made between two spellings of one network — or between two networks that only appear to differ.
To inspect a single range in full detail — network and broadcast addresses, usable host counts, binary breakdown — use the IP subnet calculator, or the IPv6 subnet calculator for the 128-bit side. This tool answers a different question: whether the ranges in a plan can coexist.
DMC IT Services designs and audits network addressing for SMBs across London, Cambridge, Hertfordshire, and Bedfordshire — including catching overlaps and stray summary routes before they reach production.
Talk to an Engineer