Workout Import & Export

You can move workouts into FitNotes by pasting either the app’s workout JSON format or a simple text export. The importer runs from the workout screen and will only add a workout to an empty day.

Export a Workout (Text)

  • On the workout screen, tap the (…) button in the top left, then choose Share → Text.
  • Save the text to Files or email it to yourself. The export includes workout notes, exercise order, sets, and set notes using your preferred units.
  • You can edit that text and re-import it later using the steps below.

Import a Workout

  • Switch to the calendar date where you want the workout to land (the importer will not overwrite an existing workout).
  • Tap (…)Import Workout.
  • Paste either FitNotes workout JSON or the plain-text format described here, then tap Import.

FitNotes Workout JSON

  • If you have unstructured text, the FitNotes iOS Workout Converter GPT can turn it into valid workout JSON for pasting into the importer.
  • Required shape: type must be workout; exercises is an array of exercise entries; each entry has an exercise block plus sets.
  • Common fields:
    • exercise.name and exercise.category.name are required; exercise.kind is numeric (3 = weight + reps, 2 = reps-only, 8 = time-only, 12 = distance + time are the most common).
    • Units: exercise.unit accepts "lb" or "kg". Set weights can be weightLbs or weightKg (include one or both).
    • Sets can include reps, time (seconds), distance, distanceUnit (1 = miles, 2 = meters, 3 = kilometers, 4 = feet, 5 = yards, 6 = centimeters, 7 = inches), rir, rpe, notes, and isWarmup.
    • superset is a string id; sets with the same value are linked into a superset.
  • Example workout JSON:
{
  "type": "workout",
  "notes": "Upper body session",
  "exercises": [
    {
      "exercise": {
        "name": "Bench Press",
        "category": { "name": "Chest" },
        "kind": 3,
        "unit": "lb"
      },
      "superset": "A",
      "sets": [
        { "weightLbs": 135, "reps": 8, "isWarmup": true },
        { "weightLbs": 185, "reps": 5, "rir": 1 }
      ]
    },
    {
      "exercise": {
        "name": "Pull Up",
        "category": { "name": "Back" },
        "kind": 2
      },
      "superset": "A",
      "sets": [
        { "reps": 10 },
        { "reps": 8 }
      ]
    }
  ]
}

Plain-Text Import Format

  • Mirrors the Share → Text export; easiest for quick edits.
  • Optional first line FitNotes Workout and an optional date line (containing a comma) are ignored.
  • Each exercise starts on its own line (for example, Bench Press). The following lines are sets:
    • 100 lb x 5 or 40 kg x 5 for weight + reps.
    • x 12 for reps-only sets.
    • 1:30 or 00:45 for time-only sets (minutes:seconds, hours optional).
  • Add notes with > Note text. A note after a set attaches to that set; after an exercise name it becomes exercise notes; before any exercise it becomes workout notes.
  • Separate exercises with a blank line. Supersets, RPE/RIR, rest times, and distance are not captured in text; use JSON if you need those. Warmups are auto-guessed when names or notes mention words like “warm” or “stretch”.