US 555 numbers and the UK 07700 900xxx drama range exist precisely so film and test data never reach a real subscriber. Those are the only ranges used here.
Every value this generator emits comes from a range a numbering authority has deliberately withheld from assignment. For North America that is the line-number block 555-0100 through 555-0199, set aside by the North American Numbering Plan Administrator for fictional use. For the United Kingdom it is Ofcom's drama ranges, including 07700 900000 to 900999 for mobiles. Nothing outside those published ranges is produced, so a number you copy here cannot ring a stranger because a test dialler read your fixture file at three in the morning.
You pay for that guarantee in variety. Within a single area code, the North American fictional block holds exactly one hundred line numbers, so if you need ten thousand distinct rows the tool has to vary the area code rather than the last four digits. That is a real ceiling, and it is the honest trade for a promise that holds every time.
The design principle is the same one behind RFC 2606, which reserved example.com, example.net and example.org in 1999 so that documentation could show a domain without pointing at somebody's server. Phone numbering got there earlier and less tidily, one regulator at a time, which is why the safe ranges differ by country and why a generator has to know which country it is generating for.
Screenwriters trained a generation to believe any number starting 555 is make-believe. It is not. Within the North American Numbering Plan, 555 is a central office code like any other, and specific numbers inside it are live: dial 555-1212 in most area codes and you reach directory assistance, and 800-555-1212 is the toll-free equivalent. Line numbers in the 555 range have also been made available for assignment to non-geographic services, administered nationally rather than by a single carrier.
That is precisely why 555-0100 through 555-0199 exists as a separate carve-out. It is the sub-block held permanently for fictional use, and it is the only part of 555 you can print with confidence that it will never be somebody's phone. A generator that simply randomises the last four digits after 555 is producing numbers that look reserved and are not, 555-2368, a number recycled through decades of film and television, is exactly the kind of value that pattern spits out.
So the tool never randomises across the whole prefix. It picks a valid area code, fixes the central office code at 555, and draws the final four digits only from 0100 to 0199. The output looks like every fictional number you have ever seen on screen because it is drawn from the block those productions are supposed to use.
A North American number is ten digits in the shape NPA-NXX-XXXX: a three-digit area code, a three-digit central office code, and a four-digit line number. The letters are not decoration. N means a digit from 2 to 9 and X means any digit from 0 to 9, so neither the area code nor the central office code can begin with 0 or 1. A leading 1 collides with the long-distance trunk prefix and a leading 0 with the operator, which is why the plan has never allowed either.
Of the eight hundred arithmetically possible three-digit codes, the eight N11 codes (211, 311, 411, 511, 611, 711, 811 and 911) are reserved as service codes, so no area code and no central office code may take that form. More are held back for expansion and special services, and the toll-free codes 800, 888, 877, 866, 855, 844 and 833 are assigned rather than geographic. The middle digit of an area code was constrained to 0 or 1 until interchangeable codes arrived in the mid-1990s; that rule is gone, and code that still enforces it will reject perfectly valid modern numbers.
All of this sits under country code +1, shared by the United States, Canada and a set of Caribbean territories, which is why a plausible NANP number tells you nothing about which country it belongs to.
The United Kingdom does the same job with more precision. Ofcom publishes ranges reserved for use in drama and never allocated to a customer, and the tool draws from those. Mobile numbers come from 07700 900000 to 900999, a thousand values that look exactly like an ordinary 07700 mobile because that is the point. London numbers come from the 020 7946 0xxx range, which sits inside the real 020 7946 block of the capital. For a number that belongs to no real town, there is 01632 96xxxx, 01632 is a geographic-format area code that was never issued to a place, so it reads as British without pointing at Leeds or Cardiff, and equivalent reserved ranges exist for other formats including freephone.
The mechanics differ from North America in a way that trips up shared validation code. A UK number is written with a leading 0 trunk prefix that is not part of the number itself: 07700 900123 becomes +44 7700 900123 internationally, with the 0 dropped, never kept. Area codes vary in length (020 for London, 0113 for Leeds, five digits for some smaller exchanges) so you cannot split a UK number at a fixed offset the way you can split NPA-NXX-XXXX. Any regex that assumes a three-three-four shape will mangle them.
Internationally, the shape of a phone number is governed by ITU-T Recommendation E.164, which caps a full international number at 15 digits excluding the leading plus sign and any national dialling prefix. The country calling code is the first one to three digits and is assigned by the ITU: +1 for the North American plan, +44 for the United Kingdom, +33 for France, +81 for Japan. Everything after it is the national significant number, and its length varies by country and sometimes within a country.
Two practical consequences follow. First, if your database column is fifteen characters you have no room for the plus, so store sixteen or store the plus implicitly and be consistent about which. Second, E.164 is unpunctuated (+442079460123, not +44 20 7946 0123) while ITU-T E.123 covers the human-readable notation with spaces, and RFC 3966 defines the tel: URI that a browser hands to a dialler. Those are three different renderings of one number, and mixing them is where deduplication quietly fails.
The honest gap is that E.164 reserves nothing for fiction. There is no international 555. Every safe range is a national decision published by a national regulator, so a generator can only promise a harmless number for the countries whose reserved ranges it actually implements. Anything labelled a random international number is guesswork wearing a plus sign.
Two things go wrong, and both are ordinary rather than exotic. The first is that fixture data escapes. A staging environment gets pointed at a live SMS gateway for one afternoon, a seeded row goes through, and a person who never heard of your product gets a verification code at midnight. This is not hypothetical, automated systems calling and texting people who only ever appeared in someone's test database is a recurring failure, and in the United States the Telephone Consumer Protection Act of 1991 governs autodialled calls and texts, so the consequences are not only embarrassment. Numbers also get recycled; the FCC operates a Reassigned Numbers Database precisely because a number that was safe when you wrote the fixture may belong to a new subscriber now.
The second is the screenshot. A support walkthrough, a bug report, a marketing page, a slide. Any of them can carry a real customer's mobile number into a public, indexable place, and once it is inside an image you cannot grep for it later. Under the GDPR a phone number that identifies a living person is personal data, so a test database full of real numbers is a data set you are accountable for rather than a convenience. Reserved ranges remove both problems at the source: there is nothing to leak, because the number belongs to nobody.
Here is the limitation, stated plainly: a number from a reserved range will fail a strict carrier check, and it should. Validation happens in two layers. The syntactic layer checks shape, digit count against E.164, area code and central office code rules, a regex or a metadata-driven library. Reserved numbers are built to pass that layer, because their whole purpose is to look real. The network layer is different. A carrier or HLR lookup asks whether the number is allocated, which operator holds it and whether it has been ported. For a fictional number the honest answer is that no record exists, so the lookup returns nothing and a signup flow gated on it will refuse the number.
That is not a defect in the generator. A number that passed a live carrier lookup would by definition be somebody's number, which is exactly what you were avoiding. Treat it as a boundary: stub or mock the lookup in your test environment, keep the reserved values for fixtures, screenshots and documentation, and reserve real numbers for a small, deliberate, consented set of end-to-end checks.
Be aware too that some metadata-driven validation libraries already treat much of the 555 range as outside assignable ranges and return invalid before any network call happens. If your test suite asserts that a seeded number is valid, that assertion is testing the library's opinion, not your code.
FancyTextAgent's styling tools work by substituting code points, and a phone number is the one string you should leave alone. The styled digits come from the Mathematical Alphanumeric Symbols block, whose numerals run from U+1D7CE to U+1D7FF in five sets, bold, double-struck, sans-serif, sans-serif bold and monospace. They look like digits. They are not digits in the sense any dialler cares about.
Three things break. A tel: URI defined by RFC 3966 expects actual digits, so a click-to-call link built from styled characters does not dial. Pattern matching fails too: the \d class in JavaScript matches only ASCII 0 through 9, so a validator sees no number at all. And every one of those code points sits outside the Basic Multilingual Plane, so each takes two UTF-16 code units, a fifteen-digit international number becomes thirty units against a field that counts them.
There is a wrinkle worth knowing. Those characters carry compatibility decompositions, so Unicode NFKC normalisation maps them back to plain ASCII digits, and a system that normalises input will silently recover the number while one that does not will reject it. You cannot tell from the outside which you are talking to. Screen readers are the other cost: they commonly announce these characters oddly or skip them, so a styled number can be unreadable to somebody using one. Style the label if you must; leave the digits plain.
In North America the 555-01xx line numbers are unallocated, so you normally get an intercept recording or a fast busy rather than a ringing phone. Ofcom's drama ranges behave the same way. Exact treatment varies by carrier, but there is no subscriber at the other end by design.
Split the assertion. Test parsing and formatting with reserved numbers, since they are syntactically correct. For the allocation check, mock the carrier lookup and assert that your code handles both a hit and a miss. Keep one or two consented real numbers for a manual end-to-end pass, and never commit them to a fixture file.
Several regulators publish equivalents, in the same spirit as Ofcom's drama ranges and the North American fictional block. This tool generates only for the plans whose reserved ranges it implements, because a number that merely looks foreign is not safe. For another country, check that regulator's published list rather than assuming a pattern is unused.
No. Nothing in these ranges is allocated, so a message will not deliver and a call will not connect; some gateways still charge for the attempt and return a failure code. That is useful only when you are testing failure handling. For a real delivery test, use a number you own.
No. The draw happens in your browser, and nothing is uploaded, logged or stored on our side. There is no account to create and no key to paste. You can load the page, disconnect from the network, and it will keep producing numbers exactly as before.
Store the E.164 form (plus sign, country code, national number, no spaces or punctuation) and format for display at render time. Keep extensions in their own column rather than appending them; the tel: URI carries an extension as a ;ext= parameter. Consistent storage is what makes deduplication and lookups behave later.
A number that cannot identify a living person is not personal data, which is the point of using reserved ranges. The risk runs the other way: a real number sitting in a test database, a log file or a screenshot carries the same obligations as production data. Reserved values shrink that surface instead.
Vary the area code. Each valid area code has its own 555-0100 to 555-0199 block, so the pool multiplies well past what most fixture sets need. Beyond that, mix in the UK drama ranges, which hold a thousand mobile values and a thousand London ones, or add a separate extension column.