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. Add New Week Duplicate Week Add Week Description
Add Day Description
Delete Day
Add Day Description
Delete Day
Add Day Description
Delete Day
Add Day Description
Delete Day
Add Day
Week Stats Total Sets: 64
Strength Sets: 16, 25%
Hypertrophy Sets: 48, 75%
Upper Sets: 48 (8s , 40h ), 4d Lower Sets: 16 (8s , 8h ), 4d Core Sets: 0
Push Sets: 32 (8s , 24h ), 4d Pull Sets: 20 (4s , 16h ), 4d Legs Sets: 12 (4s , 8h ), 3d Shoulders: 26↓ (6s , 20h ), 4d Triceps: 16↓ (4s , 12h ), 4d Abs: 0↑
Hamstrings: 8↑ (4s , 4h ), 4d Quadriceps: 10 (6s , 4h ), 3d {"maxWidth":2400,"url":"/planner","isLoggedIn":false}
{"exportedProgram":{"customExercises":{},"program":{"deletedExercises":[],"planner":{"name":"P-Zero Full Body","weeks":[{"name":"week1","days":[{"name":"day1","exerciseText":"// T1 - Squat\n// Set 1RM before first session. Starts at 80% of Training Max (90% of 1RM)\nSquat_T1: Squat / 3x4 80% 180s, 1x4+ 80% 180s / 3x3 80% 180s, 1x3+ 80% 180s / 3x2 80% 180s, 1x2+ 80% 180s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps[4] >= reps[4] + 1) {\n weights = completedWeights[4] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[4]\n setVariationIndex = 2\n weights = completedWeights[4] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[4] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// T2 - Incline Bench Press\n// Set 1RM before first session. Starts at 60% of 1RM\nInclineBench_T2: Incline Bench Press Wide Grip / 4x12 60% 120s / 4x10 60% 120s / 4x8 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps >= reps) {\n weights = completedWeights[1] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[1]\n setVariationIndex = 2\n weights = completedWeights[1] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[1] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nPendlay Row / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s / progress: custom(stage: 1, stage1weight: 0kg, increase: 2.5kg, savedSet: 1) {~\n if (setVariationIndex == 1) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] >= 60) {\n weights = completedWeights[4] + state.increase\n } else {\n state.stage = 2\n setVariationIndex = 2\n state.savedSet = 2\n weights = completedWeights[4]\n }\n } else if (setVariationIndex == 2) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] < 45) {\n state.stage = 3\n setVariationIndex = 3\n state.savedSet = 3\n weights = completedWeights[4]\n } else {\n weights = completedWeights[4] + state.increase\n }\n } else {\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n setVariationIndex = 1\n state.stage = 1\n state.savedSet = 1\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nTriceps_T3B: Triceps Extension, Barbell / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s / progress: custom(stage: 1, stage1weight: 0kg, increase: 2.5kg, savedSet: 1) {~\n if (setVariationIndex == 1) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] >= 60) {\n weights = completedWeights[4] + state.increase\n } else {\n state.stage = 2\n setVariationIndex = 2\n state.savedSet = 2\n weights = completedWeights[4]\n }\n } else if (setVariationIndex == 2) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] < 45) {\n state.stage = 3\n setVariationIndex = 3\n state.savedSet = 3\n weights = completedWeights[4]\n } else {\n weights = completedWeights[4] + state.increase\n }\n } else {\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n setVariationIndex = 1\n state.stage = 1\n state.savedSet = 1\n }\n~}","id":"yxzigvji"},{"name":"day2","exerciseText":"// T1 - Overhead Press\n// Set 1RM before first sessionå. Starts at 80% of Training Max (90% of 1RM)\nOHP_T1: Overhead Press / 3x4 80% 180s, 1x4+ 80% 180s / 3x3 80% 180s, 1x3+ 80% 180s / 3x2 80% 180s, 1x2+ 80% 180s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps[4] >= reps[4] + 1) {\n weights = completedWeights[4] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[4]\n setVariationIndex = 2\n weights = completedWeights[4] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[4] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// T2 - Romanian Deadlift\n// Set 1RM before first session. Starts at 60% of 1RM\nRDL_T2: Romanian Deadlift, Barbell / 4x12 60% 120s / 4x10 60% 120s / 4x8 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps >= reps) {\n weights = completedWeights[1] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[1]\n setVariationIndex = 2\n weights = completedWeights[1] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[1] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nLateral Raise / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s / progress: custom(stage: 1, stage1weight: 0kg, increase: 2.5kg, savedSet: 1) {~\n if (setVariationIndex == 1) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] >= 60) {\n weights = completedWeights[4] + state.increase\n } else {\n state.stage = 2\n setVariationIndex = 2\n state.savedSet = 2\n weights = completedWeights[4]\n }\n } else if (setVariationIndex == 2) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] < 45) {\n state.stage = 3\n setVariationIndex = 3\n state.savedSet = 3\n weights = completedWeights[4]\n } else {\n weights = completedWeights[4] + state.increase\n }\n } else {\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n setVariationIndex = 1\n state.stage = 1\n state.savedSet = 1\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nBiceps_T3C: Bicep Curl, EZ Bar / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s / progress: custom(stage: 1, stage1weight: 0kg, increase: 2.5kg, savedSet: 1) {~\n if (setVariationIndex == 1) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] >= 60) {\n weights = completedWeights[4] + state.increase\n } else {\n state.stage = 2\n setVariationIndex = 2\n state.savedSet = 2\n weights = completedWeights[4]\n }\n } else if (setVariationIndex == 2) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] < 45) {\n state.stage = 3\n setVariationIndex = 3\n state.savedSet = 3\n weights = completedWeights[4]\n } else {\n weights = completedWeights[4] + state.increase\n }\n } else {\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n setVariationIndex = 1\n state.stage = 1\n state.savedSet = 1\n }\n~}","id":"rnexjrmv"},{"name":"day3","exerciseText":"// T1 - Bench Press\n// Set 1RM before first session. Starts at 80% of Training Max (90% of 1RM)\nBench_T1: Bench Press / 3x4 65kg 180s, 1x4+ 65kg 180s / 3x3 65kg 180s, 1x3+ 65kg 180s / 3x2 65kg 180s, 1x2+ 65kg 180s / progress: custom(stage1weight: 62.5kg, increase: 2.5kg) {~\n if (completedReps[4] >= reps[4] + 1) {\n weights = completedWeights[4] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[4]\n setVariationIndex = 2\n weights = completedWeights[4] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[4] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// T2 - Front Squat\n// Set 1RM before first session. Starts at 60% of 1RM\nFrontSquat_T2: Front Squat / 4x12 60% 120s / 4x10 60% 120s / 4x8 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps >= reps) {\n weights = completedWeights[1] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[1]\n setVariationIndex = 2\n weights = completedWeights[1] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[1] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nBent Over One Arm Row, Dumbbell / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s\n\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nTriceps_T3B: Triceps Extension, Barbell / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s","id":"tjmincfi"},{"name":"day4","exerciseText":"// T1 - Deadlift\n// Set 1RM before first session. Starts at 80% of Training Max (90% of 1RM)\nDeadlift_T1: Deadlift / 3x4 80% 180s, 1x4+ 80% 180s / 3x3 80% 180s, 1x3+ 80% 180s / 3x2 80% 180s, 1x2+ 80% 180s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps[4] >= reps[4] + 1) {\n weights = completedWeights[4] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[4]\n setVariationIndex = 2\n weights = completedWeights[4] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[4] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// T2 - Overhead Press\n// Set 1RM before first session. Starts at 60% of 1RM\nOHP_T2: Overhead Press / 4x12 60% 120s / 4x10 60% 120s / 4x8 60% 120s / progress: custom(stage1weight: 0kg, increase: 2.5kg) {~\n if (completedReps >= reps) {\n weights = completedWeights[1] + state.increase\n } else {\n if (setVariationIndex == 1) {\n state.stage1weight = completedWeights[1]\n setVariationIndex = 2\n weights = completedWeights[1] + state.increase\n } else if (setVariationIndex == 2) {\n setVariationIndex = 3\n weights = completedWeights[1] + state.increase\n } else {\n setVariationIndex = 1\n weights = state.stage1weight + state.increase\n }\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nLateralRaise_T3B: Lateral Raise / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s / progress: custom(stage: 1, stage1weight: 0kg, increase: 2.5kg, savedSet: 1) {~\n if (setVariationIndex == 1) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] >= 60) {\n weights = completedWeights[4] + state.increase\n } else {\n state.stage = 2\n setVariationIndex = 2\n state.savedSet = 2\n weights = completedWeights[4]\n }\n } else if (setVariationIndex == 2) {\n if (completedReps[1] + completedReps[2] + completedReps[3] + completedReps[4] < 45) {\n state.stage = 3\n setVariationIndex = 3\n state.savedSet = 3\n weights = completedWeights[4]\n } else {\n weights = completedWeights[4] + state.increase\n }\n } else {\n weights = state.stage1weight + state.increase\n state.stage1weight = weights\n setVariationIndex = 1\n state.stage = 1\n state.savedSet = 1\n }\n~}\n\n// Uses 3-stage progression:\n// Stage 1: 4x15+ (goal: 60 reps)\n// Stage 2: 4x12+ (goal: 45 reps)\n// Stage 3: 3x10+ (goal: 30 reps)\n// All sets are AMRAP. Advance to next stage if you miss the rep target. Return to Stage 1 with more weight after Stage 3.\nBiceps_T3C: Bicep Curl, EZ Bar / 4x15+ 60% 90s / 4x12+ 60% 90s / 3x10+ 60% 90s","id":"kweereyv"}],"id":"gouopwih"}],"vtype":"planner"},"exercises":[],"days":[],"deletedDays":[],"url":"","isMultiweek":false,"name":"P-Zero Full Body","weeks":[],"nextDay":1,"shortDescription":"","clonedAt":1749137755905,"description":"","id":"zpgymbhm","tags":[],"deletedWeeks":[],"author":"","vtype":"program"},"version":"20260304084247","settings":{"timers":{"warmup":90,"workout":180,"reminder":900},"units":"kg"}},"shouldSyncProgram":false,"isMobile":false,"revisions":[]}