Why I built RepX, a simple exercise timer

It’s simply because I didn’t find an app that does what I needed to do. Maybe I didn’t look deep enough and I was too quick to start building. Maybe there is an alternative. But I didn’t find it yet.

Short version: RepX lets you easily track the time for and log workouts similar to German Volume Training. You can download it here:


My exercise routine is 10x10 push-ups and 4x10 pull-ups at the moment. One day pull-ups, next day push-ups, repeat. From time to time, when I get good at the current setup, I increase the number of reps.

I don’t set a time in which I have to finish these. It’s important that my breaks are as short as possible but I will take as much time as I need to be able to do the next set. I have some guidelines that my breaks should be around 10 seconds and never over 1 minute and, from data, I know doing my 10 push-ups takes 11–14 seconds. But I don’t enforce those times. If I fall during a push-up, I get back up and finish the set — it doesn’t matter how long it takes.

I time the exercises. Initially it was to make sure breaks won’t be over 1 minute. The laps helped count the sets — it surprised my how hard it was to keep the set and rep number in my head while doing push-ups. Shortly it became interesting to look at a work/break chart and compare my performance from different days.

Example charts I was generating with Numbers. You can see I made progress between the two dates.

My initial data gethering was using the default stopwatch app on iOS. Looks good and all, but it doesn’t have an export function. That means I wrote the numbers from the app in Numbers manually and generate the charts. It’s tedious, but the exercise log is valuable.

After a couple of days I found a stopwatch app with an export function. It was sending an e-mail with the times. Copy-pasting values was much easier, but still tedious manual work as I had to divide the laps into sets (work and break times in different columns). I then quickly wrote a python script to parse that email and give me a nicely formatted table to copy-paste in Numbers. Still manual — I had to email myself the laps, copy the content into clipboard, run my python script, create new sheet and paste into Numbers, generate chart.

Numbers isn’t a great tool to store your exercise log, at least not this kind. Maybe I’m just bad at spreadsheets but for me, each day (each workout) was on a separate sheet, like below. This isn’t very useful.

My old exercise tracking system using Numbers. There are 22 sheets.

So I started to build RepX. It was meant to be a stopwatch app with an export function. Quickly became a nicer interface for when you’re exercising.

Tap anywhere to change lap came from me sometimes pressing the wrong buttons in my old stopwatch app during exercise, causing my times to get messed up.

Counting the sets as opposed to laps makes it easy to track progress. The charts generated in RepX are the charts I was generating in Numbers.

My plan is to exercise every day. Sometimes I do it after midnight. There’s a small feature that allows you to choose the date the exercise should be logged for.

Now RepX does all the exercise tracking for me.

Funnily enough, I didn’t need the export function anymore.

Screenshots from RepX. The data displayed is actually from my own tracking. (haha, you can see I have some missing dates — I’m getting back on track!)

So what’s actually different to the other tons of interval tracking apps out there? It’s simply the way it tracks the exercises. All other apps I’ve tried work the other way around: you set a time, and you do as many reps as you can. In RepX you set the number of reps and you track the time.

It’s like doing German Volume Training, but the number of sets and reps aren’t fixed to 10.

Want to give it a try? RepX is now available for iPhone.

Thanks for reading! If you know anyone who might find this app useful, please help me spread the word and share it with them — highly appreciate it!