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. Delete Week Add New Week Duplicate Week Add Week Description
Day Description (Markdown)
Delete Day Description
Delete Day
Day Description (Markdown)
Delete Day Description
Delete Day
Day Description (Markdown)
Delete Day Description
Delete Day
Day Description (Markdown)
Delete Day Description
Delete Day
Add Day
Week Stats Total Sets: 143
Strength Sets: 44, 31%
Hypertrophy Sets: 99, 69%
Upper Sets: 79 (28s , 51h ), 4d Lower Sets: 52 (16s , 36h ), 2d Push Sets: 40 (22s , 18h ), 2d Pull Sets: 42 (6s , 36h ), 4d Legs Sets: 46 (16s , 30h ), 2d Shoulders: 30↓ (12s , 18h ), 2d Triceps: 23↓ (14s , 9h ), 2d Glutes: 33↓ (12s , 21h ), 2d Hamstrings: 19↓ (4s , 15h ), 2d Quadriceps: 27↓ (12s , 15h ), 2d Chest: 28↓ (12s , 16h ), 3d Biceps: 15↓ (5s , 11h ), 2d Forearms: 21↓ (5s , 17h ), 4d {"maxWidth":2400,"url":"/planner","isLoggedIn":false}
{"exportedProgram":{"customExercises":{"ukfahrgg":{"name":"Belt Squat","types":["legs","lower"],"id":"ukfahrgg","isDeleted":false,"vtype":"custom_exercise","meta":{"synergistMuscles":["Gluteus Maximus"],"targetMuscles":["Quadriceps"],"bodyParts":[],"sortedEquipment":[]}},"rrksvfdd":{"name":"Pallof PRess","types":["core"],"id":"rrksvfdd","isDeleted":false,"vtype":"custom_exercise","meta":{"synergistMuscles":["Serratus Anterior","Rectus Abdominis"],"targetMuscles":["Obliques"],"bodyParts":[],"sortedEquipment":[]}},"tzvxommw":{"name":"Glute Ham Raise","types":["legs","lower","pull"],"id":"tzvxommw","isDeleted":false,"vtype":"custom_exercise","meta":{"synergistMuscles":["Erector Spinae"],"targetMuscles":["Hamstrings","Gluteus Maximus"],"bodyParts":[],"sortedEquipment":[]}}},"program":{"deletedExercises":[],"planner":{"name":"Temp","vtype":"planner","weeks":[{"name":"Week 1","days":[{"name":"Day 1","description":"--- EXERCISES: OHP DAY ---","exerciseText":"// --- TEMPLATES ---\n// This template holds the progression logic for all main lifts.\n// It is checked at the end of Week 3 and increases the 1RM based on AMRAP performance,\n// which effectively increases the Training Max for the next cycle.\nmain_lift_progression / used: none / 0x1 0lb / warmup: 1x10 10%, 1x10 35%, 1x5 55% / update: custom() {~\n if (setIndex == 0 ) {\n var.tm = 0.85 * rm1\n if (week == 1) {\n weights[1] = floor(0.65 * var.tm)\n weights[2] = floor(0.75 * var.tm)\n weights[3] = floor(0.85 * var.tm)\n } else if (week == 2) {\n weights[1] = floor(0.70 * var.tm)\n weights[2] = floor(0.80 * var.tm)\n weights[3] = floor(0.90 * var.tm)\n } else if (week == 3 ) {\n weights[1] = floor(0.75 * var.tm)\n weights[2] = floor(0.85 * var.tm)\n \n weights[3] = floor(0.95 * var.tm)\n } else if (week == 4 ) {\n weights[1] = floor(0.40 * var.tm)\n weights[2] = floor(0.50 * var.tm)\n weights[3] = floor(0.60 * var.tm)\n }\n }\n~} / progress: custom(increase: 5lb) {~\n if (week == 4 && dayInWeek >= 1 ) {\n rm1 += state.increase\n }\n~}\n\n// Template for upper body T1 lifts (Week 1: 5's Week)\n// t1_upper / used: none / 1x5 58.5%, 1x5 67.5%, 1x5+ 76.5% @8+ / 120s / warmup: 1x10 10%, 1x10 35%, 1x5 55% / progress: custom() { ...main_lift_progression } / update: custom() { ...main_lift_progression }\nt1_upper[1-4] / used: none / 2x5, 1x5+ / 120s / warmup: 1x10 10%, 1x10 35%, 1x5 55% / update: custom() { ...main_lift_progression } / progress: custom() { ...main_lift_progression }\n\n// Template for lower body T1 lifts, reusing the upper body set scheme but with a larger progression increment\nt1_lower[1-4] / used: none / 2x5, 1x5+ / 120s / warmup: 1x10 10%, 1x10 35%, 1x5 55% / update: custom() { ...main_lift_progression } / progress: custom(increase: 10lb) { ...main_lift_progression }\n// Template for First Set Last (FSL) supplemental work (Week 1)\nfsl[1-4] / used: none / 5x5+ / 90s / warmup: none / update: custom() {~\n var.tm = 0.85 * rm1\n if (setIndex == 0 ) {\n if (week == 1) { \n weights = floor(0.65 * var.tm)\n } else if (week == 2) {\n weights = floor(0.70 * var.tm)\n } else if (week == 3 ) {\n weights = floor(0.75 * var.tm)\n } else if (week == 4 ) {\n weights = floor(0.40 * var.tm)\n }\n }\n\n~}\n// Template for general accessory work. Adjust sets/reps as needed to hit RPE 7-8.\nacc4x8-12[1-4] / used: none / 4x8-12+ / @7.5+ 100s / warmup: 1x10 35%, 1x6 55% / progress: custom(increase: 5lb) {~\n if (completedNumberOfSets == numberOfSets && completedReps == 12 && completedRPE <= RPE) {\n weights += state.increase\n }\n~}\n\nacc4x6-8[1-4] / used: none / 4x6-8+ / @8+ 100s / warmup: 1x10 35%, 1x6 55% / progress: custom(increase: 5lb) {~\n if (completedNumberOfSets == numberOfSets && completedReps == 12 && completedRPE <= RPE) {\n weights += state.increase\n }\n~}\n\nacc3x8-12[1-4] / used: none / 3x8-12+ / @8+ 100s / warmup: 1x10 35%, 1x6 55% / progress: custom(increase: 5lb) {~\n if (completedNumberOfSets == numberOfSets && completedReps == 12 && completedRPE <= RPE) {\n weights += state.increase\n }\n~}\n\n// Isolation templates\nisolation[1-4] / used: none / 3x12-14+ / @8+ 60s / warmup: 1x10 35%, 1x6 55% / progress: custom(increase: 5lb) {~\n if (completedNumberOfSets == numberOfSets && completedReps == 14 && completedRPE <= RPE) {\n weights += state.increase\n }\n~}\n\nisolation_hr[1-4] / used: none / 3x15-20+ / @7.5+ 60s / warmup: 1x10 35% / progress: sum(60, 5lb)\n\n// Accessory Drop Sets template\nacc_drop_3x8-12+2[1-4] / used: none / 3x8-12+ @8+ 90s, 3x1+ 10s / warmup: 1x8 30%, 1x5 50% / update: custom() {~\n if (setIndex > 3) {\n weights = weights[setIndex - 1] * 0.75\n }\n~} / progress: custom(increment: 5lb) {~\n if (completedReps[1] > 12 && completedReps[2] && completedReps[3] > 12 && completedRPE <= RPE) {\n weights += state.increment\n }\n~}\n\n// Accessory MyoReps\n// acc_myo_1x10-12[1-5] / used: none / 1x10-12+ @9+ 90s, 3x3-5+ 20s / warmup: 1x10 35% / progress: sum(27, 2.5lb)\nacc_myo_1x10-12[1-4] / used: none / 1x12+ @8+ 35s, 1x3-5+ 25s / warmup: 1x10 35% / update: custom() {~\n if (setIndex > 1 && completedReps[ns] >= 5) {\n numberOfSets += 1\n }\n~} / progress: custom(increment: 2.5lb) {~\n if (completedReps[1] >= 12) {\n weights += state.increment\n }\n~}\n\n\n// Using labels (e.g., \"t1:\") to distinguish main lifts from supplemental work.\nt1: Overhead Press, Dumbbell[1,1-4] / ...t1_upper\nfsl: Overhead Press, Dumbbell[2,1-4] / ...fsl\n// wide grip\nLat Pulldown, Leverage Machine[3,1-4] / ...acc4x8-12\nPec Deck[4,1-4] / ...isolation\nBent Over One Arm Row[5,1-4] / ...acc4x6-8\nShrug[6,1-4] / ...acc3x8-12\nLateral Raise, Leverage Machine[7,1-4] / ...isolation\nTriceps Pushdown[8,1-4] / ...acc_drop_3x8-12+2\nBicep Curl, EZ Bar[9,1-4] / ...acc_drop_3x8-12+2\nCrunch, Leverage Machine[10,1-4] / ...isolation_hr","id":"fcrnlksq"},{"name":"Day 2","description":"--- EXERCISES: DEADLIFT DAY ---","exerciseText":"t1: Trap Bar Deadlift[1,1-4] / ...t1_lower\nfsl: Trap Bar Deadlift[2,1-4] / ...fsl\nSeated Leg Press[3,1-4] / ...acc3x8-12\nGlute Ham Raise[4,1-4] / ...acc3x8-12\nLeg Extension[5,1-4] / ...isolation_hr\nHip Adductor[6,1-4] / ...isolation\nPallof PRess[7,1-4] / ...acc3x8-12\nBack Extension, Bodyweight[8,1-4] / ...isolation\nStanding Calf Raise, Leverage Machine[9,1-4] / ...isolation_hr\nWrist Curl, EZ Bar[10,1-4] / ...isolation_hr","id":"pesnscxy"},{"name":"Day 3","description":"--- EXERCISES: Bench Press Day ---","exerciseText":"t1: Bench Press, Dumbbell[1,1-4] / ...t1_upper\nfsl: Bench Press, Dumbbell[2,1-4] / ...fsl\nSeated Row, Leverage Machine[3,1-4] / ...acc4x8-12\nIncline Chest Press, Leverage Machine[4,1-4] / ...acc3x8-12 / @7+\nPullover[5,1-4] / ...acc3x8-12\nLateral Raise[6,1-4] / ...isolation\nStanding Row Rear Delt, Horizontal, With Rope[7,1-4] / ...isolation_hr\nTriceps Extension, Cable[8,1-4] / ...acc_drop_3x8-12+2\nHammer Curl[9,1-4] / ...acc_drop_3x8-12+2\nPlank[10,1-4] / 3x30-60 / 45s","id":"gzoroaxu"},{"name":"Day 4","description":"--- EXERCISES: SQUAT DAY ---","exerciseText":"t1: Belt Squat[1,1-4] / ...t1_lower\nfsl: Belt Squat[2,1-4] / ...fsl\nRomanian Deadlift, Barbell[3,1-4] / ...acc3x8-12\nHip Thrust, Leverage Machine[4,1-4] / ...acc3x8-12\nBulgarian Split Squat[5,1-4] / ...isolation\nSeated Calf Raise, Leverage Machine[6,1-4] / ...isolation\nHip Abductor[7,1-4] / ...isolation\nBack Extension, Leverage Machine[8,1-4] / ...isolation\nReverse Wrist Curl, EZ Bar[9,1-4] / ...isolation_hr\nCable Twist[10,1-4] / ...isolation","id":"zgrsywzt"}],"id":"iuuddsaw"},{"name":"Week 2","days":[{"name":"Day 1","exerciseText":"// Override templates for Week 2 (3's Week)\nt1_upper / used: none / 2x3, 1x3+\n// Template for lower body T1 lifts, reusing the upper body set scheme but with a larger progression increment\nt1_lower / used: none / 2x3, 1x3+","id":"vjndbcty"},{"name":"Day 2","exerciseText":"","id":"ficnaaur"},{"name":"Day 3","exerciseText":"","id":"tgnlwmho"},{"name":"Day 4","exerciseText":"","id":"ascryece"}],"id":"vxynztdb"},{"name":"Week 3","days":[{"name":"Day 1","exerciseText":"// Override templates for Week 3 (5/3/1 Week)\nt1_upper / used: none / 1x5, 1x3, 1x1+\n// Template for lower body T1 lifts, reusing the upper body set scheme but with a larger progression increment\nt1_lower / used: none / 1x5, 1x3, 1x1+","id":"djyioeqt"},{"name":"Day 2","exerciseText":"","id":"ljwfdwgi"},{"name":"Day 3","exerciseText":"","id":"dsrmyzwh"},{"name":"Day 4","exerciseText":"","id":"wcvokzni"}],"id":"grysoucc"},{"name":"Week 4","days":[{"name":"Day 1","exerciseText":"// Override template for Week 4 (Deload)\n// Main lifts only, no FSL or accessories.\nt1_upper / used: none / 3x5\n// Template for lower body T1 lifts, reusing the upper body set scheme but with a larger progression increment\nt1_lower / used: none / 3x5\n\n// Template for general accessory work. Adjust sets/reps as needed to hit RPE 7-8.\nacc4x8-12 / used: none / 1x8-12+ / @6+ 90s / progress: none\n\nacc4x6-8 / used: none / 1x6-8+ / @6+ 90s / progress: none\n\nacc3x8-12 / used: none / 1x8-12+ / @6.5+ 9s / progress: none\n// Isolation templates\nisolation / used: none / 1x12-14+ / @6.5+ 60s / progress: none\nisolation_hr / used: none / 1x15-20+ / @6.5+ 60s / progress: none\n\n// Accessory Drop Sets template\nacc_drop_3x8-12+2 / used: none / 1x8-12+ @6.5+ 90s, 2x1+ 10s / progress: none\n\n// Accessory MyoReps\nacc_myo_1x10-12 / used: none / 1x12+ @6.5+ 35s, 1x3-5+ 25s","id":"mqokugsg"},{"name":"Day 2","exerciseText":"","id":"fmekmxvi"},{"name":"Day 3","exerciseText":"","id":"cxssxqyq"},{"name":"Day 4","exerciseText":"","id":"krfqetpt"}],"id":"keuqpyqr"}]},"exercises":[],"vtype":"program","days":[],"deletedDays":[],"url":"","isMultiweek":false,"name":"Sats MuscleNStrength 531","weeks":[],"nextDay":4,"shortDescription":"","clonedAt":1761872513781,"description":"","tags":[],"deletedWeeks":[],"author":"","id":"uqejvdee"},"version":"20260304084247","settings":{"timers":{"warmup":90,"workout":180,"reminder":900},"units":"lb"}},"shouldSyncProgram":false,"isMobile":false,"revisions":[]}