Shift calendar · hours tracker · paycheck estimator

Know your next check before it lands.

ShiftStub tracks your shifts and your overtime — time and a half, double time, daily OT, the hospital 8/80 — your night and weekend diffs and your unpaid breaks, and shows the math line by line.

One email, when the app is out. That is the only thing this address will ever be used for. No newsletter, no sharing, no selling. Unsubscribe in one click.

Not connected yet. No email provider has been set up for this site, so this form cannot store an address. See the TODO list in README.md.

See the math

Coming to the App Store and Google Play. Not released yet, so there is nothing to download and these are not links.

  • Works offline
  • No account
  • No ads
  • Your data stays on your phone

What people actually ask

Two questions. Every screen answers one of them.

“Did I get shorted?”

Photograph your stub. ShiftStub lines up what it counted against what you were paid, and explains every difference in plain words.

Paycheck check Compares line by line. Says what to ask about, not who to blame.

“Can I cover rent on the 15th?”

Your next three pay dates, with amounts, from the shifts you have already painted. A number, not a chatbot.

Forecast strip Deterministic. Recomputes the moment you change a shift.

The math, line by line

Change the rules. Watch the check change.

These are the pay engine's own worked examples. Switch the rules you work under and the ledger recomputes to the cent.

The rules you work under
How overtime is figured

S1 · Hospital nurse · $36.00/hr · bi-weekly

Overtime over 40 hours a week at time and a half, plus a night and a weekend differential.

Regular 71.5 hrs × $36.00
two thousand five hundred seventy-four dollars
Overtime 6.5 hrs × $54.00 (1.5 × $36.00)
three hundred fifty-one dollars
Night diff 34.5 hrs × $2.10
seventy-two dollars 45
Weekend diff 36.0 hrs × $1.50
fifty-four dollars

Gross for the period Gross for the period, three thousand fifty-one dollars 45, estimate

78.0 paid hours · 71.5 at straight time · 6.5 at a premium

Where the overtime came from

Seven shifts, 78.0 paid hours. Week 1 ran to 46.5 hours, so 6.5 of them are overtime; week 2 came in at 31.5 and adds none.

Shifts counted in this period
Day 12 12.0 hrs
Day 12 12.0 hrs
Night 12 12.0 hrs
Night 10.5 10.5 hrs
Week 1 · Aug 1–7 46.5 hrs
Day 12 12.0 hrs
Night 12 12.0 hrs
Day 7.5 7.5 hrs
Week 2 · Aug 8–14 31.5 hrs

The other method gives $3,057.27 — a difference of +$5.82 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.

S1 · Hospital nurse · $36.00/hr · bi-weekly

Overtime over 40 hours a week at time and a half, plus a night and a weekend differential.

Straight time, all hours 78.0 hrs × $36.00
two thousand eight hundred eight dollars
Night diff 34.5 hrs × $2.10
seventy-two dollars 45
Weekend diff 36.0 hrs × $1.50
fifty-four dollars
Overtime premium 6.5 hrs × ½ × $37.79 regular rate
one hundred twenty-two dollars 82

Gross for the period Gross for the period, three thousand fifty-seven dollars 27, estimate

78.0 paid hours · 71.5 at straight time · 6.5 at a premium

Where the overtime came from

Seven shifts, 78.0 paid hours. Week 1 ran to 46.5 hours, so 6.5 of them are overtime; week 2 came in at 31.5 and adds none.

Shifts counted in this period
Day 12 12.0 hrs
Day 12 12.0 hrs
Night 12 12.0 hrs
Night 10.5 10.5 hrs
Week 1 · Aug 1–7 46.5 hrs
Day 12 12.0 hrs
Night 12 12.0 hrs
Day 7.5 7.5 hrs
Week 2 · Aug 8–14 31.5 hrs

The other method gives $3,051.45 — a difference of −$5.82 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.

S3 · Nurse in California · $55.00/hr

Over 8 hours in a day is time and a half. Over 12 in a day is double time.

Regular 32.0 hrs × $55.00
one thousand seven hundred sixty dollars
Overtime 12.0 hrs × $82.50 (1.5 × $55.00)
nine hundred ninety dollars
Double time 2.0 hrs × $110.00 (2 × $55.00)
two hundred twenty dollars

Gross for the period Gross for the period, two thousand nine hundred seventy dollars, estimate

46.0 paid hours · 32.0 at straight time · 14.0 at a premium

Where the overtime came from

The week totals 46 hours, but the daily rule already paid those hours — so the weekly rule adds nothing. No hour is counted twice.

Shifts counted in this period
Mon 12 12.0 hrs
Tue 12 12.0 hrs
Wed 14 14.0 hrs
Thu 8 8.0 hrs
One workweek · 46.0 hrs 46.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S3 · Nurse in California · $55.00/hr

Over 8 hours in a day is time and a half. Over 12 in a day is double time.

Straight time, all hours 46.0 hrs × $55.00
two thousand five hundred thirty dollars
Overtime premium 14.0 hrs × ½ × $55.00 regular rate
four hundred forty dollars

Gross for the period Gross for the period, two thousand nine hundred seventy dollars, estimate

46.0 paid hours · 32.0 at straight time · 14.0 at a premium

Where the overtime came from

The week totals 46 hours, but the daily rule already paid those hours — so the weekly rule adds nothing. No hour is counted twice.

Shifts counted in this period
Mon 12 12.0 hrs
Tue 12 12.0 hrs
Wed 14 14.0 hrs
Thu 8 8.0 hrs
One workweek · 46.0 hrs 46.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S5 · Retail in California · $20.00/hr

Six 8-hour days, then 10 hours on day seven. The first 8 hours of day seven are time and a half; hours after that are double time.

Regular 40.0 hrs × $20.00
eight hundred dollars
Overtime 16.0 hrs × $30.00 (1.5 × $20.00)
four hundred eighty dollars
Double time 2.0 hrs × $40.00 (2 × $20.00)
eighty dollars

Gross for the period Gross for the period, one thousand three hundred sixty dollars, estimate

58.0 paid hours · 40.0 at straight time · 18.0 at a premium

Where the overtime came from

Day seven is priced by the seventh-day rule, and the 48 hours left over still run the weekly test — 8 of them are over 40.

Shifts counted in this period
Day 1 · 8h 8.0 hrs
Day 2 · 8h 8.0 hrs
Day 3 · 8h 8.0 hrs
Day 4 · 8h 8.0 hrs
Day 5 · 8h 8.0 hrs
Day 6 · 8h 8.0 hrs
Day 7 · 10h 10.0 hrs
One workweek · 58.0 hrs 58.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S5 · Retail in California · $20.00/hr

Six 8-hour days, then 10 hours on day seven. The first 8 hours of day seven are time and a half; hours after that are double time.

Straight time, all hours 58.0 hrs × $20.00
one thousand one hundred sixty dollars
Overtime premium 18.0 hrs × ½ × $20.00 regular rate
two hundred dollars

Gross for the period Gross for the period, one thousand three hundred sixty dollars, estimate

58.0 paid hours · 40.0 at straight time · 18.0 at a premium

Where the overtime came from

Day seven is priced by the seventh-day rule, and the 48 hours left over still run the weekly test — 8 of them are over 40.

Shifts counted in this period
Day 1 · 8h 8.0 hrs
Day 2 · 8h 8.0 hrs
Day 3 · 8h 8.0 hrs
Day 4 · 8h 8.0 hrs
Day 5 · 8h 8.0 hrs
Day 6 · 8h 8.0 hrs
Day 7 · 10h 10.0 hrs
One workweek · 58.0 hrs 58.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S6b · Eight-hour nurse on 8/80 · $36.00/hr

Overtime over 8 in a day OR over 80 in the 14-day period — whichever gives more, and never both for the same hour.

Regular 80.0 hrs × $36.00
two thousand eight hundred eighty dollars
Overtime 2.0 hrs × $54.00 (1.5 × $36.00)
one hundred eight dollars

Gross for the period Gross for the period, two thousand nine hundred eighty-eight dollars, estimate

82.0 paid hours · 80.0 at straight time · 2.0 at a premium

Where the overtime came from

The daily test gives 2 hours. The period test gives 2 hours. They tie, and the hour that is both is still one hour — a naive calculator pays 4 here.

Shifts counted in this period
Shift 1 · 8h 8.0 hrs
Shift 2 · 8h 8.0 hrs
Shift 3 · 8h 8.0 hrs
Shift 4 · 8h 8.0 hrs
Shift 5 · 8h 8.0 hrs
Shift 6 · 8h 8.0 hrs
Shift 7 · 8h 8.0 hrs
Shift 8 · 8h 8.0 hrs
…and 2 more the same 18.0 hrs
14-day period · 82.0 hrs 82.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S6b · Eight-hour nurse on 8/80 · $36.00/hr

Overtime over 8 in a day OR over 80 in the 14-day period — whichever gives more, and never both for the same hour.

Straight time, all hours 82.0 hrs × $36.00
two thousand nine hundred fifty-two dollars
Overtime premium 2.0 hrs × ½ × $36.00 regular rate
thirty-six dollars

Gross for the period Gross for the period, two thousand nine hundred eighty-eight dollars, estimate

82.0 paid hours · 80.0 at straight time · 2.0 at a premium

Where the overtime came from

The daily test gives 2 hours. The period test gives 2 hours. They tie, and the hour that is both is still one hour — a naive calculator pays 4 here.

Shifts counted in this period
Shift 1 · 8h 8.0 hrs
Shift 2 · 8h 8.0 hrs
Shift 3 · 8h 8.0 hrs
Shift 4 · 8h 8.0 hrs
Shift 5 · 8h 8.0 hrs
Shift 6 · 8h 8.0 hrs
Shift 7 · 8h 8.0 hrs
Shift 8 · 8h 8.0 hrs
…and 2 more the same 18.0 hrs
14-day period · 82.0 hrs 82.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S7 · Firefighter, 24 on / 48 off · $22.00/hr

A 21-day work period with a 159-hour overtime threshold, instead of a weekly one.

Regular 159.0 hrs × $22.00
three thousand four hundred ninety-eight dollars
Overtime 9.0 hrs × $33.00 (1.5 × $22.00)
two hundred ninety-seven dollars

Gross for the period Gross for the period, three thousand seven hundred ninety-five dollars, estimate

168.0 paid hours · 159.0 at straight time · 9.0 at a premium

Where the overtime came from

Seven 24-hour shifts is 168 hours in the period. Nine of them are over the threshold. No other consumer app models this at all.

Shifts counted in this period
24 on · shift 1 24.0 hrs
24 on · shift 2 24.0 hrs
24 on · shift 3 24.0 hrs
24 on · shift 4 24.0 hrs
24 on · shift 5 24.0 hrs
24 on · shift 6 24.0 hrs
24 on · shift 7 24.0 hrs
21-day period · 168.0 hrs 168.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S7 · Firefighter, 24 on / 48 off · $22.00/hr

A 21-day work period with a 159-hour overtime threshold, instead of a weekly one.

Straight time, all hours 168.0 hrs × $22.00
three thousand six hundred ninety-six dollars
Overtime premium 9.0 hrs × ½ × $22.00 regular rate
ninety-nine dollars

Gross for the period Gross for the period, three thousand seven hundred ninety-five dollars, estimate

168.0 paid hours · 159.0 at straight time · 9.0 at a premium

Where the overtime came from

Seven 24-hour shifts is 168 hours in the period. Nine of them are over the threshold. No other consumer app models this at all.

Shifts counted in this period
24 on · shift 1 24.0 hrs
24 on · shift 2 24.0 hrs
24 on · shift 3 24.0 hrs
24 on · shift 4 24.0 hrs
24 on · shift 5 24.0 hrs
24 on · shift 6 24.0 hrs
24 on · shift 7 24.0 hrs
21-day period · 168.0 hrs 168.0 hrs

Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.

S12 · Any hourly job · $18.00 → $20.00 on Thursday

The rate changes on Thursday, and 4 of the week’s 44 hours are overtime.

Regular at $18.00 24.0 hrs × $18.00
four hundred thirty-two dollars
Regular at $20.00 16.0 hrs × $20.00
three hundred twenty dollars
Overtime 4.0 hrs × $30.00 (1.5 × $20.00)
one hundred twenty dollars

Gross for the period Gross for the period, eight hundred seventy-two dollars, estimate

44.0 paid hours · 40.0 at straight time · 4.0 at a premium

Where the overtime came from

Here the common method comes out higher than the federal one. The comparison is signed, in both directions — it is information, not an accusation.

Shifts counted in this period
Mon · $18.00 8.0 hrs
Tue · $18.00 8.0 hrs
Wed · $18.00 8.0 hrs
Thu · $20.00 8.0 hrs
Fri · $20.00 8.0 hrs
Sat · $20.00 4.0 hrs
One workweek · 44.0 hrs 44.0 hrs

The other method gives $869.82 — a difference of −$2.18 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.

S12 · Any hourly job · $18.00 → $20.00 on Thursday

The rate changes on Thursday, and 4 of the week’s 44 hours are overtime.

Straight time at $18.00 24.0 hrs × $18.00
four hundred thirty-two dollars
Straight time at $20.00 20.0 hrs × $20.00
four hundred dollars
Overtime premium 4.0 hrs × ½ × $18.91 regular rate
thirty-seven dollars 82

Gross for the period Gross for the period, eight hundred sixty-nine dollars 82, estimate

44.0 paid hours · 40.0 at straight time · 4.0 at a premium

Where the overtime came from

Here the common method comes out higher than the federal one. The comparison is signed, in both directions — it is information, not an accusation.

Shifts counted in this period
Mon · $18.00 8.0 hrs
Tue · $18.00 8.0 hrs
Wed · $18.00 8.0 hrs
Thu · $20.00 8.0 hrs
Fri · $20.00 8.0 hrs
Sat · $20.00 4.0 hrs
One workweek · 44.0 hrs 44.0 hrs

The other method gives $872.00 — a difference of +$2.18 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.

Figures come from the worked examples in the pay engine's own specification and are checked against it on every build. Educational, not legal or tax advice.

Every one of these is worked through in full on how the math works — inputs, rules applied, line-by-line output.

Your whole rotation in minutes

Paint your schedule. Don't fill in forms.

Pick a template, then tap or drag across the days. A normal week takes under a minute; a whole year takes about ten.

August 2026

196.0 hrs painted

  • August 1, Day shift, D12
  • August 2, Day shift, D12
  • August 3, nothing painted
  • August 4, nothing painted
  • August 5, Night shift, N12
  • August 6, Night shift, N12
  • August 7, nothing painted
  • August 8, nothing painted
  • August 9, Day shift, D12
  • August 10, nothing painted
  • August 11, Night shift, N12
  • August 12, nothing painted
  • August 13, Day shift, D8
  • August 14, nothing painted
  • August 15, Day shift, D12
  • August 16, Day shift, D12
  • August 17, nothing painted
  • August 18, nothing painted
  • August 19, Night shift, N12
  • August 20, Night shift, N12
  • August 21, nothing painted
  • August 22, Swing shift, S8
  • August 23, Day shift, D12
  • August 24, nothing painted
  • August 25, Night shift, N12
  • August 26, nothing painted
  • August 27, Night shift, N12
  • August 28, nothing painted
  • August 29, Day shift, D12
  • August 30, Day shift, D12
  • August 31, nothing painted
Day 12 Night 12 Swing 8 PTO
A month of 12s, painted. Every shift type is a colour, a glyph and a label — so it still reads if colour is not something you can rely on.

Rotations, not repeats

2-on/2-off/3-on, 24/48, Kelly days — any on/off sequence you actually work. You see a preview before it applies, you choose the range, and the past is never rewritten.

After about three weeks, it notices

“Looks like you're on 2-on/2-off/3-on. Fill the rest of the year?” Preview first, always. It never fills anything in on its own.

Or photograph the one on the wall

A photo, a screenshot, a PDF, pasted text or an .ics file. The shifts land on the calendar as ghosts for you to confirm. Nothing is ever imported silently.

Two shifts in one day

Split shifts, doubles, call-backs, two job sites. Each is its own record and the day stacks them — the single largest thing missing from every rival.

Catch it when the check is short

Your check, beside what you were owed.

Photograph a paper stub, share in a portal PDF, or type the numbers. The reading happens on your phone, and nothing is saved or compared until you confirm it.

Your check, beside what we worked out
Line ShiftStub Your check Difference
Regular $2,574.00 $2,574.00 match
Overtime $351.00 $351.00 match
Night diff $72.45 $47.25 −$25.20
Weekend diff $54.00 $54.00 match
Gross $3,051.45 $3,026.25 −$25.20

Night diff — about $25.20 short

Your night differential was paid on 22.5 hours; we counted 34.5. The 12.0 hours on Wed Aug 5 look like they were missed.

Show the shifts Keep an eye on this

A deduction we did not know about — $22.00

Your stub lists PARKING $22.00. That is not a mistake — we just did not know about it. Want us to expect it every check?

Yes, always Just this once

Difference vs expected −$47.20

Two differences, two different meanings. A parking deduction is not missing wages, so it is not in the shortfall and it is not coloured like one. ShiftStub is not giving legal advice — it is showing you the arithmetic so you can ask.

Two checks run first

Is this stub even for that pay period? And which overtime method does it look like it used? Compare across a method mismatch and you get fake shortfalls and fake overpayments of the very same hours.

It gets better every time

Each stub you confirm sharpens the next estimate — including your real deductions, which is the only way take-home ever gets to be more than a guess.

It never says you were robbed

Every message is framed as what to check. Money figures carry the word estimate. That is a rule the app enforces on itself, and one working detector is held back because it could not meet it.

We already thought of your week

Overtime it actually understands.

A small calculation library, specified and tested against roughly 1,300 cases before a single screen was designed.

Speed

A full year — 600 shifts — recomputes in under 16ms on a four-year-old phone. The number is never stale, because there is never anything to wait for.

Yours, offline, no account

It works in a basement with no signal.

There is no sign-up, so there is nothing to log into and nothing to leak.

What stays on your phone

Your shifts, your hours, your pay rates, your employers, your stub data. All of it is processed and stored on the device. It is not collected.

What can leave, and only if you say so

Two diagnostics switches, both off by default, both taking effect the instant you tap them. And purchases, which go through the app stores.

Pay stubs are read on the phone

Social security numbers, bank account fragments and routing numbers are struck out before anything else touches the text. If the reading is poor the app says so and offers manual entry. There is no silent fallback to a server.

A log of everything it ever sent

In Settings. Not a policy page — the actual list. Zero marketing notifications, ever; that is a contract, not a setting you have to find.

The full detail is on the privacy page, written to be read by a person and not a lawyer.

Never lose the record

Three months of proof should not die with a phone.

The second-most common one-star review under every rival is “my data disappeared”. This is the answer to it.

Automatic backup, free, never paywalled

iCloud on iPhone, Android Auto Backup on Android, with visible status so you can see it happened.

A file that moves between iPhone and Android

An encrypted local export you hold. Free. Switching phones is not a reason to lose a year.

Append-only edit history

Export a timesheet on the 14th, edit a shift on the 20th, and the record shows both states with timestamps. No rival has this.

Plain-text export, one tap, always free

It never moves behind the paywall. PDF and spreadsheet timesheets, with an as-of stamp, are the Pro version of the same thing.

What it will never do

The list is the product too.

Each of these maps to a pile of one-star reviews under somebody else's app.

The pay math is free. Forever.

Pricing, with the whole of it said out loud.

There is no free trial, because we do not ship one. There is no weekly plan, and there never will be.

Free

$0

Free forever. Not a trial, not a teaser.

  • The whole pay engine — every overtime rule on this page
  • Your next check, always current, with the math behind it
  • Unlimited shifts, templates and rotations
  • Clock in and out, or type it in later
  • Schedule import from a photo, a PDF or an .ics file
  • Paycheck reconciliation, and every detector
  • Automatic backup, with visible status
  • Encrypted export and import, iPhone to Android
  • Plain-text timesheet export, one tap
  • Widgets, Live Activity and shortcuts

Pro, at launch

$29.99a year

Renews yearly until you cancel.

  • Spreadsheet timesheets Shipped today.
  • PDF timesheets with an as-of stamp At launch.
  • A second job, with its own everything At launch. No silent merging of two jobs.
  • Sync across your own devices At launch. End-to-end encrypted, paired by QR code, no account.
  • Save your own rule sets At launch. The bundled state and employer presets stay free.

Every way to pay

$29.99 a year
Renews yearly until you cancel. The usual plan.
$4.99 a month
Renews monthly until you cancel. For when a year up front is not the right month.
$49.99 once
One payment. Yours forever. Nothing renews. Restores on any device signed in to the same store account.

Billed by the App Store or Google Play, not by us. Cancel in your store account at any time. Refunds are handled by the store, and the app never argues with you. If a payment fails there is a 16-day grace period, Pro stays on, and you get one quiet banner about it — nothing else.

If Pro lapses

Features stop. Data never locks.

  • A second job becomes read-only. It stays visible, and it stays exportable.
  • PDF and spreadsheet export revert to the plain-text share, which is always free.
  • Sync pauses. Both phones carry on working on their own local data.
  • Rule sets you already applied stay applied.

Nothing is deleted, hidden, or held hostage.

ShiftStub's pay math, backup, and text export are free forever. Pro is optional.

Prices are in US dollars and are the prices we will list. Existing subscribers are grandfathered on any price change by default. No free feature has ever moved behind the paywall and none ever will — changing that would take a written decision, and the answer is no. Full terms are on the terms page.