LiftShift turns workout exports into structured analytics and insights.
LiftShift has one canonical hosted instance:
- Canonical domain: https://liftshift.app
Deployments on any other domain are unofficial. Unofficial deployments may be modified and may not follow the same security practices. Do not assume an unofficial deployment is trustworthy with any credentials.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
- Local license file:
./LICENSE - Full license text (online): https://www.gnu.org/licenses/agpl-3.0.txt
If you run a modified version for users to interact with over a network, the AGPL requires making the Corresponding Source for the running version available to those users (see AGPL §13).
Public deployments must include visible attribution to the upstream project.
Minimum acceptable attribution:
- Link to official site: https://liftshift.app
- Source link: a publicly accessible link to the Corresponding Source for the exact version running
Attribution must be reasonably discoverable during normal use (for example: footer, About modal, or Settings). Removing, hiding, or obscuring attribution is treated as non-compliance.
By submitting a contribution (code, documentation, or any other material) to this repository, you agree that:
- Your contribution is provided under AGPL-3.0 terms for inclusion in this project.
- You have the right to submit the contribution and it does not contain confidential information.
- Select your platform (Hevy / Strong)
- Hevy: Choose your body type + weight unit, then Continue to login/sync (or import CSV). / Strong: Choose body type + unit, then import CSV
- Explore your analytics across Dashboard, Exercises, and History tabs
- Get insights with real-time feedback and flexible filtering
Strong CSV imports support common export variants, including:
- Semicolon-delimited (
;) files with quoted fields - Unit-suffixed headers like
Weight (kg)andDistance (meters)
If you see this error:
"We detected a Hevy workout CSV, but couldn't parse the workout dates. This usually happens when the Hevy export language isn't English. Please switch Hevy app language to English, export again, and re-upload."
Do the following:
- Switch your Hevy app language to English
- Export your workout CSV again
- Re-upload it to LiftShift
- Dashboard Analytics - Volume trends, workout distribution, key metrics
- Exercise Tracking - Personal records, 1RM estimates, performance trends
- Trend Confidence - Trend insights include confidence and short evidence notes to reduce noisy recommendations
- History Visualization - Detailed workout logs with date filtering
- Set-by-Set Feedback - Real-time feedback on your performance (including rolling, fatigue-aware expected rep ranges)
- Session Goal Detection - Detects whether a session was Strength/Hypertrophy/Endurance/Mixed based on rep-zone distribution
- Local Storage - Data saved in your browser
- Theme Modes - Day (light), Medium dark, Midnight dark, Pure black, and Texture
- PR: Best-ever weight for an exercise (shown with absolute change).
- Volume PR: Best-ever single-set volume for an exercise (
weight × reps, across all history; shown with percent change).
This is intended for local development and contributor workflows. It is not a production deployment guide.
git clone https://github.com/aree6/LiftShift.git
cd LiftShift
npm install
npm run dev
- GitHub repo: https://github.com/aree6/LiftShift
- GitHub profile: https://github.com/aree6
- Email: [email protected]
If you find this project helpful, you can support it here:
- Buy Me a Coffee: https://www.buymeacoffee.com/aree6
- Ko-fi: https://ko-fi.com/aree6
- The only official deployment is https://liftshift.app.
- Any other domain is unofficial. Do not enter credentials into an unofficial deployment.