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: 80
Strength Sets: 16, 20%
Hypertrophy Sets: 64, 80%
Upper Sets: 64 (8s , 56h ) , 4d
Lower Sets: 16 (8s , 8h ) , 2d
Core Sets: 0
Push Sets: 44 (8s , 36h ) , 4d
Pull Sets: 24 (4s , 20h ) , 3d
Legs Sets: 12 (4s , 8h ) , 2d
Shoulders: 40↓ (6s , 34h ) , 4d
Triceps: 18↓ (4s , 14h ) , 2d
Back: 26↓ (2s , 24h ) , 4d
Abs: 0↑
Glutes: 12 (6s , 6h ) , 2d
Hamstrings: 8↑ (4s , 4h ) , 2d
Quadriceps: 10 (6s , 4h ) , 2d
Chest: 30↓ (6s , 24h ) , 4d
Biceps: 14↓ (14h ) , 3d
Calves: 6↑ (4s , 2h ) , 2d
Forearms: 10 (10h ) , 3d
{"maxWidth":2400,"url":"/planner","isLoggedIn":false}
{"exportedProgram":{"customExercises":{},"program":{"deletedExercises":[],"planner":{"name":"P-ZERO UL/UL ","weeks":[{"name":"Week 1","days":[{"name":"Day 1","exerciseText":"// T1 - Bench Press (P-Zero progression)\nBench Press / 3x4, 1x4+ / 3x3, 1x3+ / 3x2, 1x2+ / 80% / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps[ns] > reps + 1) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = weights\n }\n } else if (completedReps[ns] == reps + 1) {\n if (setVariationIndex == 1) {\n setVariationIndex = 2\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n }\n } else {\n weights = completedWeights[ns]\n }\n~}\n\n// T2 - Overhead Press (Volume tier, no AMRAP)\nOverhead Press / 4x12 / 4x10 / 4x8 / 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps >= reps) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[ns]\n }\n } else if (setVariationIndex == 1) {\n setVariationIndex += 1\n } else if (setVariationIndex == 2) {\n setVariationIndex += 1\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n~}\n\n// T3 - Lat Raise / Triceps / Incline Bench\nLateral Raise, Dumbbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nTriceps Extension, Barbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nIncline Bench Press Wide Grip / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}","id":"zlxlouqv"},{"name":"Day 2","exerciseText":"// T1 - Squat (P-Zero progression)\nSquat / 3x4, 1x4+ / 3x3, 1x3+ / 3x2, 1x2+ / 80% / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps[ns] > reps + 1) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = weights\n }\n } else if (completedReps[ns] == reps + 1) {\n if (setVariationIndex == 1) {\n setVariationIndex = 2\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n }\n } else {\n weights = completedWeights[ns]\n }\n~}\n\n// T2 - Romanian Deadlift (Volume tier, no AMRAP)\nRomanian Deadlift, Barbell / 4x12 / 4x10 / 4x8 / 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps >= reps) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[ns]\n }\n } else if (setVariationIndex == 1) {\n setVariationIndex += 1\n } else if (setVariationIndex == 2) {\n setVariationIndex += 1\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n~}\n\n// T3 - Pendlay Row / Biceps / Lateral Raise\nPendlay Row / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nBicep Curl, EZ Bar / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nLateral Raise, Dumbbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}","id":"ebfriljm"},{"name":"Day 3","exerciseText":"// T1 - Overhead Press (P-Zero progression)\nOHP_T1: Overhead Press / 3x4, 1x4+ / 3x3, 1x3+ / 3x2, 1x2+ / 80% / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps[ns] > reps + 1) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = weights\n }\n } else if (completedReps[ns] == reps + 1) {\n if (setVariationIndex == 1) {\n setVariationIndex = 2\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n }\n } else {\n weights = completedWeights[ns]\n }\n~}\n\n// T2 - Incline Bench Press Wide Grip (Volume tier, no AMRAP)\nInclineBench_T2: Incline Bench Press Wide Grip / 4x12 / 4x10 / 4x8 / 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps >= reps) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[ns]\n }\n } else if (setVariationIndex == 1) {\n setVariationIndex += 1\n } else if (setVariationIndex == 2) {\n setVariationIndex += 1\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n~}\n\n// T3 - Triceps, Row, Lateral Raise\nTriceps_T3B: Triceps Extension, Barbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nRow_T3B: Bent Over One Arm Row, Dumbbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nLateralRaise_T3B: Lateral Raise, Dumbbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}","id":"kfjgrcwf"},{"name":"Day 4","exerciseText":"// T1 - Deadlift (P-Zero progression)\nDeadlift_T1: Deadlift / 3x4, 1x4+ / 3x3, 1x3+ / 3x2, 1x2+ / 80% / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps[ns] > reps + 1) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = weights\n }\n } else if (completedReps[ns] == reps + 1) {\n if (setVariationIndex == 1) {\n setVariationIndex = 2\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n }\n } else {\n weights = completedWeights[ns]\n }\n~}\n\n// T2 - Front Squat (Volume tier, no AMRAP)\nFrontSquat_T2: Front Squat / 4x12 / 4x10 / 4x8 / 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (descriptionIndex == 1) {\n descriptionIndex = 2\n }\n\n if (completedReps >= reps) {\n weights = completedWeights[ns] + state.increase\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[ns]\n }\n } else if (setVariationIndex == 1) {\n setVariationIndex += 1\n } else if (setVariationIndex == 2) {\n setVariationIndex += 1\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n~}\n\n// T3 - Biceps, Lateral Raise, Pendlay Row\nBiceps_T3C: Bicep Curl, EZ Bar / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nLateralRaise_T3C: Lateral Raise, Dumbbell / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}\n\nPendlayRow_T3C: Pendlay Row / 3x15, 1x15+ / 60% 90s / progress: custom() {~\n if (completedReps[ns] >= 20) {\n weights = completedWeights[ns] + 2.5kg\n }\n~}","id":"ltmhxtfy"}],"id":"kgomklqw"}],"vtype":"planner"},"exercises":[],"days":[],"deletedDays":[],"url":"","isMultiweek":false,"name":"P-ZERO UL/UL ","weeks":[],"nextDay":1,"shortDescription":"","clonedAt":1748968776065,"description":"","id":"xjszemks","tags":[],"deletedWeeks":[],"author":"","vtype":"program"},"version":"20260304084247","settings":{"timers":{"warmup":90,"workout":180,"reminder":900},"units":"kg"}},"shouldSyncProgram":false,"isMobile":false,"revisions":[]}