Promo code generator

A batch of unique codes with your prefix, free of look-alike characters and accidental rude words. CSV export already carries discount and expiry columns.

Random part length

8

Code format

Data for the export

These go into CSV and JSON as separate columns, so the file is ready to import into a shop.

What the generator handles for you

Checks the whole batch for duplicates and rebuilds any collision: two identical coupons mean an argument with a customer.

Drops look-alike characters so the code can be dictated and typed off a receipt without mistakes.

Rejects codes where random letters spell something rude — not what you want printed on a coupon.

The main thing

Why code length is a question of money

A promo code is validated at checkout, and that form is open to the whole internet. If you issue many codes but the space is small, a bot will find a working one in an evening: first the discount leaks, then a link to “working codes for your shop” shows up on deal-hunting forums.

The arithmetic is simple. Six characters from our set give about half a billion combinations. Issue a thousand codes and only one in half a million guesses works — brute force is pointless. Issue a hundred thousand four-character codes and roughly every tenth guess works, and the campaign ends differently than planned.

The panel shows both numbers at once: the total number of combinations and the chance of a lucky guess. Aim for no better than one in a million.

LengthCombinationsFits a batch of
4614 thousanda dozen codes for insiders
6481 millionup to 500 codes
8377 billionup to 300 thousand codes
103·10¹⁴any mass mailing

Practice

How codes are usually arranged

A personal code per customer. Campaign prefix plus a random tail: NY26-7K4M-92QX. Usage limit of one. You can see who redeemed it, and the code cannot be shared.

A public code for advertising. One short memorable code for the whole campaign, but capped by date and budget. Length will not save you here — the redemption rules will.

Codes for creators. A separate prefix per partner: ANNA-…, MARK-…. Counting sales by prefix is easier than by tagged links.

Printed on packaging. Use groups of four and definitely the set without look-alikes: codes on packaging are typed by hand, and every “zero or letter O” pair becomes a support ticket.

Separate batches by prefix

Uniqueness is guaranteed within one batch. If you generate in several runs, change the prefix: BF-, NY-, MAY-. As a bonus, your reports immediately show which campaign worked.

Common cases

Questions

Frequently asked questions

Are the codes guaranteed unique?

Within one batch, yes: every code is checked against the ones already made and regenerated on a collision. Across separate batches a clash is theoretically possible, so either generate everything you need in one go or separate batches by prefix: NY26-, SALE-, BF-.

Why are O, I, S and some others removed?

A promo code gets read off a screen, dictated over the phone and typed from a receipt. Zero and the letter O, one and I, five and S are indistinguishable in most fonts, and every such pair turns into a support ticket. By default we keep 32 unambiguous characters, which is plenty.

What does “chance of guessing a code” mean?

The ratio between the codes you issued and all possible combinations. If it is too high, a bot will find a working code by hammering your checkout form, and your discount ends up on deal-hunting forums. Keep the odds no better than one in a million: either lengthen the code or issue fewer of them.

How do I import the codes into a shop?

Export the CSV: it opens in Excel without the import wizard and holds columns for the code, discount, expiry date and usage limit. Most platforms accept such a file; rename the columns if your system expects different headers.

Can the codes be real words instead of random letters?

Meaningful words are easy to guess and often already used by someone else’s campaign, so we do not produce them. The compromise is a readable prefix plus a random tail: SALE-7K4M-92QX. A human sees the meaning, a bot still cannot guess it.

Next

Other tools

Copied