MLK Day date calculator
Enter a year and get the date of Martin Luther King Jr. Day, the third Monday of January: in 2026 it falls on January 19. Ready for leave calendars, school closures and payroll cutoffs. 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-01-19
- Name
- Martin Luther King Jr. Day
- Weekday
- Monday
Martin Luther King Jr. Day is a United States federal holiday observed on the third Monday of January. Schedulers, HR systems, school calendars, payroll cutoffs, and travel planners all need that date without hunting a holiday table each year. This capability takes a single civil year and returns the ISO date of MLK Day using the fixed federal weekday rule—no scraped calendars, no network, and the same answer every time for the same year.
What MLK Day is and why the date moves
Martin Luther King Jr. Day commemorates the civil rights leader and is a federal public holiday in the United States. Unlike fixed-date holidays such as Independence Day on July 4, MLK Day is defined as the third Monday of January.
That rule means the civil date slides between January 15 and January 21 depending on how the month aligns with the week. Federal observance began in 1986; many states and employers now treat it as a paid day off, a school closure, or a reduced-service day for banks and government offices. Product teams that build calendar widgets, leave-request tools, delivery ETAs, or market-hours banners therefore need a deterministic answer for any planning year, not a one-off lookup for the current year only.
How the calculation works and what you get back
The algorithm is pure calendar arithmetic on the proleptic Gregorian calendar in UTC. Given year Y, it finds the first day of January, determines that day's weekday, then advances to the first Monday and adds fourteen days to reach the third Monday. The result is returned as YYYY-MM-DD together with the year, a stable English name string, and the weekday label Monday so UIs can render without re-deriving the day name.
Optional fields are omitted rather than set to null when they do not apply. There is no time zone shift: the holiday is a whole civil date, not a timestamp, so 2026 always yields 2026-01-19 regardless of where the caller runs. Goldens lock known years so oracle reviews can recompute the same third-Monday path independently.
When to call this capability and how it fits your stack
Use this when you need only the US federal MLK Day date for a year—not a full multi-country holiday pack, not observed-on-Friday rules for fixed dates, and not a general nth-weekday helper. Pair it with sibling US federal calculators for Presidents' Day, Columbus Day or Indigenous Peoples' Day, and Juneteenth when you build a domestic holiday set. In HR and payroll, feed the date into accrual blackout lists and timesheet validators.
In logistics, mark no-delivery or delayed-SLA days. In education and community apps, surface the closure on year selectors and print calendars. Always validate your own business rules on top: some employers substitute a different day, and some jurisdictions use additional local observances this capability does not encode.
FAQ
Which date is Martin Luther King Jr. Day?
It is the third Monday of January under the US federal holiday rule.
Does this return a timestamp or a calendar date?
A civil calendar date as YYYY-MM-DD, not a time-of-day timestamp.
Is the result the same in every time zone?
Yes. The holiday is a whole civil day, so the ISO date does not shift with the server time zone.
When did federal observance begin?
Federal observance began in 1986; the weekday formula is still defined for other years in the supported range for planning tools.
Is MLK Day a day off everywhere in the US?
It is a federal holiday, and many states and employers give a paid day off or close schools, while banks and government offices may run reduced service. Some employers substitute another day, so check your own rules.
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/mlk-day-us \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026}'const res = await fetch("https://api.kit.forhosting.com/date/mlk-day-us", {
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/mlk-day-us",
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/mlk-day-us", 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/mlk-day-us", 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.mlk_day_us",
"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
Use it free in the browser for a quick check, or call the API at $0.002 per successful request when you embed the holiday in a pipeline.
What MLK Day is and why the date moves
Hand-maintained spreadsheets drift; web scrapes break; this endpoint encodes the weekday-of-month rule so every client gets the same ISO date string for a given year.
How the calculation works and what you get back
Invalid years outside the supported band, non-integers, and empty input raise a typed invalid_input error with a clear English message.
Integration use cases
Technical questions
What years are accepted?
Integers from 1900 through 2200 inclusive. Outside that band the capability returns invalid_input.