How it works
Exactly what happens when you press Generate, written from the scheduler's actual rules.
The short version
You give Snack Sched a list of dates, a list of names, and the number of slots per date (one for snacks, or two for snacks and drinks). It assigns people to each date so that everyone's total number of turns is the same or off by one, and nobody goes twice in a row as long as there are at least two names per slot. All of this runs in your browser. Nothing is sent to a server.
Step 1: Cleaning the inputs
Before scheduling, the tool tidies what you typed:
- Names. Extra spaces are collapsed and blank lines are dropped. Duplicate names are removed without regard to capitals, so "The Garcias" and "the garcias" count as one entry; the first spelling you typed is kept.
- Dates. Only valid calendar dates are kept, duplicates are removed, and the list is sorted from earliest to latest. You can build dates from a start and end date plus chosen weekdays, add single dates, or paste a list. Pasted dates can be one per line or separated by commas or semicolons, in formats such as 2026-03-07, 3/21/2026, 3/21/26, March 14, 2026, Mar 14, 2026, or 14 March 2026. The comma inside a long date like March 14, 2026 is kept with the date, so it is not split in two.
- Slots. You can pick one or two slots per date. If you ask for more slots than you have names, the number of slots is reduced to the number of names, because one person cannot fill two slots on the same date.
Step 2: A repeatable starting point
The scheduler builds a fingerprint from your names (sorted alphabetically), your dates, and the slot count, and turns it into a number called a seed. The names are also put in alphabetical order before scheduling begins. That means the same names, dates, and slots always produce the same schedule, and typing the names in a different order does not change it.
Step 3: Choosing who serves on each date
The tool walks through the dates in order. For each date it picks as many people as there are slots, using these rules in priority order:
- Fewest total turns so far comes first. This is what keeps everyone within one turn of each other.
- Among people tied on turns, anyone who served on the previous date goes to the back of the line.
- Among those still tied, whoever served longest ago goes first, and remaining ties are broken by a seeded random draw made fresh for each date. That draw keeps the same two people from being paired over and over.
Step 4: Placing people in slots
With two slots, the two chosen people are then placed into slot 1 and slot 2 so that each person's turns are spread across both slots as evenly as possible. Overall fairness always wins: per-slot balance is a secondary goal, so individual slot counts can occasionally differ by more than one while total turns stay within one.
Counts within one
Because every date goes to the people with the fewest total turns, nobody can pull two turns ahead of anyone else, in one-slot or two-slot mode. With 12 families and 10 dates, ten families go once and two do not go. With 7 families, 12 dates, and two slots, there are 24 turns, so three families go four times and four go three times. The summary under the schedule shows each person's count so you can check it yourself. The tool's built-in tests check this across every combination of 2 to 12 names, 1 to 20 dates, and one or two slots.
When back-to-back turns can happen
Nobody is assigned on two consecutive dates as long as there are at least two names for every slot: at least 2 names with one slot, or at least 4 names with two slots. Below that, repeats are unavoidable. For example, with 3 names and two slots, two of the three people must serve on every date, so someone always repeats from the previous date. In that case the tool still fills every slot and keeps totals within one.
Reshuffle
If you do not like the order, press Reshuffle. It picks a new seed, which produces a different starting order while keeping all of the same fairness rules. You can reshuffle as often as you like, for example to move a family away from a date you know is a problem.
Share links
When a schedule is generated, the page address updates with a hash after the # sign. That hash contains the season name, dates, names, slot labels, and seed, encoded compactly. Anyone who opens the link sees the same schedule. The part after the # is not sent to the web server when the page loads; it stays in the browser. Keep in mind that the link itself contains the names, so share it only with people who should see the schedule.
Copy, CSV, calendar, and print
Once you have a schedule you can:
- Copy it as plain text to paste into a group chat or email.
- Copy it as CSV to paste into a spreadsheet.
- Download a .ics calendar file with one all-day event per date, which most phone and desktop calendars can import.
- Print it, with the form and buttons hidden so the page fits a clean sheet.
Using the form
The Generate, Reshuffle, and Clear buttons sit in a bar that stays pinned to the top of the form while you scroll through dates and names. On phones, where the schedule appears below the form, the page scrolls down to the finished schedule after you press Generate.
Your draft is saved on this device
Snack Sched saves your current draft in your browser's localStorage, so you can close the tab and come back to it on the same device and browser. Clear removes the saved draft. If you open a share link, the link's schedule takes priority over the saved draft.
Nothing is uploaded
There is no account, no login, and no database. The names and dates you type are processed by JavaScript running in your browser. Read the privacy page for details about hosting, tips, and advertising cookies, or head back to the scheduler to build a rotation. For planning advice beyond the tool, see the guides.
Last updated 10 October 2026.