How LiftShift works
Import your workout history, compute insights locally, and explore dashboards that actually help you train smarter.
Getting started
LiftShift turns your workout log into clear, useful answers: which muscles are growing, what's stuck, what's improving, and what to do next. Connect Hevy, Strong, or Lyfta in seconds. No account needed. Everything runs in your browser.
- Import from Hevy (login), Hevy Pro (API key), Lyfta (API key), or CSV (Strong / Lyfta / other apps).
- Choose your body map gender and weight unit (kg / lbs) so charts and muscle visuals match you.
- Explore your dashboard: weekly volume, personal records, exercise progress, muscle heatmaps, activity calendar, and set-by-set feedback.
Import & sync options
You can bring data into LiftShift a few different ways. Pick the method that matches your app and comfort level.
Hevy: login sync
Log in with your Hevy credentials. LiftShift uses your own backend to retrieve a short-lived auth token, pulls your workouts, and converts them into a standard set format used across the app.
Hevy Pro: API key sync
If you have Hevy Pro, use your API key. LiftShift validates the key and fetches workouts through the official API endpoint, then maps them into the same internal format.
Lyfta: API key sync
Lyfta sync uses your API key to fetch workouts and workout summaries, then normalizes them to LiftShift's set format.
CSV import (Strong / Lyfta / other apps)
CSV import is the most universal option. LiftShift detects column meanings (exercise name, weight, reps, date, set type), supports different date formats, and converts units when needed.
Combining data from multiple apps
Switched from Strong to Hevy? Use both? LiftShift can merge data from multiple sources into one unified dashboard. Add a second source anytime via "Import" → "Add data source".
- Exercise names are normalized across sources (so "Barbell Bench Press" from Hevy and "Bench Press (Barbell)" from Strong map to the same canonical exercise).
- Sources are labeled so you know where each set came from.
- Duplicate sets (same exercise, same start time, same weight/reps) are detected and skipped.
Data normalization
After import, LiftShift cleans and standardizes your workouts so every chart is consistent — even if data came from different apps.
- Dates are parsed into real timestamps so filtering and time-series charts work reliably.
- Weights are converted into a single internal unit (kg) and displayed back as kg or lbs based on your preference.
- Sets are grouped into workouts (sessions) by date + time proximity so totals match what you did in the gym.
- Exercise names from different apps are fuzzy-matched to a canonical name (e.g. "BB Bench" → "Bench Press").
- Warm-up sets (labeled "w" or "warmup") are excluded from most analytics so trends reflect working sets only.
Key metrics
These are the main numbers and labels you will see across the dashboard. Use them together — one metric alone can be misleading.
Sets vs workouts (sessions)
A "set" is one logged set. A "workout" (or session) is a full group of sets done on the same day. LiftShift uses workouts to talk about consistency, and sets to talk about training volume.
Training volume
Volume is the "how much work did you do?" signal. LiftShift counts working sets and uses weight x reps (skipping warm-ups). Volume can be viewed per exercise, per muscle, or across your entire training history.
Secondary exercises contribute at a configurable multiplier (default 0.5x) since indirect work produces less stimulus than primary exercises. This multiplier can be adjusted in preferences.
Workout duration and density
Workout duration is how long your session lasted (when source data has start/end times). Density is volume per minute. Higher density often means shorter rests or faster pacing.
Rolling window comparisons
Many dashboard cards compare a recent period to the one before it: last 7 days vs. the 7 days before, last 30 days vs. previous 30 days, last year vs. previous year. This helps you quickly answer: "Am I doing more work lately?" Deltas show as percentages with directional arrows.
1RM estimate
LiftShift estimates your one-rep max using the Epley formula: weight x (1 + reps/30). It is an estimate — not a max-out test. Accuracy decreases at very high rep ranges (15+). Use it to compare strength across sessions even when you change rep ranges.
Training focus: strength vs hypertrophy vs endurance
LiftShift groups your sets by rep ranges to show your training emphasis: 1-5 reps (strength-focused), 6-12 reps (hypertrophy-focused), 13+ reps (endurance-focused). This helps you see if your recent training matches your goals.
Top 3 muscle concentration
The dashboard shows what percentage of your total weekly volume goes to your top 3 most-trained muscles. Under 55% is green (well-distributed). Over 70% is a warning that your volume is too concentrated — great for specialization phases, but worth checking for balance.
Muscle heatmaps
The muscle heatmap shows which muscle groups you're training — and how much. It turns raw exercise logs into a visual answer to questions like "Am I training back as much as chest?" and "Which muscles am I neglecting?"
How exercises are mapped to muscles
Every logged exercise is matched to a known exercise in LiftShift's database. Each exercise has defined primary muscle(s) and secondary muscle(s). Primary muscles count at 1.0x, secondary at a configurable multiplier (default 0.5x).
For example, a bench press primarily targets the chest and triceps (at 1.0x each), and secondarily targets the front shoulders (at 0.5x).
Interactive body map
The body map is fully interactive. Hover any muscle to see your weekly set rate, volume zone, and estimated progress percentage. Click any muscle to drill into a detailed view showing exactly which exercises contribute to that muscle — with primary and secondary sets broken out separately.
The body map supports both male and female silhouettes, and two view modes: group view (broad regions like Chest, Back, Arms) and muscle view (detailed individual muscles like upper chest, lats, biceps).
Rolling 7-day windows
Weekly volume is calculated using rolling 7-day windows — not calendar weeks. This matches how your body actually recovers and adapts. Starting on any given day, it sums the last 7 days of volume per muscle, giving you a realistic picture of current training stress.
You can switch between time windows: last 7 days, last 30 days, last 365 days, or all-time data. Longer windows show long-term patterns; shorter windows show what's happening right now.
Volume zones (MEV, MRV)
Each muscle's weekly volume is classified into one of five zones, using thresholds personalized to your training age:
- Activating (< MV): Below maintenance. Minimal gains. Fine for low-priority muscles only.
- Stimulating (MV–MEV): Steady progress zone. Default for most muscles.
- Amplifying (MEV–MRV): Best ROI. Sweet spot for muscles you care about.
- Maximizing (MRV–MaxV): High gains, high cost. Specialize 1-2 muscles at this level.
- Overreaching (> MaxV): Peak week only. Poor ROI, recovery suffers.
Hypertrophy scoring
Each muscle gets a 0-100 hypertrophy score based on three factors: volume (50% weight — how close you are to optimal weekly sets), progressive overload (40% — your 1RM trend), and frequency (10% — how many days per week you train that muscle).
The score is visible when hovering any muscle on the body map. Green (60+) means you're in a good growth zone. Amber (40-59) means you could optimize. Red (< 40) means the muscle likely isn't getting enough stimulus.
Muscle balance analysis
The dashboard tracks how concentrated your volume is across muscles. If your top 3 muscles get over 70% of your total volume, LiftShift flags it. You also get a radar chart view showing relative emphasis across all muscle groups in a single polar graph.
Activity & consistency
LiftShift tracks your training frequency and consistency to give you a clear picture of your habits.
GitHub-style consistency heatmap
The activity heatmap shows your entire year's training at a glance — each day as a colored square. Darker green = more volume that day. The two most recent months show larger cells with workout date numbers or a dumbbell icon. Today gets a blue ring highlight. Your peak volume day gets an amber ring.
A consistency score (0-100%) is computed from your weekly training frequency. An 8-week trend sparkline shows whether your consistency is improving (green), declining (red), or stable (blue).
Streaks
Consistency is tracked week-by-week. A streak is the number of consecutive weeks with at least one workout. The dashboard shows your current streak, your longest streak ever, and your average workouts per week.
Exercise analysis
Pick any exercise and LiftShift gives you a complete picture: strength trends, status labels, evidence badges, progress charts, and personalized commentary.
Exercise status labels
Every exercise gets a clear status based on its recent trend. LiftShift compares a recent window of sessions to the previous window and computes a directional strength change:
- Getting stronger (> +2%): clear positive change. Trend is up.
- Plateauing (between -3% and +2%): roughly stable. Time for a small push.
- Taking a dip (< -3%): clear drop. Fatigue, deload, or life stress showing.
- New: not enough sessions yet to read a trend (fewer than 2 sessions).
Each status comes with a confidence level based on session count: high (10+ sessions), medium (6+), or low (< 6). More sessions = more reliable status.
For assisted exercises where lower weight is better (e.g., assisted pull-ups), the labels invert: "easier loading" means you need less assistance, "harder loading" means you needed more.
Trend smoothing
Training data is noisy — one great day doesn't mean you're progressing, and one bad day doesn't mean you're regressing. LiftShift can smooth trend lines using an exponential moving average so you see the bigger picture.
You can toggle between "stable" mode (smoothed, less reactive to single sessions) and "reactive" mode (raw session-to-session, catches changes faster) in preferences.
Evidence badges
Each exercise shows evidence badges with the exact percentage change that produced its status label. Hover a badge to see the window size, session count, and trend direction. Recent evidence tags include: accelerating, steady progress, easing, still improving, rebound, slipping, improving, worsening.
Exercise deep dive view
Click any exercise to open the deep dive view, which shows:
- Strength progression chart with 1RM estimate trend line.
- Status card with evidence badges and a suggestion panel telling you what to do next session.
- Exercise stats: total sets, total volume, average reps, best weight, session count.
- Recent history table showing each session's sets, reps, and weight.
- Muscle involvement badge showing which muscles this exercise trains.
Personal records (PRs)
A PR in LiftShift means a new all-time best for an exercise based on your logged sets. LiftShift tracks three kinds of PRs and several PR-related signals.
Gold PRs (all-time bests)
A Gold PR is a true all-time best. LiftShift tracks three types per exercise: weight PR (heaviest weight lifted in a single set), 1RM PR (highest estimated one-rep max using the Epley formula), and volume PR (highest weight x reps in a single set).
For assisted exercises (where lower weight is better), the comparison logic is inverted — less assistance is better.
Silver PRs (2-month bests)
Experienced lifters rarely hit true all-time PRs. Silver PRs track your best performance in the last 60 days. If you haven't hit a Gold PR recently, a Silver PR still shows you're making progress. Useful for tracking momentum during training blocks.
Premature PRs
A premature PR is a big jump that you couldn't sustain. LiftShift detects this when a PR spike (> 2% improvement for weighted, > +1 rep for bodyweight) is followed by sessions that consistently fall short of that new benchmark.
If you later re-hit the PR level in two or more sessions, the premature flag is removed — the PR is validated. This prevents false positives and ensures the label only appears when the jump was genuinely unsustainable.
PR droughts
A PR drought means you haven't hit a new all-time best in over 14 days. This is normal during phases focused on form, higher reps, or rebuilding after a break. The dashboard shows the drought duration and suggests chasing a small rep or load win instead of grinding for a max.
PR frequency
LiftShift calculates how many Gold PRs you hit per week (on average) over the last 30 days. This gives you a quick "PR momentum" read on the dashboard. ~0.5/week means you hit a PR every 2 weeks. ~2/week means you're on a roll.
Plateau detection
LiftShift doesn't just tell you you're stuck — it tells you exactly what to try next. Plateau detection compares your recent sessions to previous ones and categorizes the stall, then generates a specific, actionable suggestion.
How detection works
LiftShift analyzes each exercise's trend using a windowed comparison. A recent window of sessions is compared to the immediately preceding window. If the directional strength change is between -3% and +2%, the exercise is flagged as plateauing.
The dashboard surface aggregates all plateaued exercises and ranks them by how long they've been stuck. Exercises with fewer than 2 sessions or no activity in the last 45 days are excluded.
Static vs general plateaus
LiftShift distinguishes between two types of plateaus:
- Static plateau: Both weight AND reps are frozen across multiple sessions (within 0.5 kg and 1 rep). This is a true stall — your comfort zone is showing. Suggestions are more aggressive.
- General plateau: The trend is flat but weight or reps are still varying. You're not necessarily stuck — you may just need a small nudge.
Suggestions you can actually use
For static plateaus, LiftShift calculates a suggested next weight (current weight + one standard increment) and gives concrete advice like:
- "Double progression: repeat 80 kg, add 1-2 reps across sets, then increase weight."
- "Try 82.5 kg next session, or repeat 80 kg and add a rep if form breaks."
- "Master 8 reps across all sets, then level up."
- "Get fancy: pause reps, slow eccentrics (3-4 seconds), or slightly shorter rests."
For general plateaus, suggestions are simpler: "Pick one lever: +1 rep somewhere, or a small load bump next session."
Set-by-set feedback
Open any past workout and LiftShift analyzes every single set — comparing each to the one before it — and gives you plain-English feedback. Beginners learn how to progress faster. Experienced lifters spot patterns they'd miss.
How it works
LiftShift compares each set to the previous set on the same exercise. It detects what changed (same weight, weight increase, weight decrease, or support change for assisted lifts), how much output changed, and assigns one of 19 scenarios. Each scenario generates a short badge, a tooltip with exact numbers, an explanation of why it happened, and a suggestion for next session.
Scenarios detected
The 19 scenarios cover every common set-to-set pattern:
- Same weight, more reps — "Found More", "Building Momentum". You got stronger within the session.
- Same weight, same reps — "Consistent", "Locked In". Steady output.
- Same weight, mild drop (1-2 reps) — "Normal Fatigue". Expected. Add 30 seconds rest.
- Same weight, moderate drop — "Fatigue Building". Take longer rest between sets.
- Same weight, severe drop — "Fatigue Spike", "Wiped Out". Reduce weight or stop 1-2 reps before failure.
- Weight increase, exceeded target — "Crushed It". You're ready for progression.
- Weight increase, met target — "Goal Met", "Nailed It". Hold this weight, aim for +1 rep.
- Weight increase, slightly below target — "Close Call". Keep the weight, try again.
- Weight increase, significantly below target — "Too Heavy", "Overreached". Reduce to a smaller jump.
- Weight decrease, met/recovered — "Smart Drop", "Good Reset". This was smart fatigue management.
- Weight decrease, still below — "Still Heavy", "Not Quite". Drop a bit more.
- Support decrease (assisted) — "Exceeded on Less Assist". You're progressing toward unassisted.
- Support increase (assisted) — "Good Support Reset". Rebuilding after a tough session.
Special set types
Certain set types get specialized commentary: drop sets ("Deep Set Work"), back-off sets ("Volume Builder"), top sets ("Top Set Crushed"), AMRAPs ("AMRAP Push"), failure sets ("Max Effort"), unilateral work ("Side Fatigue"), negatives ("Eccentric Work"), partials, feeder sets, and intensity techniques like myoreps and rest-pause.
Weight-up / weight-down suggestions
When LiftShift analyzes the overall quality of your sets for an exercise in a workout, it also tells you whether to stay at your current top weight, increase it, or reduce it — with specific numbers. For example: "At 80 kg, you hit at least 8 reps. Keep this load until you can repeat 10+ reps, then move to 82.5 kg."
Calendar filtering
This is one of LiftShift's most powerful features. Pick any date range — a single day, a week, a month, a year, or multiple custom ranges — and every chart, every metric, every insight recalculates for just that window.
How it works
The calendar filter cascades through everything. When you select a range:
- All workout data outside the range is hidden. Only sets within your selection are used.
- Every derived metric recalculates: daily summaries, exercise stats, volume trends, PRs, muscle heatmaps, streaks, deltas — everything.
- The "effective now" date changes to the latest date in your filtered data, so streak calculations and time-window comparisons use the correct endpoint.
- The filter cache key changes, so all memoized computations refresh instantly.
Selection modes
The calendar supports multiple selection modes: single day (click any date), single week (click the week number), month (click the month header), year (click the year header), or multiple custom weeks (Ctrl/Cmd-click to add/remove weeks).
Use cases
- Compare your 2025 training against 2024 by selecting each year and observing the metrics.
- Isolate a specific training block (e.g., a 12-week program) and see exactly what changed.
- Check your recent consistency by selecting the last 30 days.
- Analyze a single workout week to get detailed set-by-set feedback without noise from other weeks.
AI export & sharing
LiftShift can export your full structured training data in a format designed for AI analysis. Pick a timeframe, optionally select analysis modules, then paste into any AI tool and ask your own questions.
How to use it
- Choose your timeframe: last session, 1 month, 3 months, 6 months, or all data.
- Optionally select analysis modules (see below). Leaving them all unchecked exports raw logs only.
- Click "Generate Prompt" to build a structured prompt + data. The formatted output is copied to your clipboard.
- Paste into any AI tool (ChatGPT, Claude, Gemini, etc.) and get a custom analysis.
Built-in analysis modules
You can include up to 8 pre-built analysis modules in your prompt:
- General Deep Audit: comprehensive overview, highest-impact changes.
- Redundancy Check: flag overlapping exercises, suggest swaps.
- Junk Volume Audit: identify exercises where you're adding sets but not progressing.
- Intensity Drift: detect if volume is maintained but intensity is dropping.
- Structural Balance: push-to-pull ratios, muscle group balance.
- Fatigue Correlation: heavy lifts impacting subsequent sessions ~48h later.
- Joint Health Audit: scan for joint irritation risks (elbows, shoulders, knees, back).
- Unilateral Balance Check: left/right asymmetry detection (> 10% imbalance).
The prompt also includes your training experience level (beginner/intermediate/advanced), determined automatically from your total training history and session count.
Privacy note
The export is generated in your browser. Nothing is sent to LiftShift servers. When you paste into an AI tool, you control what data is shared. See the Privacy section for more details.
Lifetime Progress
Every muscle in your body has a training journey. Lifetime Progress tracks that journey across 9 tiers — from Seedling to Legend — giving you a sense of how deep your training history goes for each muscle group.
The 9 tiers
The journey from Seedling to Legend uses diminishing returns so early milestones feel achievable and late tiers require real dedication:
- Seedling (0%): Just getting started. Focus on learning movements and building the habit.
- Sprout (2%): You have a workout routine. Keep showing up consistently.
- Sapling (4%): You train regularly. Now focus on progressive overload.
- Foundation (7%): Solid fundamentals. Time to build muscle mass.
- Builder (14%): Noticeable muscle growth. Push for progressive overload.
- Sculptor (25%): Significant muscle development. Refine your physique.
- Elite (35%): Impressive dedication. Fine-tune your training and nutrition.
- Master (55%): Elite-level dedication. Maintain and refine your masterpiece.
- Legend (100%): The pinnacle of fitness dedication. You have earned your legacy.
How achievement is calculated
Achievement percentage uses a diminishing returns formula: (lifetime sets) / (lifetime sets + 3,500) x 100.
- At 250 lifetime sets: ~7% (Seedling → Sprout range).
- At 1,000 sets: ~22% (Sprout → Builder range).
- At 3,500 sets: 50% (halfway to Legend).
- At 7,500 sets: ~68% (Master tier).
- At 25,000 sets: ~88% (deep into the Legend tier).
For each muscle, LiftShift also estimates weeks to your next tier based on your current weekly set rate. If you're not currently training a muscle, the estimate shows "∞ years" — signaling you might want to add it back to your routine.
How to use it
Use Lifetime Progress as a consistency motivator. It gamifies showing up. The per-muscle breakdown highlights imbalances in your training history — maybe your chest has 10x the sets of your back. The time-to-next-tier estimate gives you a tangible goal for muscles you've been neglecting.
Flex cards & year-in-review
The Flex View is a carousel of 8 beautifully designed cards showing your training highlights. They're built to be shareable — each card is a self-contained summary with the LiftShift watermark.
Summary card
Total workouts, training hours, total volume lifted, sets, and reps — all as large count-up numbers.
Volume comparison card
Your total volume compared to real-world objects — e.g. "That's like lifting 3.5 gorillas." Uses a database of 33 comparison items from a dozen eggs (0.08 kg) to an oil tanker (200 million kg). The algorithm picks the comparison that divides most cleanly into your total.
Best month card
Which month had the most workouts, with a 12-bar chart showing monthly distribution and average workouts per active month.
Streak card
Your longest training streak in weeks. If currently on a streak, a fire badge shows "Currently on a {n} week streak!"
PRs card
Total PR count inside a laurel wreath icon. Your top 2 PR exercises shown as progress bars with weight displays and exercise thumbnails.
Top exercises card
Top 3 most-performed exercises with gold/silver/bronze medals. Exercise thumbnails in circular containers.
Yearly heatmap card
GitHub-style heatmap for the full year. 12 mini monthly grids of colored cells. Green intensity scale: 0 sets (gray), 1-15 (light green), 46+ (deep emerald). Shows total workouts this year as a count-up number.
Muscle focus card
Toggle between a compact body map heatmap and a radar chart of muscle group distribution. Lists your top 3 most-trained muscles. Year label in the header.
Privacy & storage
LiftShift is designed so you get analytics without giving up control of your data. The guiding principle: everything runs in your browser.
- Analytics are computed locally in your browser — charts, summaries, trends, and per-exercise history.
- Workout data is cached in your browser's local storage (compressed with LZ-string) so the dashboard loads instantly on return visits.
- Preferences like weight units, body map gender, and theme are stored locally.
- You can clear your data at any time from the app preferences or by clearing your browser storage.
- "Update data" re-syncs your latest workouts without losing your analytics state.
Troubleshooting
Common issues and how to fix them.
Dates not parsing correctly
If LiftShift says it "couldn't parse workout dates", your source app is likely using a non-English locale. Switch the exporting app to English, re-export, and import again.
Exercise names vary across sessions
If your charts look wrong, check for inconsistent exercise names — "Bench Press" vs "Barbell Bench" vs "Flat Bench" will be treated as different exercises. LiftShift uses fuzzy matching, but significant variations may not be normalized. Standardize your naming in your logging app.
Exercise doesn't appear on the heatmap
An exercise must match a known exercise in LiftShift's asset database to show muscle emphasis. If your exercise name doesn't match (e.g., a very custom or unusual name), it won't appear on the body map. The exercise will still show in all other charts and analytics.
Weight units are wrong
If weights are showing incorrectly (e.g., 100 kg bench press when you lift 100 lbs), check your import preferences. CSV files sometimes embed units in headers like "Weight (kg)" — LiftShift tries to detect this automatically. You can also manually select kg or lbs during import.
Warm-ups showing in volume totals
LiftShift filters out sets marked as warm-up (type "w" or containing "warmup"). If warm-ups are still appearing, check that your logging app marks them correctly. If your app doesn't support warm-up labels, all sets will be treated as working sets.
PRs don't match your logging app
Different apps define PRs differently. LiftShift uses best logged weight per exercise from working sets. If your app counts warm-ups as PRs or uses a different formula, Pro results will differ.
