Expiry Date Generator

Generate future MM/YY expiry dates for testing. Not real cards.


How this tool works

An expiry date generator produces future dates in the formats a card record expects. It is a small tool, and it exists because expiry dates are a nuisance to construct by hand: they have to be in the right format, in the future, and often consistent with a test card number's brand.

The formats matter more than they look. A card record stores the expiry as two digits for the month and two for the year, in MMYY form, and the year is only two digits, so a date is ambiguous until 2029. A track record uses YYMMDD. A payment form usually wants MM/YY. Getting the format wrong is the most common cause of an expiry being rejected for being in the past when it is not.

Expiry formats

ContextFormatExample
Card recordMMYY, two digits1229
Track 2 dataYYMMDD, four digits291231
Payment formMM/YY, two digits12/29
Human readableMMM YYYYDec 2029

The year is two digits in every card context, and 00 is the convention for a record with no expiry.

When to use it

Frequently asked questions

What format does a card expiry use?

Two digits for the month and two for the year, MMYY. A track record uses YYMMDD instead, and a payment form usually shows MM/YY.

Why is the year only two digits?

Because the field is fixed width. It also means the year is ambiguous until 2029, and an implementation has to reject anything that has already passed rather than guess.

What does 00 mean in an expiry date?

No expiry, which is the convention for a record that does not carry one, as distinct from a card that expired in 2000.

Can I use a generated date in a real transaction?

No. A real card's expiry belongs to a real account, and a generated one will not match the issuer record.

What is the earliest valid expiry for a new card?

Usually the current month, so the card is valid from the first day of the month it was issued.

Related tools

Related guides