Documentation
Column reference
The splitter table has 12 columns. By default only a subset is visible. Hover the header row to reveal controls for hiding, showing, and reordering columns. Hidden columns appear in a collapsed bar above the header — click any to restore it.
| Column | Description | Default |
|---|---|---|
Subnet |
The CIDR notation of the subnet (e.g. 10.0.0.0/24). This is the primary identifier for each row. |
Visible |
Name |
A user-assigned label. In automatic naming mode, shows the full hierarchical path (e.g. "Servers-Web-1"). In manual mode, shows only the leaf label. Click to edit. | Visible |
Description |
A short description for the subnet entry. Click the placeholder to add text. Useful for documenting the purpose of a subnet ("Core switches", "Guest Wi-Fi"). | Hidden |
Notes |
A longer free-text field. Supports multi-line content. Display settings let you control the number of visible lines (1, 2, 3, or all) and font size (normal, small, smallest). | Hidden |
VLAN |
VLAN ID computed from a macro template. See the VLAN Macros tab for the full expression language. Shows "VLAN not valid" with a tooltip when the expression cannot be resolved. | Hidden |
Mask |
The subnet mask in dotted-decimal notation (e.g. 255.255.255.0 for a /24). For IPv6 subnets, shows the prefix length. |
Hidden |
Wildcard |
The inverse of the subnet mask (e.g. 0.0.0.255 for a /24). Used in ACLs on some router platforms. |
Hidden |
Range |
The network address to broadcast address range. Display style is configurable: short (only shows the differing octets of the end address) or full (shows both addresses completely). The separator between addresses is also configurable. | Visible |
Usable |
The first usable host to last usable host range. Same display options as Range. For /31 point-to-point links (RFC 3021), both addresses are usable. For /32 host routes, usable matches the single address. | Hidden |
IPs |
Total number of IP addresses in the subnet (including network and broadcast). Number format is configurable: locale ("4,096"), SI ("4K"), SI.1 ("4.1K"), or raw ("4096"). | Visible |
Hosts |
Number of usable host addresses (total minus network and broadcast). Same number format options as IPs. | Hidden |
Split/Join |
Action column. Split divides a subnet into two equal halves. Join merges two sibling subnets back into their parent. The join column uses colored bars to show the tree hierarchy. | Visible |
Column controls
Hover the table header row to reveal controls on each column:
- Hide — click the up-arrow button above a column label to hide it
- Reorder — click the left/right arrow buttons to move a column
- Restore — hidden columns appear in a bar above the header; click one to restore it
- Reset — the reset button in the hidden-columns bar restores the default column layout
- Settings — columns with a "settings" label (Range, Usable, IPs, Hosts, Notes, Name, VLAN) open a format picker when clicked
Range display styles
| Style | Example |
|---|---|
| Short | 10.0.0.0 - .255 |
| Full | 10.0.0.0 - 10.0.0.255 |
Number formats
| Format | Example (4096) |
|---|---|
| Locale | 4,096 |
| SI | 4K |
| SI.1 | 4.1K |
| Raw | 4096 |
VLAN Macro Language (VML)
The VLAN column uses a small expression language called VML. Instead of
manually typing a VLAN ID for every subnet, you write a template like
100 + {o3} and the system evaluates it for each row,
substituting variables with values from that row's subnet.
Templates are set globally via the VLAN column settings menu. Each tree section can also override the global template with its own.
Variables
Variables are enclosed in curly braces. They resolve to numeric values based on the subnet's network address, prefix length, or metadata.
| Variable | Description | Example (10.0.5.128/26) |
|---|---|---|
{o1} | First octet of the network address | 10 |
{o2} | Second octet | 0 |
{o3} | Third octet | 5 |
{o4} | Fourth octet | 128 |
{o3 l} | Left digit of third octet | 5 (from "5") |
{o3 r} | Right digit of third octet | 5 |
{o3 ll} | Left two digits of third octet | 5 (all available digits) |
{o3 rr} | Right two digits of third octet | 5 |
{mask} | CIDR prefix length | 26 |
{id} | Section ID (parsed as integer) | Depends on entry |
{seq S:N} | Sequential generator: S + N * leafIndex | Varies by row |
Operators
VML supports three arithmetic operators. Evaluation is strictly left-to-right (no operator precedence). Adjacent tokens with no operator are concatenated as strings.
| Operator | Meaning |
|---|---|
+ | Addition |
- | Subtraction |
* | Multiplication |
Examples
| Template | Input subnet | Result |
|---|---|---|
{o3} | 10.0.5.0/24 | 5 |
{o3}2*3 | 10.0.5.128/26 | 156 |
100+{o3} | 10.0.5.0/24 | 105 |
{o3}*100+{o4} | 10.0.5.128/26 | 628 |
{seq 100:1} | (any, row 0) | 100 |
{seq 100:1} | (any, row 1) | 101 |
{seq 100:1} | (any, row 2) | 102 |
{id}*100+{o3} | 10.0.5.0/24, ID=2 | 205 |
Presets
The VLAN settings menu includes preset templates for common patterns:
| Preset | Template |
|---|---|
| Third Octet | {o3} |
| Site + Octet | {id}*100+{o3} |
| Site Offset | {id}+{o3} |
| Sequential | {seq 100:1} |
| Octet Base 100 | {o3}+100 |
| Fourth Octet | {o4}+{mask} |
Per-section override
Each tree section can override the global VLAN template. Click its VLAN cell in the section heading (marked GLOBAL while inheriting) and enter a local template. Clear that field (or enter only spaces) to inherit the global template again. In the global settings menu, Apply to all sections commits the visible template and clears local overrides together; Undo restores both.
Validation
Malformed syntax cannot replace the current template. Correct the associated error or press Escape to cancel. Valid formulas may still produce range or subnet-specific warnings in individual rows.
VML validates that the computed result is an integer between 1 and 4094 (the valid VLAN range). VLANs 1002–1005 are flagged with a warning because they are reserved for FDDI and Token Ring. Results that fall outside the valid range or produce non-integer values display "VLAN not valid" in the cell with a tooltip explaining the problem. Missing section IDs and IPv4-octet tokens used on IPv6 also show errors, even with warning badges disabled. Imported invalid formulas stay available for repair. Operands and intermediate results must be safe integers (at most 9,007,199,254,740,991 in magnitude); rounded arithmetic is rejected. Leading zeroes in literals are retained for concatenation. Octet slices are numeric and have no automatic padding. Sequences use the zero-based leaf position within each section; splitting or joining earlier rows can renumber later results.
Color modes and themes
Row colors are controlled by two settings: a color mode (which rows share colors) and a color theme (which palette is used). Both are accessible from the controls below the table.
Color modes
Sibling
Mergeable sibling pairs share a color from the palette. Colors cycle through the theme and restart per tree section. This is the default mode — it visually groups pairs that can be joined.
Siblings & Cousins
Consecutive rows at the same prefix length share a color. Groups subnets at the same depth in the tree, regardless of whether they are direct siblings.
Cycle
Each row gets the next palette color sequentially, wrapping around at the end. Unlike Sibling (which pairs mergeable neighbors) or Cousins (which groups by depth), Cycle assigns one color per row regardless of tree structure.
Alternating Colors
Rows alternate between two user-chosen colors. Pick any two colors from the color controls. Useful for a clean, simple look without tree-structure information.
Zebra
Classic gray/white alternating stripes. Ignores the theme palette entirely and adapts to dark or light mode automatically.
Manual
Each row can be assigned a custom color individually. A paint bucket icon appears on each row for color selection. Rows without a manual color fall back to zebra stripes.
None
All rows use a uniform gray. No color differentiation. Useful for export or when colors are distracting.
Color themes
Themes provide a palette of 8 colors used by the Sibling and Cousins modes. The active theme also tints the ambient background on the about and docs pages. Excel adds spreadsheet-style headers and grid lines while retaining your selected color mode and page appearance.
| Theme | Character |
|---|---|
| Pastel | Soft blues, pinks, greens — the default |
| Excel | White and gray sheet fills, pale greens, green headers and fine grid lines |
| Moody | Deep purples and grays |
| Neon | Bright cyan, pink, lime |
| Mid-Mod | Warm amber, teal, red — mid-century modern |
| Terminal | Green, cyan, yellow — retro terminal |
| Rainbow | Full spectrum: red through violet |
| Forest | Deep greens and browns |
| Ocean | Blues and teals |
| Mountain | Warm and cool grays |
| Desert | Ambers, oranges, reds |
| Polar | Ice blues and whites |
| Canada | Reds and pinks |
| USA | Blues and reds |
| Nigeria | Greens |
| Cuba | Blues and reds |
| India | Orange, green, blue |
| South Korea | Red, blue, gray |
How to change
The color mode picker and theme picker are in the controls area below the subnet table. Select a mode from the dropdown, then choose a theme from the palette grid. Changes apply instantly and are autosaved.
Split To: equal IPv4 subnets
Right-click an IPv4 leaf's existing /prefix link in Split / Join. Choose a target prefix through /30. For example, /24 to /26 creates 4 subnets in one Undo action. The count is the resulting subnet count. Existing prefix links still divide one leaf in half, including /30 to /31, /31 to /32, and IPv6.
Each child follows the existing names, notes, description and color inheritance rules at every split level. Sequence VLAN formulas remain positional and can renumber later rows in that section. Unavailable choices explain the 4,095-node, 8 MiB saved-file or safe-ID limit. Split To is available in Simple and Advanced modes, even when the Subnet column is hidden. There is no extra visible control.
Tab to the existing prefix link and press Shift+F10 (or the Context Menu key). Use Tab or the arrow keys, Home and End to reach a choice; Enter or Space selects it. Escape closes the popup and returns focus to the prefix link. Left-click or Enter on the prefix continues to split it in half. Unavailable choices remain focusable so their explanation can be read.
Keyboard shortcuts
The app supports undo and redo via standard keyboard shortcuts. Use Shift+F10 on an eligible prefix link to open its Split To context menu.
| Action | Mac | Windows / Linux |
|---|---|---|
| Undo | Cmd+Z |
Ctrl+Z |
| Redo | Cmd+Shift+Z |
Ctrl+Shift+Z |
| Redo (alt) | Cmd+Y |
Ctrl+Y |
Undo/Redo details
The undo system maintains an 8-level in-memory stack. Every action (split, join, edit a name, change a color, reorder columns) captures a full state snapshot. Undo restores the previous snapshot; redo reverses the undo.
Taking a new action after undoing clears the redo stack — the standard behavior users expect. The undo/redo state is held in memory only and does not persist across page reloads.
Keyboard controls
Use Tab to reach column restore, settings, font, padding, and color controls. Enter or Space activates a button. Popup choices are also buttons; Escape closes the popup and returns focus to its trigger. Header controls become visible when keyboard focus enters the header.
Save, Load, and Export
All data lives in your browser. There is no server, no account, and no cloud storage. The app provides four ways to persist and share your work.
Save
Downloads a .json configuration file containing your
complete state: all subnets, names, descriptions, notes, VLAN
settings, column order, visibility, color mode, palette, and both
Simple and Advanced layouts. Accepted text is preserved without truncation.
Load
Uploads a previously saved .json file and restores the
full state. The file is validated before loading: node count limits,
column allowlists, CIDR format checks, hex color validation, tree
topology verification, and cross-tree ID uniqueness are all enforced.
Invalid configs are rejected with an error message.
Legacy version 2 plans are checked against their original macro rules.
If a VLAN value or error status changes, a review lists the old and corrected
results before loading. Accept corrected plan replaces the current plan as
one undoable action; Download original preserves the exact source bytes.
Unchanged plans load directly.
Plans support up to 4,095 total tree nodes, including split parents, and 8 MiB of JSON. Editing and Save use the same limits as Load. An edit that exceeds a limit is rejected without replacing the last valid plan.
Export (CSV)
Downloads a .csv file with all currently visible columns.
Hidden columns are excluded. The export respects your active display
settings (range format, number format). CSV fields are escaped to
prevent formula injection in spreadsheet applications.
Valid VLANs and reserved warnings remain numeric; invalid results have
an empty VLAN field. If an exported VLAN row has an error or warning,
two columns are appended: VLAN Status (valid,
warning, error, or unset) and
VLAN Message. All-valid exports and exports hiding VLAN
keep their usual columns. This status is independent of warning badges.
Autosave
After every action, the complete state is serialized and written to
localStorage. Refresh the page or close and reopen the
tab to restore the saved plan, including the Advanced layout hidden
by Simple mode. A previous-save recovery copy is kept when possible.
Autosave is purely local to your browser. Clearing browser data or switching browsers will lose the autosaved state. Use the Save button to create a portable backup.
Browser storage can be blocked or fill up before the file limit is reached. Planning still works, but use Save if an autosave warning appears. Invalid autosaves are retained for recovery rather than silently deleted. Cancelling a startup VLAN review protects the original autosave and pauses writes. You can edit and use Save current; Review original and Download original remain available. Save manual work before reloading while paused. Changes in another tab or in the working plan invalidate an open review; both sources are retained rather than overwriting a newer plan. Internal page links retain the unsaved-work warning while persistence is paused or has failed. If repeated saves fail, earlier original downloads remain available until a save succeeds.
Config file format
New files use version: 3 and vlanMacroVersion: 2
for corrected evaluation. Version 2 files with no macro marker or marker 1
remain loadable through the legacy check. Older deployed clients reject
version 3 files, so use the updated app to reopen them.
The JSON config contains a top-level object with these keys:
| Key | Description |
|---|---|
version | 3 for newly saved plans |
vlanMacroVersion | 2 for corrected left-to-right macro evaluation |
trees | Section metadata and flat node arrays with CIDRs, text, colors, and child ID pairs |
colOrder | Array of column keys in display order |
visibleCols | Array of currently visible column keys |
layout | Mode, column order/visibility, font sizes, padding, and the retained Advanced layout |
colorConfig | Object with mode, theme, and alternating color settings |
rangeDisplay | Display style settings for Range and Usable columns |
numberDisplay | Number format settings for IPs and Hosts columns |
nameDisplay | Naming mode (automatic or manual) |
vlanDisplay | Global VLAN template and preset; section overrides are stored inside trees |