Skip to content

Repository files navigation

LiftShift Logo

LiftShift

Free and open source workout analytics.

Website · How it works · Features · License


LiftShift takes your workout logs from Hevy, Strong, or Lyfta and shows you what they actually mean. Which muscles are you neglecting? Is your bench press actually getting stronger, or just wobbling around the same weight? What should you try next session? Your logging app won't answer those questions. LiftShift does.

Everything runs locally in your browser. No account needed. Sync your data through the app's API or upload a CSV, and the analysis happens on your device.


Screenshots

UI Screenshot 1
UI Screenshot 2
UI Screenshot 3
UI Screenshot 4
UI Screenshot 5
UI Screenshot 6

Features

Muscle heatmaps: an interactive body map that shows which muscles you train and how much. Click any muscle to see the exact exercises that built it. Tracks weekly volume, volume zones (MEV/MRV thresholds that scale with your training age), and a 0-100 hypertrophy score per muscle. Supports male and female silhouettes.

PR tracking: three types of personal records. All-time bests, 2-month bests (for experienced lifters who rarely hit true PRs), and premature PRs (big jumps you couldn't sustain). Also tracks PR droughts and your PR hit rate per week.

Plateau detection: every exercise gets a status, like Getting stronger, Plateauing, or Taking a dip, with a confidence level based on how many sessions you've logged. When you stall, LiftShift tells you what to try: add a rep, bump the weight, deload, or switch up the rep scheme. Distinguishes between static plateaus (weight and reps both frozen) and general plateaus (flat trend but still varying).

Set-by-set feedback: open any past workout and LiftShift analyzes each set across 19 scenarios. Things like normal fatigue, weight jumps that were too aggressive, smart back-off sets, and AMRAP pushes. Each set gets a badge and a plain-English suggestion for next session. It also tells you whether to stay at your current top weight, increase it, or reduce it.

Calendar filtering: pick any date range, from a single day to the full year, and every chart, metric, and calculation updates to just that window. Compare training blocks without exporting and reimporting.

Multi-app merge: switched from Strong to Hevy? Use both? LiftShift normalizes exercise names across sources and merges everything into one dataset. Duplicate sets are detected and skipped.

AI export: export your structured training data in a format built for AI tools. Pick from 8 analysis modules (junk volume audit, structural balance, joint health check, unilateral balance, and more), choose a timeframe, and paste into ChatGPT, Claude, or whatever you use.

Consistency tracking: a GitHub-style heatmap of your entire training year, plus a streak counter, consistency score with an 8-week trend, and average workouts per week.

Lifetime Progress: a per-muscle journey from Seedling to Legend across 9 tiers based on cumulative sets. Shows estimated time to your next milestone. Kind of gamified, mostly a motivator to not skip leg day for six months.

Flex cards: 8 shareable cards showing your training highlights. Volume comparisons (your total lifted vs real-world objects), PR totals, best month, streak length, top exercises, and a yearly heatmap.


Supported apps

App Import method
Hevy Login sync, Hevy Pro API key, or CSV
Strong CSV upload
Lyfta API key or CSV
Motra Excel or CSV upload
Other Generic CSV (auto-detects columns)

More details at liftshift.app/supported-apps.


Quick Start

Export data from Hevy app Upload CSV to LiftShift Explore analytics dashboard Get real-time feedback and filter data
  1. Pick your platform (Hevy, Strong, Lyfta, or CSV upload).
  2. Choose body map gender and weight unit (kg or lbs).
  3. Connect your data (log in, enter an API key, or upload a file).
  4. Explore Dashboard, Exercises, History, Muscle Analysis, and Flex.

Strong CSV users: LiftShift handles semicolon-delimited files, quoted fields, and unit-suffixed headers like Weight (kg).


Local Development

git clone https://github.com/aree6/LiftShift.git
cd LiftShift
npm install
npm run dev

Requires Node.js >= 22. See CONTRIBUTING.md for setup details and coding standards.

Tech stack: React 19, TypeScript, Vite, Tailwind CSS, Recharts on the frontend. Node.js + Express + Puppeteer on the backend proxy. All analytics run client-side. The backend only proxies API calls to Hevy and Lyfta.


Troubleshooting

If LiftShift says it "couldn't parse workout dates," your source app is probably using a non-English locale. Switch the Hevy app language to English, export again, and re-upload.

Set Hevy export language to English

License, Attribution & Security

LiftShift is licensed under AGPL-3.0 (LICENSE). The official deployment is at liftshift.app. Any deployment on another domain is unofficial and may not follow the same security practices. Don't enter your credentials into an unofficial deployment.

If you deploy LiftShift publicly, you need visible attribution: a link to liftshift.app and a link to the source for the version you're running. Removing or hiding attribution is a license violation.


Maintainer

GitHub: aree6 · LiftShift repo
Email: mohammadar336@gmail.com


Support