happytails.ai

IPv6 prefix allocation planner

Plan subnets inside an IPv6 prefix without overlaps. Requests are placed largest first in a repeatable order, and anything that does not fit is listed along with the free space left.

Up to 100,000 characters, 512 request and existing assignment lines, 2,048 requested subnets in total and 2,048 free-space blocks. Everything is calculated on your device and nothing is uploaded. Downloads: a CSV address plan and a JSON report. One request per line: name, prefix length and optional count. A full prefix reserves an existing assignment. Up to 100,000 characters. Review the settings before running.

Your result

Report a problem or share an idea.

How to use IPv6 prefix allocation planner
  1. Enter the parent IPv6 prefix, such as 2001:db8:abcd::/48.
  2. List one request per line as name, prefix length and optional count, plus any existing assignments.
  3. Choose whether to round requests to nibble boundaries.
  4. Run the plan, review the allocated, unallocated and free rows, then copy or download the CSV or JSON report.

Useful next steps

How subnets are placed

Requests are sorted by size, largest first (shortest prefix length), then by input order. Each subnet takes the lowest free block of its size that starts on its own boundary inside the parent, using the prefix notation of RFC 4291 (2006). The same input always gives the same plan, and a self-check confirms that existing, allocated and free blocks fill the parent with no gap or overlap.

Request format

Write name,prefix or name,prefix,count, such as office,/56 or lab,/64,4. A tab also works as the separator, and a header line such as name,prefix,count is skipped. Names start with a letter or digit and must be unique. To reserve a block already in use, write its full prefix, such as core,2001:db8:abcd::/52. Existing assignments must lie inside the parent and must not overlap each other.

Nibble boundaries

With rounding on, a /62 request becomes a /60, so every subnet ends on a hexadecimal digit. RIPE-690 (2017) recommends nibble boundaries because they keep addresses readable and make reverse DNS delegation simpler. A request is never rounded to more than the parent prefix.

When space runs out

A request that does not fit is listed as unallocated with its reason, insufficient-space or larger-than-parent, instead of being dropped. Smaller requests still try to fit after a larger one fails. The CSV has one row per unallocated subnet first, then every existing, allocated and free block in address order, with exact address counts.