When2meet

when2meet.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

A grid where everyone paints the times they are free, and the overlap shows the best slot — no accounts, no email, nothing but a link.

Promptfree, for everyone, and the only version there is
Build me the group availability grid that replaces When2meet: everyone paints when they are free, and the overlap is obvious.

Read this first: the original is free, has no accounts, and has worked unchanged for twenty years. Nothing here saves money. The reasons to build it are that you want it on your own domain, in your own language, without its interface — and that it is genuinely a weekend, which makes it a good first project. What you cannot replicate is that everyone already knows the URL.

STACK
- Node 20+ with Fastify, server-rendered HTML with a little vanilla JS
- SQLite through better-sqlite3, WAL mode
- Caddy in front

THE ONE RULE
- No accounts. No email required. No confirmation step. A name and a grid
- The moment somebody is asked to register, the tool has lost the only thing it has. Every feature below is subordinate to this
- The organiser creates it in one form and gets a link. Everyone else opens the link and paints

THE DATA MODEL
- events: id, token, admin_token, title, timezone, kind, dates_json, start_minute, end_minute, slot_minutes, created_at, expires_at
- participants: id, event_id, name, name_lower, password_hash, edit_token, created_at, updated_at
- availability: participant_id, slot_index, level — one row per participant per available slot, or a packed bitmap per participant if you prefer; either is fine at this scale
- Slots are computed from the event's definition rather than stored as rows. A slot index plus the definition gives an instant, and that keeps the table tiny

TIME, WHICH IS THE ONLY REAL DIFFICULTY
- The event has a home time zone. Every slot index maps to a UTC instant through that zone and the event's date list
- Each participant sees the grid in their own browser's zone, with the conversion done on display and never in storage
- A group across three continents is the case this tool exists for, so it must be right. If the grid is drawn in local time and stored in local time, an event spanning a daylight-saving change will have a missing or duplicated hour and nobody will understand why
- Test with an event that crosses a spring-forward and an autumn-back day, and one where participants are in zones on either side of the date line
- Two kinds of event: specific dates, or days of the week for a recurring arrangement

PAINTING THE GRID
- Click and drag to paint available, drag again to erase. That is the entire interaction and it must feel immediate
- Works with a finger: touch and pointer events on one code path, with the page not scrolling while painting
- Optionally three levels — free, if need be, unavailable — which is genuinely more useful than two, but default to two because a third choice slows everybody down
- Saved as you paint, with no save button, and a clear indicator that it is saved
- Returning with the same name and the optional password lets you edit; a stored edit token in the browser does the same without one

THE OVERLAP
- The group grid beside your own, shaded by how many people are free
- Hovering a slot lists who is free and who is not. That list is what actually decides the meeting, so make it clear and readable rather than a tooltip that vanishes
- The best slots highlighted, defined as the most people available for a contiguous run of the required length — not just the single best cell, because a meeting takes an hour
- A count at the top: how many have responded, and who has not

FINISHING
- The organiser can mark a slot as chosen, and the page then shows the decision at the top
- Everyone who left an email — optional, always — is told
- An ICS download and hand-built add-to-calendar links, no third party
- The page stays at the same URL forever, because people go back to it

ACCESSIBILITY
- The grid must be usable without dragging: keyboard navigation with arrows and space to toggle, and a plain form fallback listing slots with checkboxes
- A drag-only interface excludes people who cannot use a pointer precisely, which is a lot of people, and this tool is meant for everyone in a group

WHAT NOT TO ADD
- Accounts, notifications, integrations, a mobile application, a paid tier
- Every one of them makes it worse. The reason this format survived twenty years unchanged is that nobody added anything

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, HASH_SALT
- Migrations on boot, each once
- Tokens long and random, compared in constant time
- An expiry so events are eventually cleaned up, stated on the page
- Nightly backup, restore script
- Health endpoint

WHAT MATTERS MOST
Time zones and the painting interaction. Get instants right and make dragging feel instant on a phone, then send the link to five people in three countries and see whether anybody has to ask a question. If they do, remove something.

Give me the repository, migrations, .env.example, a seed event, and a README with deploy steps behind Caddy.

What you lose

  • A tool so simple that people actually use it, which is harder to design than to build
  • Twenty years of a URL people remember
  • Zero maintenance on your side

If you would rather not build

  • A shared calendar with free-busy, which is free
  • A group chat, which is how most of these end anyway

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$0/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Rallly

$0

Self-hosted scheduling polls with time zone handling.

lukevella/ralllyfree · open source

Framadate

$0

Open date polling with no accounts required.

framasoft/framadatefree · open source

Why this verdict

our own opinion · changed only by a person

92/100

Verdict yes at 92, and it is free — build it only to own the design. The keyboard alternative to dragging is the part worth doing properly.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about When2meet

answered from the record above

Is When2meet free?

No — the plan we track is $0 a month. Free with no accounts and no paid tier; it is on this list as a benchmark rather than for its price.

Can you replace When2meet by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 92 out of 100, build time one session. Read what you lose before you decide.

How much does When2meet cost?

$0 a month on Free — $0 a year. Recorded 10 Aug 2026.

What do you lose by replacing When2meet?

A tool so simple that people actually use it, which is harder to design than to build; Twenty years of a URL people remember; Zero maintenance on your side. If any of those carry weight for you, keep paying.

Is there an open-source alternative to When2meet?

Yes: Rallly, Framadate. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 14 in Scheduling

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc