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: 59
Strength Sets: 20, 34%
Hypertrophy Sets: 39, 66%
Upper Sets: 34 (10s , 24h ) , 3d
Lower Sets: 25 (10s , 15h ) , 3d
Core Sets: 0
Push Sets: 25 (10s , 15h ) , 2d
Pull Sets: 14 (5s , 9h ) , 1d
Legs Sets: 20 (5s , 15h ) , 3d
Shoulders: 20↓ (8s , 12h ) , 3d
Triceps: 11 (5s , 6h ) , 2d
Back: 13↓ (3s , 11h ) , 3d
Abs: 0↑
Glutes: 14↓ (8s , 6h ) , 3d
Hamstrings: 16↓ (5s , 11h ) , 3d
Quadriceps: 17↓ (8s , 9h ) , 3d
Chest: 18↓ (8s , 11h ) , 3d
Biceps: 6↑ (6h ) , 1d
Calves: 11 (5s , 6h ) , 3d
Forearms: 5↑ (5h ) , 1d
{"maxWidth":2400,"url":"/planner","isLoggedIn":false}
{"exportedProgram":{"customExercises":{},"program":{"vtype":"program","id":"sshamwbe","name":"GZCLP by Blacknoir","url":"","author":"","shortDescription":"","description":"","nextDay":1,"weeks":[],"isMultiweek":false,"days":[{"id":"nwenktvq","name":"Day 1","exercises":[]}],"exercises":[],"tags":[],"deletedDays":[],"deletedWeeks":[],"deletedExercises":[],"clonedAt":1787731956355,"planner":{"vtype":"planner","name":"GZCLP by Blacknoir","weeks":[{"name":"Week 1","days":[{"name":"Day 1","exerciseText":"t1: Squat, Barbell / 4x3, 1x3+ / 5x2, 1x2+ / 9x1, 1x1+ / 1x5 / progress: custom(increase: 2.5kg) {~\n if (completedReps[ns] > 10) {\n completedReps[ns] = 10\n }\n\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else if (setVariationIndex == 3) {\n setVariationIndex = 4\n } else {\n weights = completedWeights * 0.85\n setVariationIndex = 1\n }\n~}\n\n\nt1: Bench Press, Barbell / 4x3, 1x3+ / 5x2, 1x2+ / 9x1, 1x1+ / 1x5 / progress: custom(increase: 2.5kg) {~\n if (completedReps[ns] > 10) {\n completedReps[ns] = 10\n }\n\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else if (setVariationIndex == 3) {\n setVariationIndex = 4\n } else {\n weights = completedWeights * 0.85\n setVariationIndex = 1\n }\n~}\n\n\nt2: Front Squat, Smith Machine / 3x10 / 3x8 / 3x6 / progress: custom(fsWeight: 0kg, increase: 2.5kg, resetIncrease: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n if (setVariationIndex == 1) {\n state.fsWeight = completedWeights[ns]\n }\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else {\n setVariationIndex = 1\n weights = state.fsWeight + state.resetIncrease\n }\n~}\n\n\nt2: Incline Bench Press, Barbell / 3x10 / 3x8 / 3x6 / progress: custom(ibWeight: 0kg, increase: 2.5kg, resetIncrease: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n if (setVariationIndex == 1) {\n state.ibWeight = completedWeights[ns]\n }\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else {\n setVariationIndex = 1\n weights = state.ibWeight + state.resetIncrease\n }\n~}\n\n\nt3: Seated Leg Curl, Leverage Machine / 2x15, 1x15+ / progress: custom(increase: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}\n\n\nt3: Lateral Raise, Dumbbell / 2x15, 1x15+ / progress: custom(increase: 1kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}"},{"name":"Day 2","exerciseText":"t1: Deadlift, Barbell / 4x3, 1x3+ / 5x2, 1x2+ / 9x1, 1x1+ / 1x5 / progress: custom(increase: 5kg) {~\n if (completedReps[ns] > 10) {\n completedReps[ns] = 10\n }\n\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else if (setVariationIndex == 3) {\n setVariationIndex = 4\n } else {\n weights = completedWeights * 0.85\n setVariationIndex = 1\n }\n~}\n\n\nt3: Bent Over Row, Smith Machine / 2x15, 1x15+ / progress: custom(increase: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}\n\n\nt3: Lat Pulldown, Cable / 2x15, 1x15+ / progress: custom(increase: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}\n\n\nt2: Romanian Deadlift, Barbell / 3x10 / 3x8 / 3x6 / progress: custom(rdlWeight: 0kg, increase: 2.5kg, resetIncrease: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n if (setVariationIndex == 1) {\n state.rdlWeight = completedWeights[ns]\n }\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else {\n setVariationIndex = 1\n weights = state.rdlWeight + state.resetIncrease\n }\n~}\n\n\nt3: Bicep Curl, Dumbbell / 2x15, 1x15+ / progress: custom(increase: 1kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}"},{"name":"Day 3","exerciseText":"t1: Overhead Press, Dumbbell / 4x3, 1x3+ / 5x2, 1x2+ / 9x1, 1x1+ / 1x5 / progress: custom(increase: 1.25kg) {~\n if (completedReps[ns] > 10) {\n completedReps[ns] = 10\n }\n\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else if (setVariationIndex == 3) {\n setVariationIndex = 4\n } else {\n weights = completedWeights * 0.85\n setVariationIndex = 1\n }\n~}\n\n\nt2: Front Squat, Smith Machine / 3x10 / 3x8 / 3x6 / progress: custom(fsWeight: 0kg, increase: 2.5kg, resetIncrease: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n if (setVariationIndex == 1) {\n state.fsWeight = completedWeights[ns]\n }\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else {\n setVariationIndex = 1\n weights = state.fsWeight + state.resetIncrease\n }\n~}\n\n\nt2: Incline Bench Press, Barbell / 3x10 / 3x8 / 3x6 / progress: custom(ibWeight: 0kg, increase: 2.5kg, resetIncrease: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps >= reps\n ) {\n if (setVariationIndex == 1) {\n state.ibWeight = completedWeights[ns]\n }\n weights = completedWeights[ns] + state.increase\n } else if (setVariationIndex == 1) {\n setVariationIndex = 2\n weights = completedWeights[ns]\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[ns]\n } else {\n setVariationIndex = 1\n weights = state.ibWeight + state.resetIncrease\n }\n~}\n\n\nt3: Triceps Pushdown, Cable / 2x15, 1x15+ / progress: custom(increase: 1kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}\n\n\nt3: Lateral Raise, Dumbbell / 2x15, 1x15+ / progress: custom(increase: 1kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}\n\n\nt3: Seated Leg Curl, Leverage Machine / 2x15, 1x15+ / progress: custom(increase: 2.5kg) {~\n if (\n completedNumberOfSets == numberOfSets &&\n completedReps[ns] >= 25\n ) {\n weights = completedWeights[ns] + state.increase\n }\n~}"}]}]}},"version":"20260702120000","settings":{"timers":{"warmup":90,"workout":180,"reminder":900},"units":"kg"}},"shouldSyncProgram":false,"isMobile":false,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","revisions":[]}