Generate random IPv4 and IPv6 addresses, including the blocks reserved for documentation so an example can never point at a real host. Private RFC 1918 ranges and routable addresses are available too, with a warning where output could match live infrastructure.
Settings
Recent results
Generated locally in your browser β your settings and results never leave this page.
Two protocols, two address sizes
An IPv4 address is 32 bits, written as four numbers from 0 to 255 separated by dots. That gives about 4.3 billion possibilities, which seemed limitless when the protocol was designed and was exhausted in practice years ago. IPv6 uses 128 bits, written as eight groups of four hexadecimal digits, and the space it provides is large enough that running out is not a meaningful concern.
Both are in use simultaneously, and much of the internet speaks both. Software that handles addresses generally has to handle both, which is why testing with a mixture is worthwhile rather than assuming the four-dotted-numbers shape.
Reserved ranges exist so examples are safe
It is tempting to invent an address for a diagram or a configuration example. The problem is that almost every plausible-looking address belongs to somebody. Published examples get copied into real configurations, scanned by automated tools, and occasionally receive genuine traffic β all aimed at an organisation that never agreed to it.
The standards bodies solved this by setting aside blocks that route nowhere. RFC 5737 reserves three IPv4 ranges for documentation, and RFC 3849 reserves an IPv6 prefix for the same purpose. An address from those blocks is unambiguously an example. Anyone who recognises the range knows immediately that it is not a real host, and no traffic can reach one by accident.
This is why the documentation option is the default here. If a value will appear in anything published β a tutorial, a screenshot, a sample configuration file β it belongs in a documentation range.
Private addresses and why your router uses them
RFC 1918 reserves three IPv4 ranges for private networks. They are routable inside a local network and dropped by any router facing the public internet, which is what allows every household to use 192.168.1.1 simultaneously without conflict. Address translation at the router maps that internal address onto a single public one for outbound traffic.
Generating private addresses is useful when building fixtures for anything that reasons about network topology β firewall rules, allow-lists, monitoring configuration β because that code needs to distinguish internal from external correctly, and getting the boundaries of those three ranges right is a common source of mistakes. The 172.16.0.0/12 block in particular is often implemented incorrectly, because it covers 172.16 through 172.31 rather than the whole 172 range.
What makes address validation hard
Validating an IPv4 address looks trivial and is not. Each octet must be 0 to 255, so 256 is invalid, and leading zeroes are ambiguous because some parsers historically read them as octal β meaning 010 could be eight or ten depending on the library. Some functions accept fewer than four parts and interpret them in surprising ways.
IPv6 adds its own difficulties: the double-colon abbreviation may appear only once, groups may omit leading zeroes, and there is a hybrid notation embedding an IPv4 address at the end. Generating a spread of values and pushing them through your validator is a faster way to find the gaps than reasoning about the grammar.
Addresses are not identities
Worth stating for anyone generating addresses for a dataset: an IP address identifies a network interface at a moment in time, not a person. Home addresses are frequently reassigned, mobile networks share one address across many users, and traffic through a proxy or a VPN carries the intermediary’s address. Treating an address as a stable identifier for a user produces both technical and privacy problems.
Privacy
Addresses are generated in your browser. Your own address is never read, and nothing generated here is transmitted, stored or logged.
How to use the Random IP Address Generator
- Choose the address type. The documentation ranges are the right default for anything you will publish.
- Set how many addresses you need.
- Generate, then copy or export as CSV.
Frequently asked questions
Which option should I use for documentation or a blog post?
The IPv4 documentation ranges, or the IPv6 documentation range. These blocks are reserved by standards specifically so that examples cannot reach a real machine. Using a randomly chosen routable address in published material risks pointing readers β or automated scanners β at somebody else's server.
What are the documentation ranges?
RFC 5737 reserves three IPv4 blocks for this purpose: 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24. RFC 3849 reserves 2001:db8::/32 for IPv6. Nothing routes these on the public internet, which is exactly what makes them safe in examples.
What is a private IP address?
An address from the ranges RFC 1918 sets aside for internal networks: 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. They are routable only inside a local network, which is why your home router almost certainly hands out addresses starting 192.168 or 10.
Is it safe to use a randomly generated public address?
For local testing, yes. For anything published or sent anywhere, no β a routable address may well belong to a real organisation, and traffic aimed at it is somebody else's problem. The tool warns you when that option is selected.
Why does IPv6 look so different?
IPv6 addresses are 128 bits rather than 32, written as eight groups of four hexadecimal digits separated by colons. The larger space exists because the roughly 4.3 billion IPv4 addresses ran out. Real-world IPv6 notation also allows abbreviating runs of zeroes with a double colon; this tool writes groups out in full so the values are unambiguous to parse.
Can I use these to test address validation?
Yes, and it is a good use. Generating a spread of addresses exercises boundary handling β octets at 0 and 255, the reserved first octets, IPv6 hex groups β far better than the handful of examples most people think to type by hand.
Do these addresses belong to anyone?
The documentation and private ranges belong to nobody and route nowhere public. The routable option can produce addresses that are genuinely allocated, which is why it carries a warning and why it should not be used in anything you publish.