Safe IP Ranges and Domains for Test Data (RFC-Reserved)

Every so often a load test goes out with a plausible-looking IP address hard-coded into it and lands on somebody’s production server. The address was picked because it looked like an address. That is the whole failure.

Standards bodies solved this decades ago by reserving blocks that are guaranteed to belong to nobody. Using them costs nothing and removes the entire category of accident.

Last updated: 30 August 2026 · Tools SoShareIT editorial team

The three documentation blocks

RFC 5737 reserves three IPv4 ranges specifically so that documentation and test data never collide with a real host: 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24.

Three, rather than one, for a reason worth knowing. Many examples need to show traffic between separate networks — a client, a server and a gateway — and a single block forces you to pretend three different networks share a subnet, which quietly teaches the wrong thing. With three blocks each party in a diagram gets its own network and the example stays honest.

IPv6 has one equivalent, 2001:db8::/32, reserved by RFC 3849. If you have ever wondered why every IPv6 example on the internet starts 2001:db8, that is why.

Private is not the same as reserved

The RFC 1918 private ranges — 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — are the ones most people reach for, and they are not the same thing as the documentation blocks. The distinction matters in exactly one situation, but it is a situation you will hit.

Two steel cabinets illustrating the difference between private and reserved address space

A private address is guaranteed not to be routed on the public internet. It is not guaranteed to be unused, because it is almost certainly in use on the very network you are testing from. Hard-code 192.168.1.1 into a test and there is a good chance you have just aimed it at the router under somebody’s desk.

The documentation blocks carry no such risk. Nothing is supposed to answer on them anywhere, which is what makes them safe to bake into a fixture that will run on machines you have never seen.

Swipe the table sideways to see every column.

Use case Correct range Why not the other one
A fixture committed to a shared repo 192.0.2.0/24 Private ranges are live on someone’s LAN
Documentation and diagrams All three TEST-NET blocks One block cannot show three networks
Actual internal infrastructure RFC 1918 private space TEST-NET is for examples, not deployment
Testing the local machine 127.0.0.1 Nothing leaves the host
An IPv6 example 2001:db8::/32 The only reserved documentation prefix

Domains you can use in any example

RFC 2606 reserves example.com, example.net and example.org, plus four top-level domains that will never be delegated: .test, .example, .invalid and .localhost. RFC 6761 later formalised how resolvers should treat them.

Paper planes overflowing a wastebasket illustrating test email reaching a real inbox

Each has a distinct job, and picking the wrong one produces a test that passes for the wrong reason:

  • .test is for hostnames in a test environment. It never resolves publicly, so a leaked request fails fast instead of reaching a stranger.
  • .invalid is guaranteed not to be valid — the correct choice when you need input that must fail. Using example.com for a negative test is a bug, because it is a perfectly valid domain.
  • .localhost always resolves to the loopback interface, by specification rather than by convention.
  • example.com and its siblings are held by IANA and will never be sold, which is what makes them safe to print in documentation that outlives you.

The test email trap

This one deserves its own section because it does measurable harm and looks harmless.

An address like [email protected] in a signup fixture is a real, deliverable mailbox belonging to a real person. Every time your suite runs, they get mail. If the suite runs in CI on every push, they get a lot of mail, and there is no way for them to make it stop.

The fix costs one character: [email protected]. It is guaranteed undeliverable, it will never belong to anyone, and no bounce reaches a human. For a negative test — asserting that your validator rejects bad input — use test@invalid instead, because that one is guaranteed to fail validation rather than merely fail to deliver.

The same logic applies to phone numbers. In the North American plan only 555-0100 through 555-0199 are reserved for fiction. Every other 555 number can be assigned and some are.

Quick reference

The full tables — every reserved IP range with the RFC that defines it, the reserved domains, and the test card numbers processors publish — sit on the front page of Tools SoShareIT, where every value is click-to-copy. The editorial policy explains why we cite the RFC number next to each row rather than asking you to take our word for it.

If you take one rule away: reserved beats plausible. A value that a standards body set aside is safe forever, and a value that merely looks unused is safe until the day it isn’t.

Frequently asked questions

Which IP address should I use in documentation?

One of the three RFC 5737 blocks: 192.0.2.0/24, 198.51.100.0/24 or 203.0.113.0/24. For IPv6 use 2001:db8::/32, reserved by RFC 3849. All four are guaranteed to belong to nobody, which is why every well-written standards document uses them.

Can I just use 192.168.1.1 in my tests?

You can, and it is riskier than it looks. Private ranges are guaranteed not to be routed publicly but they are absolutely not guaranteed to be unused — 192.168.1.1 is the router on a great many of the networks your test will run on. The documentation blocks carry no such risk.

What email address should I use for test signups?

Anything at example.com, example.net or example.org. These are held permanently by IANA and will never be delivered or sold. Never use [email protected] — that is a real mailbox belonging to a real person who receives every message your CI pipeline sends.

What is the difference between .test and .invalid?

Job, not status. .test is for hostnames in a test environment and simply never resolves publicly. .invalid is guaranteed to be invalid, which makes it the right choice for negative tests. Using example.com to assert that your validator rejects bad input is a bug, because it is a perfectly valid domain.

Are 555 phone numbers safe to use?

Only 555-0100 through 555-0199. That is the single block the North American Numbering Plan reserves for fiction. Every other 555 number can be and sometimes is assigned to a real subscriber.