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 "Error" 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 | 0 (from "5") |
{o3 r} | Right digit of third octet | 5 |
{o3 ll} | Left two digits of third octet | NaN (single digit) |
{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 |
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 (entry) can override the global VLAN template. Open the VLAN settings from the column header, then choose "Per-section" to set a different template for specific sections. This is useful when different parts of your network use different VLAN schemes.
Validation
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 "Error" in the cell with a tooltip explaining the problem.
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.
| Theme | Character |
|---|---|
| Pastel | Soft blues, pinks, greens — the default |
| 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.
Keyboard shortcuts
The app supports undo and redo via standard keyboard shortcuts. All other actions (split, join, edit names) are click-based.
| 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.
Future shortcuts
Split and join operations are currently click-only. There are no keyboard shortcuts for navigating between rows or triggering split/join from the keyboard.
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, and theme. The file
is typically 5–10 KB.
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.
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.
Autosave
After every action, the complete state is serialized and written to
localStorage. Refresh the page or close and reopen the
tab — everything comes back exactly as you left it. No manual
save required.
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.
Config file format
The JSON config contains a top-level object with these keys:
| Key | Description |
|---|---|
entries | Array of tree entries, each with a CIDR root, section ID, name, and a nested array of leaf nodes with subnet, label, description, notes, and color data |
columnOrder | Array of column keys in display order |
visibleColumns | Array of column keys that are currently visible |
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) |
vlanConfig | Global VLAN template and per-section overrides |