# IPv6 prefix allocation planner

- Human page: https://happytails.ai/en/network-tools/ipv6-prefix-allocation-planner/
- Markdown: https://happytails.ai/en/network-tools/ipv6-prefix-allocation-planner.md
- Structured JSON: https://happytails.ai/agents/en/network-tools/ipv6-prefix-allocation-planner/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `ipv6-prefix-allocation-planner` |
| Category | network-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Planning runs on your device for up to 100,000 characters, 512 lines and 2,048 requested subnets, with at most 2,048 free-space blocks.

### Inputs and settings

Text input: Subnet requests.

Example or placeholder shown in the interface (not a validated fixture):

```text
office,/56
lab,/64,4
core,2001:db8:abcd::/52
```

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.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `parent` | Parent IPv6 prefix | text | "" |  |
| `nibbleAlign` | Round to nibble boundaries | checkbox | false |  |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

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.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "ipv6-prefix-allocation-planner",
  "category": "network-tools",
  "built": true,
  "requirements": "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.",
  "implementation": {
    "fields": [
      {
        "key": "parent",
        "label": "Parent IPv6 prefix",
        "value": "",
        "type": "text",
        "help": "The prefix you are dividing, such as 2001:db8:abcd::/48."
      },
      {
        "key": "nibbleAlign",
        "label": "Round to nibble boundaries",
        "value": false,
        "type": "checkbox",
        "help": "Rounds each request to a prefix length that is a multiple of 4, such as /60 for a /62 request."
      }
    ],
    "registrationFamily": "ip-prefix-sets",
    "inputMaxLength": 100000,
    "inputErrorCode": "IP_PREFIX_SETS_TOO_LONG",
    "note": "Planning runs on your device for up to 100,000 characters, 512 lines and 2,048 requested subnets, with at most 2,048 free-space blocks.",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 100000,
      "inputMode": "text",
      "label": "Subnet requests",
      "placeholder": "office,/56\nlab,/64,4\ncore,2001:db8:abcd::/52",
      "help": "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.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

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.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### 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

- [Subnet calculator](https://happytails.ai/en/network-tools/subnet-calculator/) ([Markdown](https://happytails.ai/en/network-tools/subnet-calculator.md))

- [Ipv6 compress](https://happytails.ai/en/network-tools/ipv6-compress/) ([Markdown](https://happytails.ai/en/network-tools/ipv6-compress.md))

- [IPv6 address scope inspector](https://happytails.ai/en/developer-tools/ipv6-address-scope-inspector/) ([Markdown](https://happytails.ai/en/developer-tools/ipv6-address-scope-inspector.md))

- [IP range exclusion tool](https://happytails.ai/en/network-tools/ip-range-exclusion-tool/) ([Markdown](https://happytails.ai/en/network-tools/ip-range-exclusion-tool.md))

## 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.
