Version: 0.7.6
A web-based tool for hierarchically planning and documenting IPv6 address space allocations.
Network engineers and administrators use this tool to plan IPv6 address space by visually splitting and organizing subnets. We design it around nibble-aligned 4-bit boundary subnet planning by default. This makes dividing address space and documenting allocations easy. Custom split targets support geographical denomination models and specialized addressing schemes.
- Flexible Initial Prefix Accept any prefix length from /16 to /64 including non-nibble-aligned allocations like /21 /23 or /47 to match real-world RIR assignments
- Nibble-Aligned Splitting (Default) Split button divides to the next 4-bit boundary creating 2-16 child subnets depending on current prefix
- Custom Split Targets Select dropdown for any target prefix from current+1 to /64
- Nibble-aligned targets create children directly with no intermediate levels
- Targets crossing multiple nibble boundaries automatically create intermediate parent subnets at each nibble boundary
- Prefix Range Support /16 to /64 prefix lengths with /64 as minimum assignable subnet
- Location-Based Planning Show count of /48s for large allocations and /64s for smaller subnets
- Visual Hierarchy Join buttons span multiple rows to show parent-child relationships
- Annotations Add notes and color-code subnets to document allocations
- Shareable URLs Encode complete planning state in URL for sharing
- Compressed URLs Deflate-raw compression reduces URL size for sharing complex plans
- CSV Export Download subnet plans with proper hierarchy indentation
- RFC 5952 Compliance Display all IPv6 addresses in proper compressed notation
- Quick Load One-click loading of common documentation prefixes 3fff::/20 and 2001:db8::/32
Open index.html in a modern web browser. Enter an IPv6 address and select a prefix length or use Quick Load buttons for documentation prefixes. Click Go to load the network.
Click green Split buttons to divide subnets into 2-16 children. Click red Join buttons to collapse child subnets back to their parent. Add notes and colors to document allocations. Click Share to copy a URL with your complete plan. Click Export CSV to download your plan as a spreadsheet.
Click a green Split button to divide a subnet into smaller networks. By default it splits to the next nibble boundary. Use the dropdown to select a custom target prefix.
Auto-split step size is configurable from the green Split column header. Choose 4 bit (nibble, the default) or 8 bit (byte) to control how far the Auto option jumps. With 8 bit selected a /40 auto-splits to /48 instead of /44, a /48 to /56, and a /56 to /64. The chosen step is saved in the shareable URL. Intermediate levels created by custom splits that cross multiple boundaries also use the configured step, so join buttons match the split granularity.
Nibble-aligned splits (default) create 2-16 children
3fff::/20splits into 16 /24s2001:db8::/32splits into 16 /36s3fff::/21splits into 8 /24s3fff::/22splits into 4 /24s3fff::/23splits into 2 /24s
Custom split targets support geographical denomination models
Select a specific target prefix from the dropdown next to the Split button
2001:db8::/32to target/34creates 4 subnets2001:db8::/32to target/37creates 32 subnets2001:db8:1::/44to target/55creates 2048 subnets
Intermediate level creation for custom splits
When splitting across multiple nibble boundaries the app automatically creates intermediate levels at each boundary
/20to/28creates 16/24s then 256/28s (273 rows total)/20to/30creates/24→/28→/30hierarchy (1297 rows total)/20to/24directly creates 16/24s with no intermediates
Intermediate levels inherit parent subnet note and color annotations to all descendants.
Click red Join buttons to collapse all descendant subnets back to their parent. This removes all child and grandchild subnet annotations.
The Contains column shows different metrics based on prefix length
- Prefixes less than /48 Show number of /48 subnets typical allocation for a physical location
- Prefixes of /48 or greater Show number of /64 subnets the minimum recommended subnet size
- /64 Shows Host Subnet and cannot be split further
- Single File Application Everything is contained in
index.htmlwith no build process or dependencies - Offline Capable Works completely offline once loaded
- No Backend Required All processing happens in the browser
- State Management Uses URL hash for state persistence and sharing
- Color Palette 16 distinct pastel colors for visual categorization
Shared URLs use deflate-raw compression in modern browsers to reduce URL hash size. The compression ratio varies based on tree size - larger trees with many subnets benefit most. The app automatically detects browser support and falls back to base64 encoding for older browsers.
Format Versions:
v2- Deflate-raw compressed (modern browsers)v1- Base64 encoded (fallback)- No marker - Legacy base64 format (backward compatible)
Browser Support:
- Compression available in Chrome 80+, Firefox 113+, Safari 16.4+
- Fallback to base64 ensures functionality everywhere
- Existing shared URLs continue to work
Works in all modern browsers that support ES6 JavaScript HTML5 and CSS3 including CSS Grid and Flexbox
Tested on Chrome/Edge Firefox and Safari latest versions.
Custom favicon featuring "6" with gradient trail effect, using the app's purple color scheme (#7C3AED). Maintains visual consistency with the technical networking theme while distinguishing the IPv6 Subnet Planner from other sites.
The IPv6 Subnet Planner is designed to meet WCAG 2.1 Level AA accessibility standards.
- Screen Reader Support All interactive elements have descriptive ARIA labels
- Keyboard Navigation Full keyboard support for all operations including color picker options
- Form Labels All inputs have proper labels for assistive technologies
- Semantic HTML Uses appropriate HTML elements and ARIA roles
- Focus Indicators Clear visual feedback for keyboard focus
- Color Contrast Meets WCAG AA requirements for text readability
- ARIA Dialogs Color picker uses proper ARIA dialog attributes with modal behavior
Initial Prefix Can be any value from /16 to /64 to accommodate real-world RIR allocations that may not fall on nibble boundaries like /21 /29 or /47
Splitting (Default) By default occurs at the next nibble boundary. The number of children created depends on the gap
- 1 bit to next boundary creates 2 children like /23 to two /24s
- 2 bits to next boundary creates 4 children like /22 to four /24s
- 3 bits to next boundary creates 8 children like /21 to eight /24s
- 4 bits to next boundary creates 16 children like /20 to sixteen /24s
This ensures all split subnets align on hexadecimal digit boundaries for easy readability while accepting non-aligned initial allocations.
Splitting (Auto Step Size) The green Split column header has a selector to switch the Auto step between 4 bit (nibble, default) and 8 bit (byte). With 8 bit a /40 auto-splits to /48, a /48 to /56, and a /56 to /64 instead of the 4-bit /44 /52 /60 steps. The selection is persisted in the shareable URL. Intermediate levels for custom splits also use the configured step, so join buttons match the split granularity.
Splitting (Custom Target) Select any target prefix from current+1 to /64 via dropdown. This enables geographical denomination models where administrative layers use non-nibble-aligned prefixes like /34 for zones or /37 for districts while network layer subnets remain nibble-aligned for easier management. Options are limited to creating 1024 or fewer children to prevent performance issues.
Intermediate Levels When splitting across multiple nibble boundaries intermediate levels are automatically created at each nibble boundary. For example splitting /20 to /28 creates 16 /24 subnets first then each /24 is split into 16 /28s (273 rows total). This maintains nibble alignment at each level while supporting any target prefix.
We sort subnets numerically by their IPv6 address bytes not lexicographically as strings. This ensures proper ordering like 3fff::/24 before 3fff:100::/24.
Join buttons use CSS rowspan to visually span all descendant rows making it clear which subnets will be collapsed.
This IPv6 Subnet Planner was inspired by
Created by Jason Tally. Code is available on GitHub.
MIT License
Copyright 2025 Jason Tally and contributors
Permission is hereby granted free of charge to any person obtaining a copy of this software and associated documentation files to deal in the Software without restriction including without limitation rights to use copy modify merge publish distribute sublicense and sell copies of the Software and to permit persons to whom the Software is furnished to do so subject to the following conditions
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software
THE SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND EXPRESS OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM DAMAGES OR OTHER LIABILITY WHETHER IN AN ACTION OF CONTRACT TORT OR OTHERWISE ARISING FROM OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
We welcome contributions. Feel free to submit issues or pull requests.