Guide
How to import Hevy and Strong workouts into marble
Export your workouts as a CSV from Hevy or Strong, open the Add tab in marble, tap Choose File, and review the workouts it finds before you save. The file is read by marble’s own parser on your iPhone. Nothing is uploaded, and you don’t need an account.
Before you start
You need marble on an iPhone or iPad running iOS or iPadOS 26 or later, and a CSV export from Hevy or Strong saved somewhere the Files app can reach. Both apps can export your workout history as a CSV file. Look for the export option in each app’s settings.
CSV import doesn’t use Apple Intelligence. These files are tables, so marble reads them with a deterministic parser that works the same way on every supported device.
Steps
- Export a CSV from Hevy or Strong and save it to Files.
- Open Add in marble and tap Choose File. Pick the export. You can select more than one file, and if they have the same header row, marble merges them into one import. You can also paste the CSV text straight into the composer.
- Let marble split it into workouts. Each workout title and start time becomes one workout. A long history shows up as a list on Review Workouts, with counts of library matches, new exercises and weak matches for each one.
- Check the exercise matches. Exact and strong name matches link to exercises already in your library. Weak matches stay as suggestions and default to creating a new exercise, so a movement is never quietly merged into the wrong one.
- Choose what to add, then save. Workouts that are already in your journal stay unselected, so importing the same file twice doesn’t create duplicates. Until you confirm, nothing is logged.
What carries over
From Hevy
- Weight from
weight_lbsorweight_kg, reps, distance, and per-set duration. - RPE, the workout description, exercise notes and set notes. A
superset_idbecomes a set note. - Start and end times, so the session keeps its length.
- Warm-up sets are skipped. Drop sets and failure sets are kept and tagged, including a failure set with zero reps.
- If you logged the same lift twice in one workout, the two blocks stay separate instead of being mixed together.
From Strong
- Date, workout name, exercise name, set order, weight, reps, distance, seconds, notes, workout notes and RPE.
- Workout duration written as
60mor1h 5m. - European exports that use semicolons, decimal commas and a
Weight (kg)column. - A plain
Distanceis read in kilometres or miles, following your preferred unit. - Equipment suffixes like “(Barbell)” are removed from the name, but Squat (Barbell) and Squat (Dumbbell) stay separate exercises.
What the files look like
marble recognises each app from the header row. For example:
title,start_time,end_time,exercise_title,set_index,set_type,weight_lbs,reps,rpe
Push Day,"28 Mar 2025, 17:29","28 Mar 2025, 18:45",Bench Press,0,normal,185,8,8
Date,Workout Name,Duration,Exercise Name,Set Order,Weight,Reps,Distance,Seconds,Notes,Workout Notes,RPE
2025-01-15 18:00:00,Leg Day,60m,Squat,1,225,5,0,0,belt,Heavy day,7
If you shared a single workout as text rather than a file, paste that too. Lines such as Set 1: 60 kg x 10 under an exercise name are read as sets.
Limits worth knowing
- File import accepts
.csvand.txt. JSON workout files aren’t supported. - marble stores whole-number RPE, so a half step rounds up: 8.5 becomes 9.
- A weight or rep value of zero is left empty rather than logged as zero.
- The import is one way. marble’s own export is a JSON backup for restoring into marble, not a Hevy or Strong file.