Test data generator
Filling a staging database with real bank details is a data leak waiting to happen. These values pass every validator — yours and ours — and designate nothing and nobody.
Every value here is fictional and meant for test environments. Card numbers come from the test ranges published by payment providers: no production system accepts them. Email addresses use the domains reserved by RFC 2606, phone numbers the fiction ranges reserved by regulators.
How the check works
- 1
Every value is computed, not picked from a list
The body of the number is random, the check digit is computed on it: Luhn for cards, mod-97 for IBANs, the GS1 digit for barcodes.
- 2
Reserved ranges are respected
Payment providers' test cards, RFC 2606 example.com domains, regulator-reserved phone ranges. Nothing produced here can reach a real recipient.
- 3
Nothing is transmitted
The draw happens in your browser, using the Web Crypto API where available. No generated value exists anywhere but on your screen.
Why not copy production data
It is the most common and most expensive practice: a production dump imported into staging, and suddenly thousands of personal records sit in an environment without the same protections, often reachable by contractors.
GDPR treats that copy as processing in its own right, with its own legal basis and retention period. A fabricated fixture carries none of those constraints.
Valid does not mean usable
An IBAN generated here satisfies mod-97, so it will clear your application's input validation. It designates no account: a transfer sent to it comes back rejected. That is exactly what a test fixture should do.
Frequently asked questions
Can these card numbers be used to pay?
No. They belong to the test ranges that Stripe, Adyen and other providers publish and reject in production. They exist to get through a payment form in a test environment, nothing more.
Do the generated IBANs exist?
No. The mod-97 check digit is correct, which gets them past any format validator, but the account number is drawn at random on a demonstration bank code. No institution will recognise them.
Can I generate thousands for a load test?
Reload the page as often as you need, or reimplement the algorithms — they are described on each tool's page. For industrial volumes, the validation API is mostly useful to confirm your own generator produces compliant values.
The same check over API
This tool runs in your browser. To run the same check from your code, in bulk or server-side, the API answers in JSON.
Read the documentation