Import behaviour verified against real exports, 8 September 2026.
The reason people do not change training apps is not the price. It is the years of logged sets. So: export from the app you are on, open the file here, and keep every one of them.
You do not need an account and you do not need a connection. The import runs on the phone.
These are measured against real exports of all three apps, not estimated:
| Export | Sets | Rows lost | Exercises matched without asking |
|---|---|---|---|
| Alpha Progression, 16 months of training | 2,846 | none | 87 of 87 |
| Strong | 1,903 | none | 19 of 22 |
| Hevy | 330 | none | 35 of 44 |
What it cannot match, it asks about once and then remembers. Strong’s three were “Aerobics”, “Swimming” and one press variant — two of which are not lifting movements and are not in the library on purpose. Nothing is silently dropped and nothing is silently guessed.
Strong and Hevy both write the equipment inside the exercise name —
Leg Press (Machine), Snatch (Barbell),
Bench Press (Smith Machine). This app stores the movement and
the equipment as separate fields, so it takes that apart and files each
set on the right row.
It only does that for words that are actually equipment. Hevy uses the
same position for things that are not —
Butterfly (Pec Deck), Lat Pulldown (V-grip),
Chest Dip (Weighted) — and those keep their names,
because stripping them would throw away the only word that identifies the
exercise.
An Alpha Progression export uses “Lateral Raises” for three separate exercises: machine, dumbbell and band. An importer that keys on the name alone merges them, which puts 145 lb machine sets and 20 lb dumbbell sets on one strength curve and ruins both histories invisibly. This one keys on name and equipment.
A metric export is converted rather than read as pounds. So are kilometres. This sounds obvious and is exactly the kind of thing that goes wrong quietly — a 2.2× error across an entire history looks plausible on every individual screen.
Where the export marks them, they are preserved as warm-ups. Where the export does not distinguish them — Strong’s does not — they come in as logged sets, which is the honest outcome rather than a guess. Worth knowing before you look at your first chart.
Alpha Progression’s displayed 10RM is raw Epley:
weight × (1 + reps/30) × 0.75. The export carries
those figures alongside the raw sets, so an imported set can be checked
against the number Alpha Progression itself reported. If a row were
mis-read, the arithmetic would disagree. The import verifies itself against
the app it came from — which is not something the other two formats
make possible, because they do not publish a derived number to check.
Export everything to CSV or JSON at any time, on any tier, free, forever — and the CSV uses the same column names the importer reads, so it round-trips. That is deliberate. An app that makes it hard to leave is telling you something about how confident it is.
Alpha Progression exports your whole history every time, so importing a July file and then an August one would otherwise duplicate everything before July. It does not: sessions are matched on the day and the workout name, so an overlapping export adds only what is new.