Random Date Generator — Pick a Random Date in Any Range

Pick a random date from any range — optionally restricted to weekdays or weekends only.

How to use the random date generator

  1. Set a start date and end date for your range.
  2. Optionally restrict to weekdays only or weekends only.
  3. Click Pick a random date for an unbiased result.

Common uses

Teams use a random date to schedule a surprise team event without anyone picking favorites. Writers and game designers use it to generate believable random dates for stories or test data. "Someday" projects — a random date this year to finally try that new hobby or restaurant — turn a vague intention into a concrete plan. And developers use it to spot-check date handling code with genuinely random inputs instead of the same few hardcoded dates.

How the weekday and weekend filters change the odds

Without a filter every day in your range is equally likely, so roughly two days in seven come back as a weekend. Restricting to weekdays does not simply skip Saturdays and Sundays and shift along — it redraws from the weekday-only pool, so each of Monday to Friday keeps an equal chance. That matters if you are picking a date for something that must land on a working day: filtering gives you a clean, unbiased weekday, where re-rolling by hand until you get one tends to produce whatever day you were secretly hoping for.

Random dates as test data

Date handling is one of the most reliably broken parts of any codebase, and the reason is that developers test with the same three hardcoded dates. Random dates across a wide range flush out the cases nobody wrote a test for:

  • 29 February. Leap years break naive year arithmetic — "one year from 29 Feb 2024" has no obvious answer.
  • Month ends. Adding one month to 31 January is ambiguous in most date libraries, and they do not all agree.
  • Daylight saving boundaries. In many time zones, one day a year has 23 hours and another has 25. Code that assumes 86,400 seconds per day fails twice a year.
  • Year boundaries. ISO week numbers around 31 December belong to the following year surprisingly often.

Set a range spanning several years and draw a few dozen dates — it takes a minute and finds more bugs than a careful reading of the code usually does.

Picking a date when nobody wants to choose

Scheduling a team social, a retrospective or a surprise event invites endless negotiation, and the person who proposes a date ends up owning everyone's objections to it. Drawing one at random inside an agreed window removes that: the range is the decision everyone makes together, and the specific day is nobody's fault. Keep the range tight — one month, weekdays only — or you will draw something far enough away that it never happens.

Everyday uses

  • "Someday" lists. Draw a date in the next three months and commit the thing you keep postponing to that day.
  • Historical rabbit holes. Draw a date in the last century and read what happened on it.
  • Writing and games. Believable dates for character birthdays, letters and documents, without defaulting to the first of the month.
  • Sampling. Spot-checking records, audits or backups on genuinely random days rather than convenient ones.

Need a time rather than a date, or a plain number in a range? The random number generator covers both. To choose between a shortlist of specific dates instead of a whole range, put them on the wheel spinner.

Frequently asked questions

How is the date picked?

Uniformly at random from every calendar day in your chosen range, including both the start and end dates.

Can I limit results to weekdays or weekends only?

Yes — switch the "Day type" option to Weekdays only or Weekends only and the draw will keep retrying until it lands on a matching day.

What is this useful for?

Picking a random due date for a challenge, scheduling a surprise event, choosing a random day to try something new, or generating sample dates for testing.

Is there a limit on the date range?

No practical limit — pick any start and end date, even decades apart.

More random generators