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: 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
Back: 18↓ (2s , 16h ) , 4d
Abs: 0↑
Glutes: 12 (6s , 6h ) , 4d
Hamstrings: 8↑ (4s , 4h ) , 4d
Quadriceps: 10 (6s , 4h ) , 3d
Chest: 20↓ (6s , 14h ) , 4d
Biceps: 12 (12h ) , 4d
Calves: 6↑ (4s , 2h ) , 3d
Forearms: 8↑ (8h ) , 4d
{"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":"rowgilnl"},{"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":"trilrbdw"},{"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":"kptlmywm"},{"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":"ohlnsmcy"}],"id":"mwlbyisl"}],"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,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","revisions":[]}