Whit Monday date calculator
Whit Monday is a movable Christian observance, so its calendar date changes whenever Easter changes.
Run — free
This calculator accepts one Gregorian year, computes Easter Sunday with deterministic integer arithmetic, locates Pentecost Sunday forty-nine days later, and returns Whit Monday on the following day. The result includes an ISO date, readable calendar fields, and both feast dates used as anchors. It does not consult a holiday database, current clock, timezone, locale, or network service, so a valid year always produces the same answer everywhere.
Why Whit Monday moves each year
Whit Monday, also called Pentecost Monday, belongs to the cycle of movable Christian observances determined by Easter. Pentecost Sunday occurs on the fiftieth day of the Easter season when Easter itself is counted as day one. In ordinary elapsed-date arithmetic, Pentecost is therefore forty-nine days after Easter Sunday, and Whit Monday is fifty days after Easter. Because Gregorian Easter can fall between late March and late April, Whit Monday consequently falls between May and June instead of occupying a fixed calendar date. The calculator begins with the requested year and applies the established Gregorian computus to find Easter. It then advances through the actual month lengths until it reaches Pentecost and the following Monday. No table of published holidays is involved. This rule-based approach is especially useful for future schedules and validation because it is reproducible and exposes the Easter and Pentecost anchors alongside the final answer. You can see exactly which dates produced the result rather than trusting an unexplained lookup.
How the deterministic calculation works
Provide a whole-number Gregorian year from 1 through 9999. The algorithm derives Easter using modular integer operations, then adds fifty calendar days while respecting the length of each intervening month. The main result uses YYYY-MM-DD, an unambiguous format that remains suitable for APIs, spreadsheets, database imports, and calendar generators. Separate month, day, month-name, and weekday fields make the response convenient for human-facing templates. For verification, the response also reports Pentecost Sunday and Easter Sunday, plus the exact fifty-day elapsed interval. A quick check is to advance seven complete weeks from Easter to Pentecost, then one additional day to Monday. The implementation never creates a JavaScript Date object. Consequently, local midnight behavior, daylight-saving changes, runtime timezone configuration, and historical timezone data cannot move the answer forward or backward. Missing, fractional, textual, infinite, and out-of-range years are rejected explicitly instead of being rounded, parsed loosely, or replaced with the current year. The input year is the only fact used.
Planning with the returned date
The result can support church calendars, school timetables, publication schedules, travel planning, payroll preparation, and tests of other holiday datasets. An application can request the date for each planning year, retain the returned Easter and Pentecost fields as an audit trail, and place Whit Monday into its own calendar rules. The capability answers a deliberately narrow question: the traditional Gregorian date immediately following Pentecost Sunday. It does not decide whether Whit Monday is a public holiday, a working day, or an officially observed day in a particular country, state, church, employer, or institution. Those policies vary and can change independently of the ecclesiastical date. Consumers should combine this deterministic result with an authoritative local policy source before making legal, staffing, payment, or closure decisions. The calculation itself needs no external service and stores no holiday table that could become stale. An API request costs $0.002, while the browser path uses the same pure calculation. That shared logic makes the capability appropriate both for a single manual check and for repeatable automated calendar generation.
What you can do with it
Build an annual church calendar
Generate Whit Monday from a year and retain the Easter and Pentecost anchors for review.
Validate a holiday dataset
Compare a supplied Whit Monday entry with a deterministic Gregorian calculation before publishing it.
Prepare future schedules
Insert the movable date into planning workflows without relying on a timezone-sensitive date library or holiday API.
FAQ
How is Whit Monday calculated?
The calculator finds Gregorian Easter Sunday and advances 50 elapsed calendar days, which is the Monday immediately after Pentecost Sunday.
Is Whit Monday the same as Pentecost Monday?
Yes. Whit Monday is another name for Pentecost Monday, the day following Pentecost Sunday.
Does the result depend on my timezone?
No. The calculation uses integer calendar arithmetic and does not use a clock, Date object, timezone, locale, network, or randomness.
Does this tell me whether Whit Monday is a public holiday?
No. It computes the ecclesiastical date only. Public-holiday and workplace rules depend on the applicable jurisdiction and institution.
What does an API request cost?
Each API request costs $0.002. The browser version runs the same deterministic logic locally.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/date/whit-monday \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026}'const res = await fetch("https://api.kit.forhosting.com/date/whit-monday", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"year": 2026
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/whit-monday",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"year": 2026
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/whit-monday", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"year":2026}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"year":2026}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/whit-monday", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"year": 2026
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.whit_monday",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |