Blank CSV Template
Header-only CSV files at the ZIP root. Use this when you want to start clean and fill in your own data.
Download Blank ZIPDownload CSV templates, edit them on a computer, and import workout history into SwoLifts.
SwoLifts exports your data as a ZIP of CSV files. You can import the same format back into the app, or use the templates below to bulk migrate workouts, custom exercises, and workout templates from another tool.
Header-only CSV files at the ZIP root. Use this when you want to start clean and fill in your own data.
Download Blank ZIPSample workouts, templates, and sets that match built-in SwoLifts exercises. Use it as a reference while editing.
Download Example ZIPThe import ZIP should contain the CSV files directly at the root of the archive.
Every export contains valid CSV files with headers, plus sample files under an examples/ folder. SwoLifts ignores files under examples/ during import, so they are safe to keep, edit, or delete.
These rules match the SwoLifts importer.
Only include the CSVs you need. Required fields are required only when that file is present.
Add user-created exercises. Built-in exercises should not be listed here.
| Column | Required | Notes |
|---|---|---|
| name | Yes | Unique exercise name. |
| primaryMuscleGroup | No | Defaults to Other if blank. |
| category | No | Strength, Cardio, Bodyweight, Stretching, or Other. |
| equipment | No | Any descriptive equipment value. |
| loggingType | No | reps_weight, duration_only, duration_distance, or sets_duration. Defaults to reps_weight. |
| loadType | No | external_weight, bodyweight, weighted_bodyweight, or assisted_bodyweight. Used for reps_weight exercises. |
| source, sourceId, sourceLicense, sourceUrl | No | Optional source metadata. |
| isDeleted | No | true or false. Defaults to false. |
| Column | Required | Notes |
|---|---|---|
| id | Yes | Any unique string referenced by template_exercises.csv. |
| name | Yes | Template name. Existing names are skipped on import. |
| description | No | Optional template description. |
| Column | Required | Notes |
|---|---|---|
| templateId | Yes | Must match an id in workout_templates.csv. |
| templateName | No | Informational only. Ignored by import. |
| exerciseName | Yes | Built-in exercise name or custom exercise name. |
| orderIndex | Yes | Zero-based exercise position in the template. |
| targetSets, targetReps | No | Whole numbers. |
| targetWeightLbs | No | Decimal pounds for external or weighted bodyweight targets. |
| targetAssistanceWeightLbs | No | Decimal pounds for assisted bodyweight targets. |
| targetDurationSeconds | No | Whole seconds for duration targets. |
| Column | Required | Notes |
|---|---|---|
| id | Yes | Any unique string referenced by exercise_sets.csv. |
| templateName | No | Informational only. Imported sessions are not linked back to templates. |
| name | Yes | Workout name. |
| startTime | Yes | ISO 8601 UTC timestamp. |
| endTime | No | ISO 8601 UTC timestamp. If blank, the start time is used — imported sessions are always treated as completed. |
| notes | No | Optional workout notes. |
| bodyweightLbs | No | Bodyweight snapshot for that workout. |
| Column | Required | Notes |
|---|---|---|
| sessionId | Yes | Must match an id in workout_sessions.csv. |
| exerciseName | Yes | Built-in exercise name or custom exercise name. |
| setNumber | Yes | One-based set number. |
| reps | No | Whole number of reps. |
| weightLbs | No | Decimal pounds for external or weighted bodyweight work. |
| assistanceWeightLbs | No | Decimal pounds for assisted bodyweight work. |
| durationSeconds | No | Whole seconds. |
| distanceMeters | No | Decimal meters for cardio distance. |
| rir | No | Reps in reserve, as a whole number. |
| completedAt | No | ISO 8601 UTC timestamp for when the set was completed. If blank, the session's end time is used so imported sets still count toward Progress charts and PRs. |
| notes | No | Optional set notes. |
Import is designed as a merge, not a blind append.
SwoLifts reports warnings for missing required columns, invalid numbers, invalid dates, unknown exercises, or child rows that do not match a parent row. Valid rows can still import even when other rows have warnings.