To create a date list in Google Sheets, generate the sequence in the Date List Generator using a start date, end date, and whole-day step, then paste the one-per-line output into column A — the tool produces strict YYYY-MM-DD calendar dates on the timezone-free proleptic Gregorian calendar and accepts up to 10,000 rows. The whole list runs in your current browser tab, so nothing is uploaded, and the calendar math never shifts by a day when your computer is in another time zone. Google Sheets recognizes pasted dates as text until you format the column as Date, after which every entry is a real calendar value you can sort, filter, and reference from formulas. Because the generator enforces the same YYYY-MM-DD shape used by HTML date inputs and ISO 8601 calendar dates, you get clean inputs that paste reliably into Sheets, content plans, journal templates, payroll workbooks, and test fixtures without surprise rollovers such as April 31 silently becoming May 1.

Inputs, Format, and Limits
The Date List Generator takes three required inputs and one optional toggle:
- Start date (YYYY-MM-DD) — the first date in the sequence. Must be a real calendar date on the proleptic Gregorian calendar, with a four-digit year from 0001 to 9999.
- End date (YYYY-MM-DD) — must be the same as or later than the start. A descending range is rejected outright.
- Day step (1 through 366) — a whole number of days added each iteration. Step 1 lists every eligible date, step 7 lists a weekly sequence, and a custom value such as 3, 5, or 14 creates a regular interval.
- Weekday names (optional) — adds a fixed English name such as "Monday" to each line. The sequence itself is unchanged.
Before generating, the tool counts the result with the formula floor((endOrdinal − startOrdinal) / step) + 1 and rejects any request that exceeds 10,000 dates with no partial output. That single rule is the most important limit to remember: long ranges with a small step (such as thirty years of daily rows) fail cleanly instead of returning a truncated list with an ellipsis or a missing final page.
Each date is validated against the real length of its month, so January 31 is valid, April 31 is not, and February 29 exists only in leap years. The leap-year rule matches the Gregorian rule used for HTML date values: divisible by 4, except divisible by 100, unless divisible by 400 — so 2000-02-29 is valid and 1900-02-29 is not. The generator never relies on a browser silently normalizing an impossible date.
Generate and Paste a Date List Into Google Sheets
- Open the Date List Generator and type the start date in YYYY-MM-DD form (for example, 2024-01-01).
- Type the end date in the same YYYY-MM-DD form, making sure it is the same as or later than the start (for example, 2024-01-31).
- Enter a whole-number day step. Use 1 for a daily list, 7 for a weekly list, or any integer from 1 through 366 for a custom interval.
- Toggle weekday names on if you want each line to show the day of the week, then press Generate.
- Read the summary line — it states the count and whether the chosen step landed exactly on the end date.
- Select the result in the read-only text area, or click Copy if your browser allows clipboard access, and paste into column A of your Google Sheet.
- In the sheet, select column A, choose Format → Number → Date, and confirm the dates display in your preferred layout.
If clipboard permission is denied, the read-only text area is always selectable by hand. All parsing, counting, and formatting happen inside your current browser tab, and no date range is uploaded or stored by the widget.
Picking a Day Step for Your Workflow
The day step is the only knob that controls how dense the list is. The table below maps common steps to the workflows where they tend to fit in Google Sheets.
| Day step | Typical Sheets use case |
|---|---|
| 1 | Daily habit tracker, journaling log, attendance sheet |
| 2 | Every-other-day reminder rows, alternating schedule |
| 3 | Sprint check-in cadence (approximate) |
| 5 | Workweek-only cadence with a weekly offset |
| 7 | Weekly standup rows, content publishing schedule |
| 14 | True biweekly cadence |
| 30 | Approximate monthly cadence — see note below |
A step of 30 produces a 30-day interval, not a calendar month, so it drifts off the same day of the month over time. When you need true month or year arithmetic (for example, "the last Friday of each month"), use a tool built around calendar-month overflow instead — the Date List Generator does not offer month or year steps because dates such as January 31 or February 29 need a separate rule.
Worked example with start 2024-01-01, end 2024-01-31, and step 7:
- Ordinal difference: 30 days (the last ordinal of January 2024 is 31, so 31 − 1 = 30).
- floor(30 / 7) + 1 = floor(4.28) + 1 = 4 + 1 = 5 dates.
- Sequence: 2024-01-01, 2024-01-08, 2024-01-15, 2024-01-22, 2024-01-29.
- End date (2024-01-31) is not included, because 1 + 4 × 7 = 29, not 31. The summary line will state that the end was not reached.
That behaviour is identical across browsers and time zones because the tool works on calendar-day ordinals rather than timestamps.
Adding Weekday Names to Each Row
Toggle weekday names on when the day of the week matters — content calendars, weekly invoices, recurring shift schedules, payroll-by-week grids. Names use fixed English strings (Monday through Sunday) with Monday as the first ISO weekday, derived from the same calendar ordinal that produces the date. Identical inputs therefore produce identical copyable output on every device, which matters when several collaborators paste the list into different Sheets.
Adding weekday names changes only the displayed line, not the sequence. If you need the weekday in a separate column for filtering, paste the two-column output into Sheets and split it with Data → Split text to columns, or split inside Sheets with a SPLIT formula.
Fixing Common Date Errors
The most common reason a request fails is a malformed date. Things to check:
- Year has the right number of digits. The tool requires four digits, so 24-01-01 is rejected and 0024-01-01 is accepted.
- Month and day are zero-padded. 2024-1-1 must be entered as 2024-01-01.
- The end is not before the start. A descending range is rejected outright.
- The day exists in that month. April 31, February 30, and February 29 in non-leap years are rejected — the generator never relies on a browser silently rolling the date over.
- The result fits in 10,000 rows. If your range and step would produce more than 10,000 dates, the tool reports the calculated count and returns nothing; widen the step or shorten the range.
When the date itself is correct but the result still looks short, the cause is almost always the step landing just past the end. Read the summary line: it states whether the end date was reached, which is the only signal you need to decide whether to add a manual row, change the step, or shorten the range.
What the Generator Does Not Cover
The Date List Generator is intentionally narrow. It is not an appointment scheduler, business-day calculator, holiday calendar, recurrence engine, or time-zone converter. It does not know opening hours, market sessions, religious calendars, school calendars, regional holidays, leap seconds, or a user's location, and it does not skip weekends or remove public holidays. A daily list is not proof that every listed day is available or operational, so review the sequence against the rules of the destination system before importing — especially when deadlines, payroll, travel, finance, or legal obligations are involved.
If your task is uniform random sampling across a date range rather than a fixed sequence, use the Random Date Generator instead, which produces independently drawn dates without daylight-saving drift. For authoritative reference on the YYYY-MM-DD shape and the proleptic Gregorian calendar, see the WHATWG HTML Standard — Dates.