IP Address Validator

Paste one address or five thousand. Each line is checked with a specific reason when it fails, rewritten in RFC 5952 canonical form, and classified against the IANA special-purpose registries — private, loopback, link-local, multicast, documentation, CGNAT and the rest.

Try:
Result

About this tool

Use this when you need to check whether IP addresses are syntactically valid before they go into a firewall rule, allowlist, log pipeline, DNS zone or spreadsheet. Paste one address per line and the tool reports the canonical spelling, family, category and a specific reason for any bad line.

IPv4 and IPv6 are both supported. IPv6 output defaults to the RFC 5952 compressed form, so 2001:0DB8:0000:0000:0000:0000:0000:0001 becomes 2001:db8::1; switch to Expanded when you need all eight groups. Optional /prefix, :port, bracketed IPv6 authority syntax and %zone ids can be allowed or refused independently.

Classification is syntax-only and local: private, loopback, link-local, multicast, documentation, CGNAT/shared, unique-local, mapped IPv4, 6to4, Teredo, NAT64, benchmarking, broadcast, reserved and global addresses are labeled from their numeric ranges. Nothing is pinged, geolocated or sent over the network.

Choose Report for a readable audit, Table for CSV, JSON for automation, Valid only for a canonical list to paste elsewhere, Invalid only for cleanup, or Summary for totals by family/category. Drop duplicates compares canonical forms, so different IPv6 spellings of the same address collapse together.

Limits and edge cases:

FAQ

Does this check whether an address is reachable?

No. It validates syntax, canonicalizes the text and classifies the address range. It never pings, opens a socket, performs DNS, geolocates, or contacts a remote service.

Why are IPv4 leading zeros rejected?

They are ambiguous. Modern decimal-only parsers may read 192.168.001.010 as 192.168.1.10, while old C-derived parsers can interpret leading-zero octets as octal. The default rejects them; turn on Allow IPv4 leading zeros only when you know the source means decimal.

Can I validate CIDR prefixes and ports?

Yes. 10.0.0.0/8, 2001:db8::/32, 192.0.2.7:443 and [2001:db8::1]:443 are accepted by default and checked for family-specific prefix/port bounds. Disable the prefix or port checkbox when a field must contain a bare address.

What is the difference between compressed and expanded IPv6?

Compressed is the normal RFC 5952 style: lowercase hex, no leading zeroes, and the longest zero run collapsed to ::. Expanded writes all eight 16-bit groups with four hex digits each. Both identify the same address.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool ip-address-validate "192.168.1.1
2001:0DB8::1
100.64.0.1
10.0.0.0/8
[2001:db8::1]:443
192.168.1.256"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/ip-address-validate/?addresses=192.168.1.1%0A2001%3A0DB8%3A%3A1%0A100.64.0.1%0A10.0.0.0%2F8%0A%5B2001%3Adb8%3A%3A1%5D%3A443%0A192.168.1.256&family=any&output=report&ipv6_form=compressed&allow_prefix=true&allow_port=true&allow_leading_zeros=true&dedupe=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.