Test data that cannot reach a real person, built safe on purpose
The short answer. Make every value unusable outside a test by construction: emails at example.com (reserved by RFC 2606), IP addresses from the 768 in the three RFC 5737 documentation blocks, card numbers copied from Stripe's or Razorpay's published test lists, and a seed so the same rows come back. Phone numbers are the one field this cannot cover in India.
Test data leaks. A seed file loaded into staging sends a welcome email, a demo screenshot ends up in a slide deck, a fixture with a card number is pasted into a bug report. Careful handling helps, but the stronger rule is to choose values that do no harm wherever they end up: an address no mail server will deliver to, an IP no machine answers on, a card no bank will charge.
A safe row, field by field
| Field | Value in a fixture | Why it cannot reach anyone |
|---|---|---|
| priya.sharma@example.com | example.com is reserved for documentation by RFC 2606; it accepts no mail for anyone | |
| Website | https://example.com/u/482 | the same reserved domain, so a link in a test email goes nowhere private |
| IP address | 198.51.100.23 | 198.51.100.0/24 is one of the three RFC 5737 blocks; no real host is ever assigned one |
| Card number | 4242 4242 4242 4242 | Stripe's published test Visa; it works only in a sandbox and cannot pay for anything |
| Phone | a random 10-digit number starting 6 to 9 | not safe: see the last section |
The Mock Data Generator builds rows like this one, up to 5,000 at a time, as JSON, CSV, SQL or XML.
Emails and links: example.com
RFC 2606 sets aside example.com, example.net and example.org, and the top-level names .test, .example, .invalid and .localhost, for documentation and testing. Nobody can register them. A made-up domain such as testmail.in is not the same thing: it may be unregistered today and bought tomorrow, and from then on every fixture sends its mail to a stranger. So every email and URL the generator writes ends at example.com.
IP addresses: the documentation ranges
RFC 5737 reserves three IPv4 blocks for examples: 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24, 256 addresses each. They are never routed on the public internet, so a firewall rule, a log line or a rate-limit test that uses them cannot block or probe a real machine. A random IP is a different matter: any address outside the reserved blocks may be somebody's live server. The Random IP Generator gives only RFC 5737 addresses.
Card numbers: only the published test cards
A number that passes the Luhn check is not therefore fake. Put random digits behind a real issuer prefix and one day the result is somebody's live card. The Test Credit Card Numbers tool hands out only the 47 numbers that Stripe and Razorpay publish for their sandboxes, read from their pages on 15 Oct 2026, and generates only the expiry and CVV. The Stripe test cards and Razorpay test cards pages list each gateway's own set, including Razorpay's RuPay card 6527 6589 0000 1005.
Files and images with nothing inside
An upload test needs a file of the right size and type, not a real document. The Dummy File Generator writes a valid PDF, JPG, PNG, ZIP, CSV, TXT or BIN of an exact byte count, padded with filler rather than content, and Sample PDF Download has fixed 100 KB to 10 MB files. The Placeholder Image Generator draws a plain block labelled with its own size, so a mockup never borrows a photo of a real face.
Seeds: the same data every time
Random data that changes on every run turns a failing test into a ghost: run nine broke, and the rows that broke it are gone. The Mock Data Generator takes a seed, and the same seed with the same fields gives the same rows on any machine. That keeps a bug reproducible, and it means a repository can hold a seed and a field list instead of a megabyte of sample data.
The limit: phone numbers in India
The United Kingdom keeps a block of 1,000 mobile numbers for drama, 07700 900000 to 07700 900999, that Ofcom will not allocate. We found no such fictional range in India. A generated number in the Indian mobile format, ten digits starting 6, 7, 8 or 9, may well be in use. The Mock Data Generator says so on its page and warns never to dial one. Use such numbers for display and validation only, and point any SMS or OTP test at your own phones or a provider's test mode.
Questions people ask
Is it safe to use example.com in test data?
Yes. RFC 2606 reserves example.com, example.net and example.org for documentation, so nobody can register them and no private inbox sits behind them. A seed file that sends a welcome email to priya@example.com reaches no one. A made-up domain is riskier, because someone can buy it later and receive everything your fixtures send.
Which IP addresses are safe to use in examples?
The three RFC 5737 blocks: 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24, 768 addresses in all. They are reserved for documentation and never routed on the internet, so a test that pings, blocks or logs one cannot touch a real machine. Private ranges such as 192.168.0.0/16 are real addresses on someone's network.
Can a Luhn-valid card number belong to a real person?
Yes. The Luhn check catches typing mistakes; it does not mark a number as fake, and about one random 16-digit number in ten passes it. With a real issuer prefix in front, a generated number can match a live card. Use only the test numbers a gateway publishes, which work in its sandbox and nowhere else.
Why should test data use a seed?
So the same data comes back. A fixture that changes on every run makes a failing test impossible to repeat, because the rows that caused it are gone. With a seed, the same seed and fields rebuild identical rows on any machine, so a colleague can reproduce the bug and the repository needs to store only the seed.
Is there a fake phone number range in India?
We found none. The United Kingdom reserves 07700 900000 to 07700 900999 for drama, but India's ten-digit mobile numbers starting 6 to 9 have no set-aside fictional block. Treat any generated Indian mobile number as possibly real: use it to test display and validation, and never call or message it.
Sources
Checked 15 Oct 2026:
- IETF: RFC 2606, Reserved Top Level DNS Names (example.com, example.net, example.org, and .test, .example, .invalid, .localhost)
- IETF: RFC 5737, IPv4 Address Blocks Reserved for Documentation (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
- Stripe: Test card numbers (4242 4242 4242 4242 and the other sandbox cards)
- Razorpay: Test Card Details (domestic and international test cards; "These cards don't work in live mode")
- Ofcom: Numbers for drama (07700 900000 to 07700 900999, not allocated to providers)
- The one-in-ten Luhn figure follows from the check digit: exactly one of the ten possible final digits makes a number valid.
The tools for this
Related guides
- How to check whether a card number is valid, and what valid does not meanThe Luhn check worked on 4242 4242 4242 4242: the digits total 80, ending in 0, so it passes. Plus scheme and length checks, and why valid is not real.
- How to create a test file of an exact size, and find where an upload limit really isMake a file of an exact byte count up to 1 GB: PDF, JPG, PNG, CSV, ZIP, TXT or BIN. Four files show if a 2 MB limit is 2,000,000 or 2,097,152 bytes.