{{ summaryHeading }}
{{ summaryValue }}
{{ summaryLine }}
{{ badge.label }}{{ badge.value }}
A {{ stageGeometry.label }} B
IP overlap checker
IPv4 inventory overlap review controls
Use labels and groups for VPC, VLAN, VPN, branch, partner, tenant, and route inventories. Raw source stays in this browser and out of the URL.
{{ sourceMeta }}
{{ sourceHint }}
Normalize is practical for mixed exports; strict mode is safer when the source inventory itself must be corrected.
Cross-group review is useful before peering or migration; it intentionally ignores reuse inside one group.
{{ summaryLine }} {{ handoffStatus }}
The neutral default reports intersecting ranges only.
{{ params.flag_adjacent ? 'Show adjacent notes' : 'Ignore adjacency' }}
Use 1–4,294,967,296. Raising the threshold changes conflict counts and is therefore visible in exported settings.
addresses
{{ header }}Copy
{{ cell }}
{{ header }}Copy
{{ cell }}
{{ header }}Copy
{{ cell }}

Address plans often look separate on a diagram while still claiming some of the same IPv4 space. A cloud VPC placed inside a corporate aggregate, a VPN pool copied into two regions, or a partner network that intersects a private range can break routing before any cable or tunnel changes. The usual symptoms are ambiguous routes, failed peering, unexpected network address translation, and hosts that become reachable through the wrong path.

Classless Inter-Domain Routing (CIDR) describes an IPv4 block with an address and a prefix length. The prefix fixes the network bits, while the remaining bits identify every address in the block. A shorter prefix covers more addresses: a /16 contains 65,536 addresses, a /24 contains 256, and a /32 names one address.

Common IPv4 range relationships and their practical meaning
Relationship Example Why it matters
Exact duplicate 10.20.0.0/24 and 10.20.0.0/24 Both entries claim every address in the same block.
Containment 10.20.0.0/16 contains 10.20.8.0/24 A broad allocation may hide a deliberate reservation or an accidental reuse.
Partial overlap 192.0.2.0-192.0.2.31 and 192.0.2.16-192.0.2.47 Only the shared interval conflicts, which can make the problem easy to miss.
Adjacency 10.20.0.0/24 followed by 10.20.1.0/24 The blocks touch but share no address, so they are not an overlap.

Host bits create another source of confusion. The text 10.20.8.25/24 names an address inside the network whose boundary is 10.20.8.0/24. Normalizing that entry is useful for inventory cleanup; rejecting it is safer when a review must expose every non-canonical CIDR rather than silently correcting it.

An overlap result proves that two declared ranges share addresses. It does not prove that both ranges are routed, active, or assigned to live systems. Labels, groups, routing tables, address-management records, and the intended use of a parent aggregate still decide whether a reported relationship is an error.

How to Use This Tool:

Start with the inventory that will participate in the same routing, peering, migration, or allocation decision.

  1. Paste IPv4 entries into IP inventory. A header row may identify label, CIDR or range, group, and note columns; plain CIDRs, hosts, dotted masks, wildcard masks, and start-end ranges are also accepted.
  2. Choose Host-bit handling. Use normalization for cleanup work, or strict rejection when a non-network address such as 10.20.8.25/24 must stop the review.
  3. Select Conflict scope. Audit every pair for a full inventory check, or compare different groups when reuse inside one administrative group is intentional.
  4. Set Minimum shared addresses only when tiny intersections should be filtered out. Enable adjacent-range notes separately; adjacency never becomes an overlap.
  5. Resolve any Inventory needs attention message, then review the highest-severity conflict and confirm its labels, groups, normalized blocks, shared count, and suggested next action against the real network plan.

Interpreting Results:

Start with the verdict and conflict count, then inspect each pair rather than relying on severity alone. Exact duplicates are always Critical. Containment is Critical across groups and High within one group. Partial overlap is High across groups and Medium within one group.

  • Shared addresses is the size of the intersection for that pair, including both endpoints.
  • Duplicate address count compares all declared addresses with the merged unique coverage. It measures repeated coverage across the entire inventory, not the sum of pairwise intersections.
  • Coverage blocks merge overlapping and adjacent declarations into continuous address intervals. A merged block may therefore contain several labels without every pair overlapping.
  • No overlaps means no pair met the selected scope and minimum-shared-address rule. Recheck with all-pairs scope and a minimum of 1 before treating the inventory as globally clear.

Technical Details:

Each IPv4 address is converted to an unsigned 32-bit integer. A CIDR prefix supplies a bit mask, so host bits can be cleared to find the network boundary. Explicit start-end ranges are sorted into ascending order and decomposed into the smallest exact CIDR cover for display.

Formula Core:

For address integer a and prefix length p, the network start is the address masked by the first p bits. The block ends after 232-p addresses.

sp = a AND mask(p) , ep = sp + 232p 1

Two closed ranges overlap when each start is no later than the other range's end. Their shared count includes both boundary addresses.

shared = max(0, min(e1,e2) max(s1,s2) +1)

Declared coverage adds every input range size. Unique coverage merges all intersecting or directly adjacent intervals first. Duplicate coverage is declared coverage minus unique coverage, which avoids double-counting addresses covered by three or more entries.

Rule Core:

IP overlap classification and severity rules
Condition Relationship Same group Different groups
Starts and ends both matchExact duplicateCriticalCritical
One closed range fully encloses the otherContainmentHighCritical
Ranges intersect without full containmentPartial overlapMediumHigh
Previous end + 1 equals next startAdjacentOptional note, not a conflict

The parser accepts up to 600 non-blank rows and 524,288 source characters. Prefix lengths run from /0 through /32; the minimum shared-address filter is an integer from 1 through 4,294,967,296. In strict mode, any CIDR whose address is not its network boundary is rejected. In normalize mode, the boundary is used and the correction is counted.

Usable-address counts subtract the traditional network and broadcast addresses only for CIDR prefixes shorter than /31. A /31, a /32, and an explicit range keep their full address count. Special-use labels cover selected private, shared, loopback, link-local, benchmark, documentation, multicast, and reserved blocks; they are inventory clues, not a complete routing-policy decision.

Privacy Notes:

The inventory is parsed and compared in the browser. Raw labels, ranges, groups, and notes are not placed in the page URL or sent to a lookup service. Review exported artifacts before sharing because they can reveal internal addressing, site names, tenants, and planned connectivity.

Worked Examples:

Parent block reused by another group

Enter Parent,10.0.0.0/24,core and Child,10.0.0.128/25,branch with all-pairs scope. The parent declares 256 addresses and the child declares 128, but their merged coverage contains 256 unique addresses. The result therefore reports one Critical containment conflict, 128 shared addresses, and 128 duplicate addresses. Confirm whether the child is a documented reservation inside the parent; if the groups will peer independently, exclude, translate, or readdress one side.

FAQ:

Does adjacency create a routing conflict?

No. Two ranges are adjacent when one ends immediately before the other begins, so they share zero addresses. The optional note is useful when planning aggregation or future growth.

Can I check IPv6 ranges?

No. The comparison model is limited to the 32-bit IPv4 address space. Use an IPv6-specific planner or overlap check for IPv6 prefixes.