Every address, accounted for.

IPCraft is IP address management for teams that have outgrown the spreadsheet. Plan your subnets, keep a record for every host, and let your scripts find free space through the API.

Free for one person and 1,500 addresses. No credit card.

10.40.0.0/16Corporate campus
  • Infrastructure
  • Servers
  • Users
  • Wireless
  • Facilities
  • Platform
  • Free
Find the next free

87 of 256 /24s are allocated. Each square is a /24, shaded by how full it is. Select a subnet to inspect it, drag it to renumber it, or find room for a new one.

Arrow keys move this subnet to the next free boundary in that direction.

Start from the network you already have

Most teams arrive with a spreadsheet and a network that has drifted away from it. Bring the spreadsheet in as CSV, then paste a scan to see what's actually live.

  1. Run a scanUse nmap, arp -a, a ping sweep, or your DHCP server's lease file. Nothing to install.
  2. Paste it into a subnetIPCraft detects the format and matches each live host to its record.
  3. Review, then applyConfirm what's live and add what's missing. Nothing is ever deleted.

What you paste

$ sudo nmap -sn 10.40.18.0/24
Starting Nmap 7.95 ( https://nmap.org )
Nmap scan report for gw-2f.corp.example (10.40.18.1)
Host is up (0.00041s latency).
MAC Address: 00:1B:17:00:01:12 (Palo Alto Networks)
Nmap scan report for prn-2f-east.corp.example (10.40.18.23)
Host is up (0.0012s latency).
MAC Address: 00:17:C8:5A:20:0E (Kyocera)
Nmap scan report for ap-2f-03.corp.example (10.40.18.31)
Host is up (0.00088s latency).
MAC Address: F4:92:BF:2C:07:7F (Ubiquiti)
Nmap scan report for 10.40.18.141
Host is up (0.0021s latency).
MAC Address: 9A:4C:2E:6F:2A:11 (Unknown)
… 40 more hosts
Nmap done: 256 IP addresses (44 hosts up) scanned in 3.12 seconds

What IPCraft shows you

Scan preview

10.40.18.0/24 Floor 2
Confirmed
41
Undocumented
3
Not seen
2
MAC conflicts
1
  • 10.40.18.23 Confirmedprn-2f-east Marked as seen today.
  • 10.40.18.141 UndocumentedNo record Created as assigned, with MAC 9A:4C:2E:6F:2A:11, when you apply.
  • 10.40.18.31 MAC conflictap-2f-03 The record says F4:92:BF:2C:07:31. Flagged for you, not overwritten.
  • 10.40.18.112 Not seendesk-2f-112 Left as is. It may just be switched off.

Blank hostnames and MACs are filled in from the scan. Anything you documented stays as you wrote it.

Coming from a spreadsheet? Upload it as CSV and map its columns to IPCraft's fields. See the CSV import guide and the scanning guide for every supported format.

An address plan you can actually see

Subnets nest under their parents automatically, so the tree reads like the plan in your head. Every row shows how full it is.

  • Carve by size. Pick a /24 and IPCraft lists the free blocks inside the parent. No CIDR math, and no overlaps discovered later.
  • Split without losing records. Break a /24 into four /26s and every hostname, MAC, and status moves with its address.
  • Duplicates are refused. The same CIDR can't be created twice in one VRF. Overlapping private space gets a VRF of its own.
  • VLANs and sites alongside. Tag subnets with VLANs and locations so layer 2 and geography sit next to the addressing.

A record for every address

Open a subnet and every address is there with its status. Each record holds a hostname, MAC, owner, and any custom fields your team needs, and shows when a scan last saw it.

10.40.18.0/24 Floor 2 181 of 254 in use
10.40.18.31 ap-2f-03
Status
Assigned
MAC
F4:92:BF:2C:07:31Last scan saw F4:92:BF:2C:07:7F
Owner
Network team
Location
HQ
Description
Ceiling access point, east wing
asset_tag
IT-04418
warranty_end
2027-03-31
Last seen
Today at 09:12, by scan

Press ⌘K anywhere in the app to jump to a subnet, address, or hostname.

Automate the rest

The app is built on the same REST API your scripts use. Ask it for the next free address, keep your CMDB in sync, or get a signed webhook whenever something changes.

  • GET/api/v1/subnets/{id}/first-free
  • GET/api/v1/subnets/{id}/free-blocks
  • POST/api/v1/subnets/{id}/addresses
  • POST/api/v1/subnets/{id}/split
  • POST/api/v1/subnets/{id}/scan/preview
  • GET/api/v1/search?q=
  • GET/api/v1/export/addresses
API=https://api.ipcraft.io/api/v1

# Ask for the next free address in a subnet
curl "$API/subnets/$SUBNET_ID/first-free" \
  -H "Authorization: Bearer $IPCRAFT_KEY"
# {"ip": "10.40.18.42"}

# Record it
curl -X POST "$API/subnets/$SUBNET_ID/addresses" \
  -H "Authorization: Bearer $IPCRAFT_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Requested-With: XMLHttpRequest" \
  -d '{
    "ip": "10.40.18.42",
    "hostname": "db-primary-01",
    "status": "assigned",
    "owner": "Platform team"
  }'

Also in every account

Activity log
Who changed what, and when. Entries are hash-chained with SHA-256, so an edited history no longer verifies.
Roles
Admin, editor, and viewer roles for everyone in the workspace.
CSV in and out
Import a spreadsheet by mapping its columns. Export subnets, addresses, or the activity log whenever you like.
IPv4 and IPv6
Plan both families in the same tree, with the same carving and splitting.
VRFs
Keep overlapping RFC 1918 space apart. Duplicate checks are scoped to each VRF.
Overlap report
One page lists every subnet that shares space outside the tree. A healthy plan shows none.
Sign-in
Email and password, or Google.
Isolation
Every workspace is separated by row-level security in Postgres, not just by application code.

Free until you need more

Upgrade when you need more people, more addresses, or write access to the API.

PlanPricePeopleAddressesAPIWebhooks
Free$011,500Read-onlyNone
Pro$29 /month25,000Read and write2
Teams$199 /month1010,000Read and write50
EnterpriseCustomUnlimitedUnlimitedRead and writeCustom
Compare plans in full

Paid plans have unlimited folders and subnets.

Retire the spreadsheet this afternoon.

Create a workspace, import what you have, and paste one scan. You'll know which records are wrong before the end of the day.