Gregorian epact calculator
For 2026 the Gregorian epact is 11: under the church tables the Moon is 11 days old on 1 January. Enter any date and get the epact for its year, from 1 to 30, plus the solar and lunar century corrections behind it. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Date
- 2026-06-15
- Year
- 2,026
- Month
- 6
- Day
- 15
- Epact
- 11
The Gregorian epact is the classical ecclesiastical measure of how old the Moon is on the first day of January under the reformed calendar of 1582. Students of computus, liturgy planners, and developers writing Easter-related tests can verify known anchors such as year two thousand twenty-six yielding epact eleven and year two thousand eleven yielding epact twenty-five without reconstructing century formulas by hand.
What the Gregorian epact tells you
In Western computus the epact answers a single practical question: how many days old is the Moon on a fixed reference day so that tables can look up the Paschal full moon without recomputing every lunation from first principles.
The Gregorian reform of fifteen eighty-two kept the Metonic skeleton but adjusted the raw Julian residue with two century corrections: a solar equation that accounts for the leap days the Gregorian calendar drops in most century years, and a lunar equation that compensates for the slow drift of the Metonic cycle relative to true syzygies. After those corrections a calibration constant of eight is applied and the result is reduced into the closed range one through thirty, with modular zero written as thirty because classical printed tables never used zero.
This calculator focuses on that Gregorian epact value.
Where a Gregorian epact calculator fits in study, liturgy, and software
Students meet the Gregorian epact when a history or astronomy course explains how the 1582 reform changed Paschal tables, when a computus textbook moves from Julian residues to solar and lunar century equations, or when they must fill a blank for the age of the Moon on New Year’s Day before reading a full-moon chart. Teachers can pre-generate answer keys for modest year ranges by pasting ISO dates from a roster without trusting opaque calendar apps that silently switch between Julian and Gregorian conventions or print zero instead of thirty.
Developers call the same contract from scripts to seed deterministic test vectors for Easter engines, to document intermediate steps in liturgy software, or to satisfy programming-challenge statements that demand the Gregorian epact rather than a finished feast date. Contest and quiz practice often needs a fast, offline source of this integer so solutions can be checked without reconstructing century equations under time pressure.
Product and education tools use the lookup when a learner types any day of the year and the UI must show the moon’s ecclesiastical age on January first beside a short formula.
What you can do with it
Liturgy and Paschal prep
Look up the Gregorian epact for the year of any parish calendar date before reading full-moon tables or drafting Easter worksheets.
History and astronomy coursework
Show solar and lunar century equations when teaching why Gregorian moon-age tables diverge from pure Julian Metonic residues.
FAQ
What does the Gregorian epact calculator cost?
It is free in your browser on this page.
Why do I supply a full date if only the year matters?
Pipelines and forms often already hold an ISO day. The engine validates that day and uses its year so you never need a separate year field or risk timezone shifts from Date parsing.
Does this tool return Easter Sunday?
No. It returns the Gregorian epact (moon age on 1 January) and intermediate Metonic and century values. Use a dedicated Easter calculator for the feast date.
Why is the epact never zero?
Classical printed tables never used zero, so a result that works out to zero is written as 30. Every Gregorian epact therefore falls between 1 and 30, matching the tables used to find the Paschal full moon.
What are the solar and lunar equations?
They are the two century corrections of the 1582 reform. The solar one accounts for the leap days dropped in most century years, the lunar one for the slow drift of the 19-year lunar cycle. For 2026 they are 15 and 6.
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/epact-gregorian \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-06-15"}'const res = await fetch("https://api.kit.forhosting.com/date/epact-gregorian", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2026-06-15"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/epact-gregorian",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2026-06-15"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/epact-gregorian", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2026-06-15"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2026-06-15"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/epact-gregorian", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"date": "2026-06-15"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.epact_gregorian",
"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
Through the API each successful lookup costs $0.002; invalid dates are not billed.
What the Gregorian epact is and what the response contains
There is no astronomical ephemeris, no random sampling, and no dependence on the host clock: either the integers are exact inside the supported year range or the request fails with invalid_input.
How the ISO date is read and how the epact stays reproducible
The required field is date, a strict calendar string in the form four-digit year, hyphen, two-digit month, hyphen, two-digit day. The string is trimmed and matched with a regular expression; anything that is not exactly that shape fails immediately with a message naming the expected form. Components are then checked as real Gregorian civil values without calling the JavaScript Date constructor: year must lie between one and nine thousand nine hundred ninety-nine, month between one and twelve, and day between one and the true length of that month including February twenty-nine only in leap years under the proleptic Gregorian rule divisible by four except century years not divisible by four hundred. Impossible dates such as twenty twenty-three February twenty-nine or April thirty-first are rejected so a bad cell never becomes a wrong epact. Aliases d, iso, and value are accepted so spreadsheets, query strings, and typed forms can reuse the same contract without renaming columns. Negative intermediates use a positive modulo before the zero-to-thirty mapping so JSON goldens never see a negative epact. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the century equations yourself.
Where a Gregorian epact calculator fits in study, liturgy, and software
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result.
Integration use cases
Deterministic test fixtures
Generate reproducible epact and moon_age_jan1 values from ISO dates for unit tests, property checks, and CI assertions on computus code.
Technical questions
How is the Gregorian epact defined?
From year Y of the ISO date: G=(Y mod 19)+1, J=(11×(G−1)) mod 30, c=floor(Y/100), S=floor(3(c+1)/4), L=floor((8c+13)/25), then E=J−S+L+8 reduced to 1..30 (0→30).
What happens if the date is invalid?
Malformed strings and impossible calendar days (for example 2023-02-29) fail with invalid_input and are not billed.