Victoria Day (Canada) date
Enter a year to get the date of Victoria Day in Canada, the Monday on or before 24 May: in 2026 it falls on 18 May. Plan the long weekend, staff rotas and school calendars ahead. 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
- Month
- 5
- Day
- 18
- ISO date
- 2026-05-18
- Weekday
- 1
Canadian Victoria Day: Monday on or before 24 May. Search intent: victoria day canada date. No network calls or random seeds are required. Failed jobs are not billed.
How the Victoria Day date is worked out
Victoria Day in Canada does not have a fixed date. The rule is simple: it is the Monday that falls on or before 24 May. To find it, start from 24 May of the year you want. If that day is a Monday, it is Victoria Day. If not, count back day by day until you reach the previous Monday. Because a week has seven days, the holiday always lands between 18 and 24 May. In 2026, for example, 24 May is a Sunday, so the calculator steps back six days and returns Monday 18 May 2026.
Mistakes to avoid when planning the long weekend
The most common slip is to count forward and pick the first Monday after 24 May. The rule only looks backward, so the date can never be later than 24 May. The other trap is treating 24 May as the holiday every year, when it is only Victoria Day if it falls on a Monday. The result depends on nothing but the year you enter, with no network calls, so the same year always gives the same date for school calendars, staff rotas or event planning.
What you can do with it
Teaching
Pinned goldens.
FAQ
When is Victoria Day in 2026?
Victoria Day 2026 falls on Monday 18 May. It is the Monday on or before 24 May, and in 2026 that day is a Sunday, so the holiday moves back six days.
Between which dates can Victoria Day fall?
Always between 18 and 24 May. The rule takes the Monday on or before 24 May, and since a week has seven days, that Monday can be at most six days earlier.
What happens when 24 May is a Monday?
Then 24 May itself is Victoria Day. The rule says on or before, so the calculator only steps back when 24 May falls on another day of the week.
Does the result change with my device or connection?
No. The date depends only on the year you enter. The calculation needs no network calls, so the same year always returns the same Monday in May.
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/victoria-day-ca \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026}'const res = await fetch("https://api.kit.forhosting.com/date/victoria-day-ca", {
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/victoria-day-ca",
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/victoria-day-ca", 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/victoria-day-ca", 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.victoria_day_ca",
"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
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
How it works
Canadian Victoria Day: Monday on or before 24 May. Find Monday ≤ 24 May. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
Inputs, limits and rounding
Optional decimals use half-up once. Outputs echo inputs. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
When to use it
Use when search intent matches. Canadian Victoria Day: Monday on or before 24 May. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.
Integration use cases
Quick check
Free widget.
Automation
Same JSON via API.
Technical questions
Free?
Yes tier A.
Network?
No.
Bad input?
invalid_input.
API?
Yes.
Locales?
EN-only; Nitro hydrates.