Black Friday date calculator by year
The Black Friday date calculator returns the Friday immediately after United States Thanksgiving for a year you provide.
Run — free
It does not rely on a stored holiday list or an online calendar. Instead, it locates the fourth Thursday in November under the Gregorian calendar and advances one day. The result includes the Black Friday date, its Friday label, and the Thanksgiving date used in the calculation, making the answer easy to verify and useful in schedules, reports, retail planning, and automated workflows.
How the Black Friday date is determined
Black Friday in the United States is the day after Thanksgiving. United States Thanksgiving is observed on the fourth Thursday of November, so the calculation begins by finding the weekday of November 1 in the requested Gregorian year. From there, it identifies the first Thursday, adds three complete weeks to reach the fourth Thursday, and then advances one calendar day. This rule produces a Black Friday date between November 23 and November 29. The capability returns both dates so you can see the holiday that anchors the answer instead of receiving an unexplained value. No holiday table is consulted, which means the result does not depend on whether a database has been updated. The same year always produces the same result. This is particularly useful for future planning, historical comparisons, and systems that need a stable calendar rule rather than a manually maintained list of dates. The calculation follows the stated United States holiday relationship and does not attempt to model sales events in other countries that may use the Black Friday name on different schedules.
Deterministic Gregorian calendar arithmetic
The calculator uses integer arithmetic for the proleptic Gregorian calendar. It counts completed years, applies the familiar leap-year rule, and determines the weekday offset before November. A year divisible by four is normally a leap year, century years are excluded, and years divisible by four hundred are included again. Those rules affect the weekday on which November begins even though the target month comes long after February. The implementation does not read a clock, infer a local time zone, contact a network service, or depend on the computer's regional calendar settings. As a result, a request made in UTC, New York, Tokyo, or any other time zone receives the same ISO-formatted calendar date. Accepted years run from 1 through 9999 and are rendered with four digits, including leading zeroes for early years. This range keeps output compatible with the conventional four-digit ISO date representation while still supporting extensive historical and future calculations. The calendar is applied backward consistently even for eras before the modern Gregorian calendar was officially adopted.
Using the result in planning and automation
Send one integer in the year field and use the returned date wherever a stable annual retail milestone is required. Marketing teams can establish campaign deadlines relative to the result, commerce teams can prepare catalog freezes and staffing plans, and analysts can align yearly reports around a comparable holiday period. Because the response also includes thanksgiving_date, an integration can verify the one-day relationship or display both milestones without performing a second holiday lookup. The day_of_week field is explicit for readers and downstream interfaces, while date is the primary ISO-formatted value for sorting and storage. API automation is charged at $0.002 per request, and the browser version can perform the same pure calculation locally. Treat the answer as a calendar result rather than a forecast of store hours, promotional timing, shipping cutoffs, or market behavior. Individual businesses may begin promotions earlier and jurisdictions outside the United States may observe different holidays. If a workflow needs operational opening times, it should combine this date with a separate, authoritative business schedule rather than assuming every organization follows the retail label literally.
What you can do with it
Build a retail campaign calendar
Calculate the annual anchor date before scheduling creative reviews, product launches, and promotion reminders.
Compare holiday sales periods
Align reports from different years around each year's actual Black Friday instead of a fixed November date.
Generate future planning dates
Populate calendars and workflow milestones for many future years without maintaining a holiday lookup table.
FAQ
How is Black Friday calculated?
The calculator finds the fourth Thursday of November, which is United States Thanksgiving, and returns the following day.
What does an API request cost?
Each API request costs $0.002. The same deterministic calculation can also run locally in the browser.
Does the calculation depend on my time zone?
No. It uses calendar arithmetic and returns the same ISO-formatted date regardless of the caller's location or time zone.
Which years are accepted?
The input must be an integer from 1 through 9999 under the proleptic Gregorian calendar.
Is Black Friday always in November?
Yes under this United States definition. The result falls from November 23 through November 29 because it follows the fourth Thursday.
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/black-friday \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026}'const res = await fetch("https://api.kit.forhosting.com/date/black-friday", {
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/black-friday",
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/black-friday", 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/black-friday", 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.black_friday",
"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. |