This tool allows you to quickly build your weightlifting programs, ensure you have proper weekly volume per muscle group , and balance it with the time you spend in a gym . You can build multi-week programs, plan your mesocycles, deload weeks, testing 1RM weeks, and see the weekly undulation of volume and intensity of each exercise on a graph.
Set the program name, create weeks and days, type the list of exercises for each day, putting each exercise on a new line, along with the number of sets and reps after slash (/) character, like this:
Squat / 3x3-5
Romanian Deadlift / 3x8
Autocomplete will help you with the exercise names. You can also create custom exercises if they're missing in the library.
On the right you'll see Weekly Stats , where you can see the number of sets per week per muscle group, whether you're in the recommended range (indicated by color), strength/hypertrophy split, and if you hover a mouse over the numbers - you'll see what exercises contribute to that number, and how much.
The exercise syntax supports RPEs , percentage of 1RM , rest timers, various progressive overload types, etc. Read more about the features in the docs !
When you're done, you can convert this program to Liftosaur program, and run what you planned in the gym, using the Liftosaur app !
To use this program:
Install Liftosaur app Copy the link to this program by clicking on below Import the link in the app, on the Choose Program screen. Week Stats
Total Sets: 66
Strength Sets: 3, 5%
Hypertrophy Sets: 63, 95%
Upper Sets: 33 (33h ) , 3d
Lower Sets: 27 (27h ) , 3d
Core Sets: 6 (3s , 3h ) , 2d
Push Sets: 21 (21h ) , 2d
Pull Sets: 15 (15h ) , 2d
Legs Sets: 24 (24h ) , 2d
Shoulders: 20↓ (2s , 18h ) , 3d
Triceps: 12 (12h ) , 2d
Back: 14↓ (2s , 12h ) , 4d
Abs: 6↑ (3s , 3h ) , 2d
Glutes: 20↓ (2s , 18h ) , 4d
Hamstrings: 15↓ (2s , 14h ) , 4d
Quadriceps: 21↓ (2s , 20h ) , 4d
Chest: 17↓ (2s , 15h ) , 3d
Biceps: 6↑ (6h ) , 1d
Calves: 11 (11h ) , 3d
Forearms: 5↑ (5h ) , 1d
{"maxWidth":2400,"url":"/planner","isLoggedIn":false}
{"exportedProgram":{"customExercises":{},"program":{"planner":{"name":"Thinner Leaner Stronger (5-day) Phase 4","weeks":[{"name":"Week 1","days":[{"name":"Day 1 - Lower Body A","exerciseText":"t: Lunge[1-8] / used: none / 3x6-8 / 70% / @8+ / 180s / warmup: none / update: custom() {~\nif (week != 9) {\n if (setIndex > 0) {\n //state.failure = 0\n for (var.i in completedReps) {\n if (var.i <= setIndex && (completedReps[var.i] < minReps || (completedReps[var.i] == minReps && completedRPE[var.i] > RPE))) {\n if (state.failure < 3) {\n state.failure += 1\n }\n } else if (var.i <= setIndex && (completedReps[var.i] >= reps && completedRPE[var.i] <= RPE)) {\n if (state.failure > 0) {\n state.failure -= 1\n }\n }\n }\n if (state.failure < 1 && (completedReps[setIndex] >= reps && completedRPE[setIndex] <= RPE)) {\n weights = completedWeights[setIndex] + state.increment\n } else if (state.failure < 3 && (completedReps[setIndex] < minReps || (completedReps[setIndex] == minReps && completedRPE[setIndex] > RPE))) {\n weights = completedWeights[setIndex] - state.increment/2\n } else {\n weights = completedWeights[setIndex]\n }\n }\n }\n~} / progress: custom(failure: 0, increment: 5kg) {~\nif (week != 9) {\n rm1 = calculate1RM(completedWeights[numberOfSets], completedReps[numberOfSets]) * rpeMultiplier(1, completedRPE[numberOfSets])\n if (state.failure < 1 && (completedReps[numberOfSets] >= reps && completedRPE[numberOfSets] <= RPE)) {\n weights = completedWeights[numberOfSets] + state.increment\n } else if (state.failure < 3 && (completedReps[numberOfSets] < minReps)|| (completedReps[numberOfSets] == minReps && completedRPE[numberOfSets] > RPE)) {\n weights = completedWeights[numberOfSets] - state.increment/2\n } else {\n weights = completedWeights[numberOfSets]\n } \n }\n~}\n\nt: Crunch[1-8] / used: none / 3x6+ / 120s / warmup: none / progress: custom(start:6, target: 30, weeks:8, increment: 2.5kg) {~\n if (completedReps <= state.target) {\n if (completedReps >= reps) {\n reps += round(((state.target - state.start) / state.weeks))\n }\n }\n else {\n reps = state.start\n weights += state.increment\n }\n~}\n\nt: Plank[1-8] / used: none / 3x10+ / 120s / warmup: none / progress: custom(mintime:10, targettime: 120, increment: 5, variation:1) {~\n descriptionIndex = state.variation\n if (completedReps >= reps) {\n reps += state.increment\n }\n if (descriptionIndex == 1 && completedReps > state.targettime) {\n reps = state.mintime\n state.variation = 2\n descriptionIndex = state.variation\n }\n~}\n\nprimary: Squat[1-9] / used: none / 3x6-8 / 70% / @8+ / 180s / warmup: 1x10 50%, 1x4 70%\naccessory: Squat[1-9] / used: none / 3x8-10 / 75% / @9+ / 120s / warmup: none\ncore: Squat[1-8] / used: none / 3x6+ (AMRAP) / @10 / 120s / warmup: none\n\n// [Barbell Squat Video](https://www.youtube.com/watch?v=KJ_tmkdWmE0&feature=youtu.be)\nfirst: Squat[1,1-9] / ...primary: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Barbell Romanian Deadlift Video](https://m.youtube.com/watch?v=ua-Zlgpe1no&feature=youtu.be)\nRomanian Deadlift, Barbell[2,1-9] / ...primary: Squat / warmup: none / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Leg Press Video](https://m.youtube.com/watch?v=shOprEcfDPM&feature=youtu.be)\nSeated Leg Press[3,1-9] / ...accessory: Squat/ update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Dumbbell Step-Up Video](https://www.youtube.com/watch?v=RjNa0T_tIBo&feature=youtu.be)\nStep up, Dumbbell[4,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }","id":"ayalzxti"},{"name":"Day 2 - Push","exerciseText":"// [Incline Dumbbell Bench Press Video](https://www.youtube.com/watch?v=IQFBxglnH_k&feature=youtu.be)\nIncline Bench Press, Dumbbell[1,1-9] / ...primary: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Barbell Bench Press Video](https://m.youtube.com/watch?v=YLBMLUfBwUo&feature=youtu.be)\nBench Press, Barbell[2,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Incline Barbell Bench Press Video](https://m.youtube.com/watch?v=cPbElRT55C8&feature=youtu.be)\nIncline Bench Press[3,1-9] / ...primary: Squat / warmup: none / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Seated Triceps Press Video](https://www.youtube.com/watch?v=ZOUDq0fMWO8)\n//\n// Seated\nTriceps Extension, Dumbbell[4,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [*Abdominal Rollout Video*](https://www.youtube.com/watch?v=PwqJTPsI6i0&t=69)\n//\n// *Optional Exercise, As Many Reps As Possible (AMRAP)*\n//\n// **Variation 1:** on your knees\n\n// [*Abdominal Rollout Video*](https://www.youtube.com/watch?v=PwqJTPsI6i0&t=69)\n//\n// *Optional Exercise, As Many Reps As Possible (AMRAP)*\n//\n// **Variation 2:** on your feet,like a plank\n\nAb Wheel, Bodyweight[5,1-8] / 3x6+ (AMRAP) / ...core: Squat / progress: custom(mintime:6, targettime: 30, increment: 3, variation:1) { ...t: Plank }","id":"lmiicjwy"},{"name":"Day 3 - Pull","exerciseText":"// [Barbell Deadlift Video](https://m.youtube.com/watch?v=oZTO3clUAWU&feature=youtu.be)\nDeadlift[1,1-9] / ...primary: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [One-Arm Dumbbell Row Video](https://www.youtube.com/watch?v=BjJzsDciak8&feature=youtu.be)\nBent Over One Arm Row, Dumbbell[2,1-9] / ...primary: Squat / warmup: none / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Lat Pulldown Video](https://m.youtube.com/watch?v=PJXwrqUJG9A&feature=youtu.be)\n//\n// Close Grip\nclosegrip: Lat Pulldown[3,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Barbell Curl Video](https://www.youtube.com/watch?v=iwYZYvWc9BY&feature=youtu.be)\nBicep Curl, Barbell[4,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 2.5kg) { ...t: Lunge }","id":"dvqzlfgc"},{"name":"Day 4 - Upper Body","exerciseText":"// [Arnold Press Video](https://www.youtube.com/watch?v=uGxWKUbnsJ0&feature=youtu.be)\nArnold Press, Dumbbell[1,1-9] / 2.5kg / ...primary: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 2.5kg) { ...t: Lunge }\n// [Close Grip Barbell Bench Press Video](https://m.youtube.com/watch?v=vDZ0QvMw_w0&feature=youtu.be)\nBench Press Close Grip[2,1-9] / ...primary: Squat / warmup: none / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Cable Side Raise Video](https://www.youtube.com/shorts/3e-D9UJwwBg)\n//\n// Unilateral\nLateral Raise, Cable[3,1-9] / 2.5kg / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 2.5kg) { ...t: Lunge }\n// [Dumbbell Rear Lateral Raise Video](https://www.youtube.com/watch?v=oYTGPYLfpSM&feature=youtu.be)\n//\n// Seated\nReverse Fly, Dumbbell[4,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 2.5kg) { ...t: Lunge }\n// [*Crunch Video*](https://www.youtube.com/watch?v=NGRKFMKhF8s&t=70s)\n//\n// *Optional Exercise*\n//\n// *do As Many Reps As Possible (AMRAP)*\nCrunch, Bodyweight[5,1-8] / ...core: Squat / 3x10+ (AMRAP) / progress: custom(start:10, target: 50, weeks:8, increment: 2.5kg) { ...t: Crunch }","id":"rkkrwzmz"},{"name":"Day 5 - Lower Body B","exerciseText":"// [Barbell Squat Video](https://www.youtube.com/watch?v=KJ_tmkdWmE0&feature=youtu.be)\nlast: Squat[1,1-9] / ...primary: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Leg Curl Video](https://m.youtube.com/watch?v=1N9BEWbf0E4&feature=youtu.be)\nSeated Leg Curl, Leverage Machine[2,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Dumbbell Bulgarian Split Squat Video](https://www.youtube.com/watch?v=DCGHjnIekw0&feature=youtu.be)\nBulgarian Split Squat, Dumbbell[3,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }\n// [Barbell Hip Thrust Video](https://m.youtube.com/watch?v=MxrBskXjVHU&feature=youtu.be)\nHip Thrust[4,1-9] / ...accessory: Squat / update: custom() { ...t: Lunge } / progress: custom(failure: 0, increment: 5kg) { ...t: Lunge }","id":"zggsyydt"}],"id":"ldwexdlz"},{"name":"Week 2","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"httzmbnl"},{"name":"Day 2 - Push","exerciseText":"","id":"gtegsbkk"},{"name":"Day 3 - Pull","exerciseText":"","id":"zamovenv"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"eowdjbzb"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"gpxryhuo"}],"id":"omxekems"},{"name":"Week 3","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"zqymwbqh"},{"name":"Day 2 - Push","exerciseText":"","id":"rzndbntb"},{"name":"Day 3 - Pull","exerciseText":"","id":"hxbsxdnu"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"ealskafn"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"cqcnobhh"}],"id":"yfbalkff"},{"name":"Week 4","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"qwtaahbl"},{"name":"Day 2 - Push","exerciseText":"","id":"xlnhwcss"},{"name":"Day 3 - Pull","exerciseText":"","id":"yfgozisj"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"swydkyvt"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"tlsiqsig"}],"id":"sqqnpgqh"},{"name":"Week 5","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"qwkquahs"},{"name":"Day 2 - Push","exerciseText":"","id":"rrlifawf"},{"name":"Day 3 - Pull","exerciseText":"","id":"tdylbpqu"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"cyrlresn"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"josqmjid"}],"id":"wnkpbtkq"},{"name":"Week 6","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"swakzhqr"},{"name":"Day 2 - Push","exerciseText":"","id":"vaypexnh"},{"name":"Day 3 - Pull","exerciseText":"","id":"igkrgaeb"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"jnmzhvov"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"vzcylfbm"}],"id":"nnymobxy"},{"name":"Week 7","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"bwndrnnu"},{"name":"Day 2 - Push","exerciseText":"","id":"qstsepip"},{"name":"Day 3 - Pull","exerciseText":"","id":"rakeguuz"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"jsutpqry"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"uhvafits"}],"id":"wjrlvnnn"},{"name":"Week 8","days":[{"name":"Day 1 - Lower Body A","exerciseText":"","id":"ktrjveyg"},{"name":"Day 2 - Push","exerciseText":"","id":"msbahiyt"},{"name":"Day 3 - Pull","exerciseText":"","id":"mctupqjf"},{"name":"Day 4 - Upper Body","exerciseText":"","id":"bgrgwqno"},{"name":"Day 5 - Lower Body B","exerciseText":"","id":"jqtycafp"}],"id":"tqrdjvnh"},{"name":"Week 9 - Deload Week","days":[{"name":"Day 1 - Lower Body A Deload","exerciseText":"primary: Squat / used: none / 2x3 / progress: none\naccessory: Squat / used: none / 2x4 / progress: none","id":"ulppghal"},{"name":"Day 2 - Push Deload","exerciseText":"","id":"elnqvran"},{"name":"Day 3 - Pull Deload","exerciseText":"","id":"vupkaymg"},{"name":"Day 4 - Upper Body Deload","exerciseText":"","id":"rompupqh"},{"name":"Day 5 - Lower Body B Deload","exerciseText":"","id":"mgkhuxys"}],"id":"sqwhpubx"}],"vtype":"planner"},"deletedExercises":[],"exercises":[],"days":[{"name":"Day 1","exercises":[],"id":"ykdfbhxb"}],"deletedDays":[],"url":"","isMultiweek":false,"name":"Thinner Leaner Stronger (5-day) Phase 4","weeks":[],"nextDay":1,"shortDescription":"","clonedAt":1726738401736,"description":"","id":"rmlqeniw","tags":[],"deletedWeeks":[],"author":"","vtype":"program"},"version":"20260304084247","settings":{"timers":{"warmup":90,"workout":120,"reminder":900},"units":"kg"}},"shouldSyncProgram":false,"isMobile":false,"revisions":[]}