Every Friday Cron Expression
Runs every Friday at midnight.
0 0 * * 5 in POSIX cron
Expression
0 0 * * 5Try it in the tester →Field Breakdown
How It Works
Day-of-week pinned to 5 — fires only on Fridays at 00:00.
Example Run Times
- Fri 00:00:00
- Fri 00:00:00 (+7d)
- Fri 00:00:00 (+14d)
- Fri 00:00:00 (+21d)
- Fri 00:00:00 (+28d)
Frequently Asked Questions
How do I run a job late Friday afternoon instead?
Change the hour and minute fields. For 5:00 PM Friday use `0 17 * * 5`.
0 0 * * 5 in Quartz / Spring
This fires at 00:00 every Friday — the night between Thursday and Friday, 52 times most years (occasionally 53). The 6 in the last field is Friday in Quartz's Sunday-first numbering, one higher than the 5 a Unix crontab would use.
Quartz / Spring expression
0 0 0 ? * 6Try it in the tester →At 00:00:00 on Fri
Unix / POSIX equivalent: 0 0 * * 5
@Scheduled parser uses 0–7 with Monday = 1 — numeric day values mean different days in the two. The day names (MON, FRI, MON-FRI) are identical in both and safer to copy between them.Field Breakdown
Using It with Quartz / Spring
A start-of-Friday trigger front-loads the last working day: assembling the data that Friday's weekly report will draw from, staging end-of-week invoice candidates for human review, or opening a change-freeze flag before the weekend. Drop the string into @Scheduled(cron = "0 0 0 ? * 6") or a Quartz CronTrigger. If what you actually mean is "after Friday's work is done," this is the wrong instant — schedule a Friday-evening hour or Saturday 00:00 instead, because cron's Friday-midnight is when Friday begins.
Quartz-Specific Notes
- →Porting the Unix Friday digit 5 into Quartz gets you Thursday. Friday is 6 here, or just write FRI and skip the arithmetic.
- →"Friday midnight" is ambiguous in plain English; in cron it always means 00:00 as Friday starts. End-of-Friday midnight belongs to Saturday: 0 0 0 ? * 7.
- →Friday is the only literal in the date section, so day-of-month must carry the ? — the trigger fires on whatever dates Fridays land on.
Frequently Asked Questions
What's the Quartz expression for Friday at end of business?
0 0 17 ? * FRI lands at 17:00 every Friday — the name form sidesteps the 5-vs-6 numbering question entirely, and end-of-week 17:00 is where weekly digest and release-cut jobs usually live.
Why does my migrated Friday job run on Thursday in Quartz?
Because Unix cron counts Friday as 5 and Quartz counts it as 6 (Sunday is 1). A crontab's 0 0 * * 5 must become 0 0 0 ? * 6 — or use the name FRI, which means the same thing in both worlds.
Is 00:00 Friday Thursday night or Friday night?
Thursday night. The clock has just ticked into Friday, so all of Friday's business hours lie ahead of this firing — that's what makes it useful for prep work rather than wrap-up work.
0 0 * * 5 in AWS EventBridge
Day-of-week 6 is Friday in EventBridge's Sunday-first numbering, so this rule fires once a week at 00:00 UTC Friday. Anyone porting 0 0 * * 5 from a crontab must make that plus-one adjustment or the job silently moves to Thursday.
AWS EventBridge expression
cron(0 0 ? * 6 *)Try it in the tester →At 00:00 UTC on Fri
Unix / POSIX equivalent: 0 0 * * 5
Field Breakdown
Using It with AWS EventBridge
A Friday-at-midnight-UTC slot is a favorite for end-of-week chores: snapshotting environments before the weekend change freeze, generating the week-in-review dashboard, scaling down development ECS services that nobody will touch until Monday, or triggering a Step Functions workflow that compiles sprint metrics. Define it via aws events put-rule --schedule-expression or in CDK with Schedule.expression, then attach the targets. Keep in mind the moment of firing: in US timezones it is still Thursday evening, which is fine for prep work but wrong for a job meant to run after Friday's close of business.
AWS-Specific Notes
- →00:00 UTC Friday is Thursday 7 or 8 PM in US Eastern and Friday 09:00 in Tokyo — verify which side of the workweek boundary your audience sits on.
- →cron(0 0 ? * FRI *) is the same schedule with the weekday named, immune to off-by-one mistakes.
- →To run at Friday close of business instead, move the hour: cron(0 22 ? * 6 *) hits 22:00 UTC Friday, late afternoon across the US.
Frequently Asked Questions
Why does Friday map to 6 here when crontab uses 5?
EventBridge starts its week at Sunday=1, so every weekday is one higher than the Linux 0-6 convention: Friday becomes 6, Saturday 7. Using the FRI name sidesteps the arithmetic entirely.
Can I run every other Friday for a biweekly release?
Not with day-of-week syntax alone — cron fields have no notion of alternating weeks. Common workarounds are a weekly Friday rule whose target gates on epoch-day parity (days-since-epoch modulo 14) — ISO week numbers slip at 53-week year boundaries, or a Step Functions wrapper that does the same gate.
How would I target the last Friday of each month instead of every Friday?
Use the L suffix on the weekday number: cron(0 0 ? * 6L *) fires on the last Friday of every month, even in five-Friday months. The # token is the tool for a fixed occurrence instead — 6#2 is always the second Friday.
0 0 * * 5 in GitHub Actions
Day-of-week 5 is Friday in GitHub's Sunday-equals-0 numbering, so this fires once a week at 00:00 UTC as Friday begins. That instant is Friday only east of the Atlantic — in the Americas it is still Thursday evening.
GitHub Actions expression
0 0 * * 5Try it in the tester →At 00:00 UTC on Fri
Unix / POSIX equivalent: 0 0 * * 5
Field Breakdown
Using It with GitHub Actions
Committed as on: schedule: - cron: "0 0 * * 5" on the default branch, the Friday-midnight slot suits work that should be waiting when the last workday opens: cutting a weekly prerelease tag so European teams can verify it Friday morning, compiling the week's merged pull requests into a draft summary, or flipping on a deploy freeze ahead of the weekend. Note the coverage window — a run at the very start of Friday UTC summarizes Monday-through-Thursday activity, not the full week.
GitHub-Specific Notes
- →00:00 Friday UTC corresponds to 19:00 Thursday in New York and 16:00 Thursday in Los Angeles during standard time, which makes this a convenient end-of-Thursday trigger for US teams despite the Friday label.
- →Because the run precedes all of Friday's activity, end-of-week reporting usually wants a later hour instead — "0 23 * * 5" lands at 23:00 UTC Friday, after the European workday and most of the US one.
- →There is exactly one matching instant per week; a tick that gets skipped is not retried, and the next opportunity is seven days out.
Frequently Asked Questions
I want this at 5pm Friday, US Eastern — what expression do I use?
Convert to UTC: 17:00 EDT is "0 21 * * 5" and 17:00 EST is "0 22 * * 5". Schedules are UTC-only, so commit the offset matching the current season or accept the hour of drift after each daylight-saving switch.
Can a Friday run be skipped entirely, and how would I notice?
Yes — scheduled delivery is best-effort, and a missed weekly tick produces no error anywhere. Have the job post a success marker (a comment, a Slack message, a commit) so silence on Friday is itself the alert.