lift.md format

lift.md format is a small, markdown-based format for strength training workouts (formerly "LMWF"). It is designed to be readable and editable by humans, and trivially parseable by tools — including LLMs asked to generate or modify workouts. The format is an open specification licensed under CC BY-SA 4.0, independent of any particular app.

At its simplest, a workout is a header, an exercise, and a list of sets:

# Bench Day
@units: lbs

## Bench Press
- 135 x 5
- 185 x 5
- 225 x 5

That's a valid lift.md format document. Most real programs need more — warmup and cooldown blocks, programming guidance, per-set rest targets, time-based sets, tags, and supersets. All of it stays in plain markdown:

# Push Day
@tags: strength, push
@units: lbs

Focus on bar path on bench. Keep rest strict — don't pad between sets. Stop if bar speed dies on the top set.

## Warmup

### Band Pull-Aparts
- x 20

### Light Bench Press
- 45 x 10
- 95 x 5

## Bench Press

Build to a top set, then back off. Stop the top set if bar speed dies — no grinders.

- 135 x 5 @rest: 120s
- 185 x 5 @rest: 180s
- 225 x 5 @rest: 180s Aim for RPE 7
- 245 x 3 Target RPE 8, leave 2 in the tank

## Overhead Press

Strict press, no leg drive. If the last set feels easy, add 5 lbs next session.

- 95 x 8 @rest: 90s
- 115 x 8 @rest: 90s
- 135 x 6

## Arms Superset

### Cable Triceps Pushdown
- 50 x 12
- 50 x 12
- 50 x 10

### Dumbbell Curl
- 30 x 10
- 30 x 10
- 30 x 8

## Cooldown

### Chest Stretch
- 60s

### Foam Rolling
- 2m

A lift.md format document describes a workout plan — what you intend to do, not a record of what happened. A few things to notice: @tags and @units are workout-level metadata; prose between a header and its sets is preserved as a note, and is the right place for programming intent, cues, and stop conditions (see the notes under Push Day, Bench Press, and Overhead Press); @rest is the main per-set modifier, and any trailing text after the set and its modifiers becomes a freeform note on that set — the preferred way to express descriptive targets like RPE or tempo; sets without a weight (- x 20) are bodyweight; sets expressed as a duration (- 60s, - 2m) are time-based; and Arms Superset demonstrates the superset convention — a parent header with its exercises nested one level deeper.

See the full spec for the complete set of modifiers, metadata fields, validation rules, and edge cases.

Try it

Edit or paste a lift.md format workout below and click Validate. The request is sent to the live validator API at POST /validate.

Links