Random Date Generator
A real calendar date between two bounds — leap years included.
Generating a random date properly means respecting the calendar: 31 April does not exist, and 29 February only exists in leap years. Converting a random day offset to a date handles both automatically, which is why this page works in day offsets rather than picking year, month and day separately.
The output is in ISO 8601 (YYYY-MM-DD), the format that sorts correctly and is unambiguous across locales. A second line shows the weekday, since that is usually the next thing you need.
How to use it
- Set the start and end date.
- Generate one or several dates.
- Copy in ISO format for spreadsheets and databases.
Why not pick year, month and day independently
Picking each component uniformly produces dates that are not uniformly distributed: it over-represents short months and creates impossible days that then have to be rejected. The rejection approach is common and it biases the result towards the middle of the year.
Working from a random day offset since the epoch sidesteps both. Every day in the range maps to exactly one offset, so the distribution over days is flat by construction, and leap years are just days like any other.
Reviewed 2026-10-21. This tool runs entirely in your browser — no server, no account, and nothing you generate is stored.
Frequently asked questions
Does it include the start and end dates?
Yes. The offset range covers every day from the start date to the end date inclusive.
Can I get dates in another format?
The copy button gives ISO. For DD/MM/YYYY or MM/DD/YYYY, the alphanumeric and format tools are better suited; this page deliberately stays unambiguous.
Are leap days possible?
Yes, if the range includes one. 29 February is a normal day in the offset calculation, so it appears with the correct frequency.
Related tools
More from Random numbers.