An IPv4 address is a 32-bit number, and the dotted quad is only one way to write it. inet_aton, still behind getaddrinfo, ping and curl, also reads a part with a leading zero as octal, a part starting 0x as hex, a single number as all 32 bits, and three or two parts with the last one filling the remaining bits, so 192.168.1 is 192.168.0.1 and 127.1 is 127.0.0.1. The WHATWG URL Standard, which browsers, Node’s URL and fetch() follow, accepts all of those, plus a trailing dot, percent-encoding and full-width digits, which it maps to ASCII first. Python’s ipaddress and Go’s net.ParseIP reject every one of them. A server-side request filter that validates with a strict parser therefore decides the host is a name rather than an address, and the HTTP client behind it connects to 192.168.0.1. So each legacy form is parsed exactly as the URL Standard’s IPv4 parser does it, the address a browser would connect to is shown, and any disagreement with inet_aton is stated. Dotted binary is read back as well, because this page writes it, with a warning where a browser would read the same digits as octal.
IPv6 input can take any RFC 4291 form: leading zeros or none, one :: for a run of zero groups, a dotted IPv4 tail, brackets, and an RFC 4007 zone ID such as %eth0, which names an interface on your machine and is not part of the address. The canonical form follows RFC 5952: lowercase, no leading zeros, :: for the longest run of two or more zero groups and the first run on a tie, never for a single group, and dotted notation for IPv4-mapped addresses. The URL host row gives the all-hex form a browser writes instead. The expanded form, the 128-bit integer, the IPv4 address embedded in an IPv4-mapped, NAT64, 6to4 or Teredo address, and the reverse DNS name are shown too: the octets reversed under in-addr.arpa for IPv4, and 32 reversed hex digits under ip6.arpa for IPv6.
Every address is matched against the IANA IPv4 and IPv6 Special-Purpose Address Registries that RFC 6890 set up, as IANA publishes them today, most specific block first, with each entry’s Globally Reachable value. 100.64.0.0/10 comes out as shared address space for carrier-grade NAT rather than private, 169.254.169.254, the cloud metadata address, as link-local, and 192.0.0.9 as globally reachable although it sits inside 192.0.0.0/24. An IPv4-mapped address is named as such, with a warning about the IPv4 address inside it, because a dual-stack socket connecting to ::ffff:127.0.0.1 reaches loopback. One address at a time: a block with a prefix belongs in the subnet calculator.