Discover's prefixes are the most fragmented of any network.
Most networks use one clean prefix range. Discover uses four separate blocks of different widths — which is exactly why partial Discover support is such a common bug.
Discover's Number Structure
| Property | Value |
|---|---|
| Prefix block 1 | 6011 |
| Prefix block 2 | 622126–622925 |
| Prefix block 3 | 644–649 |
| Prefix block 4 | 65 |
| Length | 16 digits |
| Security code | 3-digit CID, printed on the back |
Four Blocks, Four Different Widths
This is what makes Discover uniquely error-prone to validate correctly: two of its blocks are four digits wide (6011, and 644 through 649 as a range), one is two digits wide (65), and one is a genuinely six-digit block (622126 through 622925). A validation rule written to handle one block cleanly tends to silently miss the others — and the six-digit block in particular gets omitted most often, since it requires checking more leading digits than the other three blocks do.
That six-digit block exists because of a co-branding partnership: it's shared with China UnionPay, reflecting Discover's global acceptance network agreements rather than being a purely internal Discover range.
Discover Global Network
Worth knowing for context: Discover cards are accepted more broadly than the "Discover" brand name alone might suggest, through reciprocal acceptance agreements under the Discover Global Network — including Diners Club International and China UnionPay. This is part of why Discover's own numbering has grown more fragmented over time, rather than staying to a single clean block the way Visa has.
Generating Discover Test Numbers
Select Discover from the Card Network dropdown above — Luhnly's generator draws from the primary 6011, 644–649, and 65 blocks. If your validation logic specifically needs to handle the six-digit UnionPay co-branded block (622126–622925) as well, build a dedicated test case for that range directly, since it's a narrower and more specific slice than general Discover testing usually covers.
Related Guides
Frequently Asked Questions
Why does Discover have so many separate prefix blocks?
Partly historical accretion of its own ranges (6011, 644-649, 65), and partly due to co-branding and acceptance partnerships — the 622126-622925 block specifically is shared with China UnionPay as part of Discover's global network agreements.
Is the 622126-622925 block commonly missed by validators?
Yes — it's the most frequently overlooked Discover block, since it requires matching six leading digits rather than the shorter four-digit or two-digit checks that cover the other three blocks.
Does Luhnly's generator cover all four Discover blocks?
It draws from the three primary blocks (6011, 644-649, 65). The narrower six-digit UnionPay co-branded block is specific enough that it's worth a dedicated test case if your integration needs to handle it specifically.