IP allowlist merger
Combine overlapping, duplicate and adjacent IPv4 and IPv6 ranges into the smallest exact CIDR list. No address outside your original entries is added.
Up to 100,000 characters and 1,000 entries per run, with at most 2,048 resulting CIDR blocks. Everything is calculated on your device and nothing is uploaded. Downloads: a plain text CIDR list, a CSV of blocks with first address, last address and address count, and a JSON report. One entry per line, or separate entries with commas. Text after # is ignored. Up to 100,000 characters. Review the settings before running.
Your result
How to use IP allowlist merger
- Paste addresses, CIDR blocks or start-end ranges, one per line.
- Choose whether CIDR entries with host bits set are rejected or changed to their network address.
- Run the merge and review the resulting CIDR blocks.
- Copy the list or download the text list, CSV or JSON report.
Useful next steps
How the merge works
Each entry is read as an exact set of addresses. Overlapping, duplicate and touching ranges are joined, and each joined range is written as the fewest aligned CIDR blocks, following the CIDR rules in RFC 4632 (2006) and the IPv6 text format in RFC 5952 (2010). A self-check confirms the blocks cover exactly the same addresses as your input, so nothing is added or lost.
What you can paste
Use one entry per line, or separate entries with commas, semicolons or spaces. An entry can be an address such as 192.0.2.10, a CIDR block such as 192.0.2.0/24 or an inclusive range such as 192.0.2.10-192.0.2.20, and spaces around the hyphen are fine. Text after # is ignored, so you can keep comments. IPv4 parts must be 0 to 255 without leading zeros, because some systems read 010 as octal. Interface zones such as %eth0 and netmasks such as 255.255.255.0 are not accepted.
Host bits and address families
An entry such as 192.0.2.10/24 has bits set after its prefix length. It is rejected by default, because it may be a typo for a single address. Choose Use the network address to treat it as 192.0.2.0/24; the JSON report lists every entry changed this way. IPv4 and IPv6 are handled separately, and IPv4-mapped IPv6 addresses such as ::ffff:192.0.2.1 stay in IPv6.
Reading the report
The JSON report gives every entry a status: kept, split, merged, duplicate or covered, and names the entry that covers it. Address counts are exact whole numbers. The before count adds the size of every entry, so overlapping addresses count more than once; the after count lists each address once and always equals the addresses your input already allowed.