Every set has a rival.

Rival puts what you lifted last time next to every set. Beat it and the ghost disappears. A three-tap check-in adjusts today's targets, a body map shows which muscles got enough work, and a program for your days plans the week.

  • Free, no account
  • Works offline
  • 108 exercises

On iPhone, open the app in Safari, tap Share, then Add to Home Screen. It installs with its own icon and works offline.

On a computer?Point your phone's camera at this code to open Rival on your phone.

Rival's Today screen: the Upper session, a readiness score of 89 marked Primed, and each lift's target beside its ghost
A workout in progress: warm-up sets ticked off, set 1 matched the ghost and set 2 beat it by one rep

Last week's you, on every set

The ghost is your last session of that exercise, set by set. Rival pre-fills a target just past it, so most sets take one tap: lift, tap the check, rest.

Matching the ghost counts too. It shows as matched, so a hard week still reads as holding the line rather than falling behind.

The rest timer starts on its own when you log a set, and the screen stays awake for the whole workout.

Try it. Last time you did 80 kg × 8.
Ghost 80 × 8
9
Set the reps you did at 80 kg, then tap the check.
The workout screen: warm-up sets ticked off, set 1 matched the ghost, set 2 beat it by one rep

A bad night changes the plan, not the streak

Before you start, answer three questions about sleep, soreness and energy. Rival turns them into a score out of 100.

55 and above keeps the plan as written. Between 35 and 54, loads drop 5%. Below 35, loads drop 10% and any lift with three or more sets loses one. Every change is shown in the workout, so you always know why a number moved.

Not in the mood to answer? Skip it and targets stay as planned.

Readiness check-in scoring 44, Eased: loads drop 5% and today's targets are marked Eased

See which muscles you're shortchanging

Every logged set counts toward the muscles it trains. A bench press set counts fully for chest and half for triceps and shoulders.

The body map shades each muscle against a target of 10 to 20 hard sets a week, the range commonly recommended for muscle growth. Gaps show up as pale patches, and too much volume turns red.

Progress tab: front and back body map shaded by weekly sets, with chest selected showing 15 weekly sets in the target zone and the lifts they came from

A split for the days you actually have

Say how many days a week you can train, from two to six, and pick a ready-made program. Each one shows how many sets every muscle gets in a week, so you can check it reaches the 10 to 20 target before you commit.

Nothing fits? Build your own. Choose one to seven days, give each a focus from thirteen options (Push, Pull, Legs, Chest & Back, Arms, even an empty day), rename them, and reorder or duplicate any day later.

Switching keeps your history and ghosts, and an Undo is one tap away.

Already have a plan? Paste it from Notes, a spreadsheet or a chat, or pick a text file. Rival matches each line, such as “Bench press 3x6-8”, to its library, and you check every match before anything changes.

Back after a break? Tap Train something else on Today to do just a push day, or plan a short week like push and pull. Your program pauses, then picks up exactly where it left off.

Program picker set to 3 days a week: Full Body marked Recommended, then Upper / Lower / Full Body and Push / Pull / Legs
Build your own split: five days with a focus chosen for each, such as Push, Pull, Legs, Upper and Arms

How many days can you train?

  • Upper / Lower

    Recommended

    Upper A · Lower A · Upper B · Lower B

    Each muscle twice a week, about 50 min a session

  • Upper / Lower / Push / Pull

    Upper · Lower · Push · Pull

    Each muscle twice a week, about 45 min a session

  • Push / Pull / Legs / Upper

    Push · Pull · Legs · Upper

    Each muscle twice a week, about 50 min a session

The first program in each list is the one Rival recommends. Session length is an estimate from the sets in the plan.

How Rival sets your next target

Each exercise has a rep range. Rival looks at your ghost and applies one of two rules, the same double progression most coaches use.

You hit the top of the range on every set

Add the smallest jump for that exercise, 2.5 kg on a barbell, and start back at the bottom of the range.

80 × 8, 8, 8→82.5 × 6, 6, 6

You didn't

Keep the weight and aim for one more rep on each set, up to the top of the range.

80 × 8, 7, 6→80 × 8, 8, 7

Everything else, one tap away

Swap sheet for Barbell Bench Press: Machine Chest Press marked Same movement at the top, then other chest exercises, then every other option
Swap mid-workoutMachine taken? The closest match for the same muscles comes first.
Workout cards: Lat Pulldown with attachment chips for Wide bar and Close-grip V-bar, and Incline Dumbbell Press tagged Weight per side with a kg each column
Attachments and per-side weightsRope or V-bar each keep their own numbers. Dumbbells log per hand.
Check your plan screen: lines like Bench press 3x6-8 matched to Barbell Bench Press, grouped into Push, Pull and Legs days
Import your planPaste the plan you already follow. Rival matches every line.
Plate calculator showing 82.5 kg as a 20, a 10 and a 1.25 per side on a 20 kg bar
Plate calculatorExactly what goes on each side of the bar. The biggest plate is 20 kg.
Exercise library with search and muscle filters; each movement offers a free-weight and a machine option
108 exercisesEach with a free-weight and a machine option.
Create exercise form: Landmine Press with upper chest as the primary muscle
Your own exercisesName it, pick its muscles, done.
Plan tab: the program card for Upper / Lower / Push / Pull above the Upper day's exercises with sets and reps
Your planChange sets, reps, rest and order in a tap.
Welcome screen that starts a short guided tour
A guided first runA short tour shows you around.

Made for the gym floor

Warm-ups built in

The first heavy lift for each muscle gets ramp-up sets. From 60 kg up that's the empty bar, then around 50%, 70% and 85% of your working weight. Lighter lifts get one or two shorter ramps.

Big targets where it counts

The set inputs and the log button are 44 points tall, sized for chalky thumbs between sets.

Estimated 1-rep max

Each main lift gets a trend line, using e1RM = w × (1 + r30), so a heavy triple and a long set compare fairly.

kg or lb, per exercise

Each lift has its own kg | lb switch, so dumbbells can be in lb while the barbell stays in kg.

Per-side weights

Dumbbell lifts log the weight in each hand, marked “kg each”, so 2 × 32 kg is entered as 32.

Attachments that don't mix

A rope pushdown and a straight-bar pushdown keep separate weights and ghosts. Rival remembers which one you used.

Light or dark

Follow your phone, or pick Light or Dark in Settings.

Works offline

Install it to your home screen and it opens with no signal, in the basement gym or anywhere else.

Yours to keep

No account, and nothing is uploaded. Your workouts live on your phone, and Export backup saves them to a file whenever you like.

Put it on your home screen

Rival is a web app, so there's nothing to download from a store. Installing it gives it its own icon, a full screen and offline use. It takes about ten seconds.

iPhoneUse Safari

  1. Open op4122.github.io/Rival/app in Safari.
  2. Tap the Share button at the bottom of the screen.
  3. Choose Add to Home Screen, then tap Add.

AndroidUse Chrome

  1. Open op4122.github.io/Rival/app in Chrome.
  2. Tap the menu (three dots) at the top right.
  3. Choose Install app or Add to Home screen.

Questions, answered

Is Rival really free?

Yes. There is no account, no ads and nothing to buy today.

Where are my workouts stored?

On your phone only, in the browser's storage. Rival has no server for your workouts, so nobody else can see them.

The flip side is that clearing your browser data or losing the phone clears them too, so tap Export backup on the Plan tab now and then. On iPhone, installing Rival to your Home Screen also keeps Safari from tidying away storage for sites you haven't opened in a while.

How do I move to a new phone?

On the old phone, open the Plan tab and tap Export backup to save a file. On the new phone, open Rival, go to Plan, tap Import backup and choose that file. Your history, ghosts and plan come across.

Can I skip my program for a day or a week?

Yes. On Today, tap Train something else. Pick a focus such as Push, Pull or Legs for just today, or line up a few sessions for the next seven days. Your program doesn't move while you do, so the day you were due is still next when you come back.

Can I use the plan I already follow?

Yes. On the Plan tab, tap Import a plan and paste it, or pick a .txt or .csv file. Lines like “Lat pulldown 3x8-10” are matched to Rival's exercises, and you can fix or leave out anything it didn't recognise. Your history stays, and you can undo right after.

What if the machine I need is taken?

Tap Swap on that exercise. Rival lists exercises for the same muscles first, starting with the free-weight or machine version of the same movement, then everything else. Sets you already logged stay where they are.

Do I have to do the readiness check-in?

No. Skip it and targets stay as planned. Answering takes three taps, and Rival shows exactly how each target changed.

Does it work without signal?

Yes. After the first time you open it, Rival saves itself on your phone, so a basement gym with no reception is fine.

What are the sample workouts I see at first?

A first run shows a week of sample sessions so every screen has something in it. Clear them with one tap before your first real workout, or keep them while you explore.

Can I use it on Android or a computer?

Yes, any modern browser works. Rival is designed for a phone held between sets, so that is where it feels best.

Your ghost is already waiting.

Rival opens with a short guided tour and a sample week of training, so you can try every feature before logging your own. Clear it with one tap when you're ready.

Open the app

Free, no account needed. Your workouts stay on your phone, and you can export a backup any time.