Updated · Built and checked by the PlinzoTools team, formulas tested against published sources
Check whether a string is a well-formed IPv4 or IPv6 address.
Enter an IPv4 or IPv6 address to check its format.
This tool checks whether a string is a well-formed IPv4 (e.g. 192.168.1.1) or IPv6 (e.g. 2001:db8::1) address, following strict structural rules for IPv4 and a looser pattern check for IPv6. It's a format check only -- it doesn't look up whether the address is actually assigned or reachable.
Enter an IP address. The result shows whether it's valid and which version (IPv4 or IPv6) it matches.
IPv4 requires exactly 4 dot-separated octets, each 0-255, with no invalid leading zeros. IPv6 is checked with a loose pattern: colon-separated groups of up to 4 hex digits (2 to 8 colons), so obviously malformed values can occasionally pass and it does not fully verify :: placement or group counts.
For subnet math on a validated IPv4 address, see the Subnet Calculator.
An IPv4 address passes only if splitting on dots gives exactly four parts, each part is one to three digits, each value is 255 or lower, and no part has a leading zero unless it is exactly 0. That means 192.168.1.1 and 0.0.0.0 pass, while 192.168.01.1 fails because of the leading zero, 256.1.1.1 fails because 256 is out of range, and 192.168.1 fails because it has only three parts. Leading zeros are rejected because some software reads them as octal numbers, which can change the meaning of the address. Surrounding spaces are trimmed before checking.
For IPv6 the tool uses a simple structural test: groups of up to four hexadecimal digits separated by colons, with between 3 and 8 colon-separated slots overall. This accepts the usual forms such as 2001:db8::1 and ::1. It is more relaxed than the full standard, so some malformed strings such as 1:2:3 also pass here, since the tool does not count that a full-length address must have exactly eight groups when there is no double colon. If precision matters, for example in a security-sensitive input, complement this check with a dedicated IP-parsing library in your own code.
A pass tells you the string is structured like an address, and it reports the version, 4 or 6. It does not say whether the address is public or private, assigned, reserved or reachable. An address like 10.0.0.5 is valid but belongs to a private range, and it will not work from the public internet. For subnet, range or host-count questions, use a subnet calculator once you know the address is well formed.
IPv4 uses 32-bit addresses (4 octets, roughly 4.3 billion possible addresses), while IPv6 uses 128-bit addresses (8 hextets) to accommodate the much larger address space needed as internet-connected devices multiply.
No -- format validity says nothing about whether that address is currently assigned to a live device or reachable over the network.
It represents one or more consecutive groups of all-zero hextets, letting a long address be written more compactly -- e.g. "::1" is the IPv6 loopback address, shorthand for 7 zero groups followed by 1.
A part with a leading zero is not accepted, because such numbers are sometimes interpreted as octal. Write it as 192.168.1.1.
No. Remove the port or the slash and prefix length first. The tool validates the bare address only.
No. It only reports whether the text is valid and whether it is IPv4 or IPv6.
The IPv6 check is a loose structural test that does not enforce the full group-count rules. Do not rely on it for strict parsing.
Reference: MDN Web Docs