Palm Sunday date
Palm Sunday 2026 falls on 29 March, exactly seven days before Easter on 5 April. Type any year and get the Western Palm Sunday date for Holy Week calendars, school breaks or seasonal planning. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Year
- 2,026
- Date
- 2026-03-29
- Month
- 3
- Day
- 29
- Month name
- March
Palm Sunday is the Sunday immediately before Easter Sunday in the Western Christian calendar. Because Easter moves every year under the Gregorian ecclesiastical rule, Palm Sunday moves with it, landing anywhere from mid-March through mid-April. Planners who need Holy Week calendars, procession schedules, school breaks, or retail promotions cannot rely on a fixed calendar date. This capability takes a single Gregorian year, computes Easter with the Anonymous Gregorian algorithm, steps back exactly seven days with pure integer arithmetic, and returns Palm Sunday as an ISO-8601 date plus month and day components — fully deterministic, UTC-independent, and free of network or system-clock side effects.
How Palm Sunday is defined from Gregorian Easter
In churches that follow the Gregorian calendar, Easter Sunday is the first Sunday after the ecclesiastical full moon on or after 21 March. Palm Sunday is not an independent astronomical event: it is defined as the Sunday that opens Holy Week, exactly one week before that Easter Sunday. Practically, once you know Easter for year Y, Palm Sunday is always Easter minus seven calendar days in the same Gregorian year.
Easter itself always falls between 22 March and 25 April inclusive, so Palm Sunday always falls between 15 March and 18 April. When Easter is early in April (1–7 April), the seven-day backstep crosses into late March; when Easter is later in April or in March, Palm Sunday stays in the same month. Two callers with the same year always receive the same ISO string, which makes the answer safe to cache, assert in tests, and publish in multi-year holiday tables without drift.
Where Palm Sunday dates fit into real scheduling work
Palm Sunday anchors Holy Week: processions, special liturgies, choir rehearsals, school and parish calendars, tourism campaigns, and retail promotions often start on that Sunday or the days immediately after. Public holiday tables in many regions also need related movable dates — Good Friday, Holy Saturday, Easter Sunday, Easter Monday — all of which can be derived once Palm Sunday and Easter are known.
Feed this capability a range of years in a loop or through a batch wrapper, store the ISO Palm Sunday dates, and offset by fixed day counts for the rest of Holy Week when your product needs them.
What you can do with it
Parish and diocese Holy Week calendars
Publish procession times, Mass schedules, and volunteer rosters for Palm Sunday and the rest of Holy Week without hand-editing moon tables each year.
School and municipal break planning
Generate multi-year tables of Palm Sunday and Easter-related breaks for academic calendars, public services, and community events.
Retail and tourism seasonal campaigns
Anchor promotions, staffing, and visitor messaging to the correct Palm Sunday weekend across markets that observe Western Holy Week.
FAQ
How do I get the Palm Sunday date for a year?
The response includes date as an ISO string such as 2026-03-29 plus month and day fields.
How is Palm Sunday related to Easter?
Palm Sunday is always the Sunday exactly seven days before Gregorian Easter Sunday.
Does this return Orthodox Palm Sunday?
Orthodox paschal dates use a different computus and are out of scope here.
What are the earliest and latest dates for Palm Sunday?
It always falls between 15 March and 18 April. Western Easter moves between 22 March and 25 April, and Palm Sunday is always one week earlier, so it moves with it.
Can I work out the rest of Holy Week from Palm Sunday?
Yes. Holy Week starts that Sunday, Good Friday and Holy Saturday fall later in the same week, and Easter Sunday comes seven days after it. The result also shows the Easter date for checking.
Related tools
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/palm-sunday \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026}'const res = await fetch("https://api.kit.forhosting.com/date/palm-sunday", {
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/palm-sunday",
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/palm-sunday", 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/palm-sunday", 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.palm_sunday",
"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. |
Technical notes
How to call the endpoint and read the response
Send a JSON body with a single required field, year, as an integer from 1 through 9999. The service rejects missing years, non-integers, values below one, and values above 9999 with an invalid_input error so bad payloads never produce a silent wrong date. On success the response includes date as a full ISO calendar string (YYYY-MM-DD) for Palm Sunday, plus year, month (3 for March or 4 for April), day of month, and month_name for human-readable display. For auditability it also returns easter_date, easter_month, and easter_day so you can verify that Palm Sunday is exactly seven days before the related Gregorian Easter. There is no optional calendar switch and no Julian or Orthodox mode: this endpoint is dedicated to Western Gregorian Palm Sunday so product and SEO intent stay clear. Pricing is a flat $0.002 per successful request under the published item unit; failed validation is not charged. Use the free in-browser tool for one-off checks, and the API when you need the same contract inside a batch job, a liturgy planner, or a multi-year Holy Week generator.
Technical questions
What years are accepted?
Any integer year from 1 through 9999. Values outside that range, non-integers, and missing year fields return invalid_input.
How much does the Palm Sunday date API cost?
The browser tool is free for interactive use. The API charges the published base price of $0.002 per successful request from your prepaid balance; invalid input is not charged.