Privacy policy

Where you ran is nobody's business.

For the Brad Hates Running Android app and this website. Last updated 10 October 2026.

The short version

What the app keeps, and where

Everything below is stored in the app's private storage on your phone. Uninstalling the app deletes it (apart from any backups or exports you made, which are covered further down).

WhatWhy
Your runs: start and end times, distance, times, paces, target, run/walk plan, step count, and whether it was on a treadmillHistory, summaries and the "Last time" line
The GPS track of each run (every location fix, with the step count at that moment), in its own databaseDistance, the route map, the pace colours, the thumbnails, and learning your stride
Your walking and running stride, learned from your runs or typed in by youMeasuring a treadmill run from your steps
Settings, and your cue listSo the app works the way you left it
Your weight, only if you enter it (or read it from Health Connect)Calorie estimates and snack targets. No weight, no calories.
Your profile (a display name and an "about" line you choose), an install id and a friend code made from it, your friends list, nicknames, and your sharing choicesThe friends feature
A cache of map tiles you have looked atSo the map loads faster the second time

Location

The app asks for precise location so it can measure a run. It uses it only while a run is being recorded, through a foreground service with a notification on screen the whole time. It doesn't ask for "all the time" background location permission and doesn't collect location when you aren't running. A treadmill run collects no location at all.

Location comes from your phone's location service (Google Play services' fused location provider, falling back to Android's own). Your phone's location settings, and Google's, apply to that service as they would for any app.

Steps

With your permission ("Physical activity"), the app reads the phone's step counter while a run is being recorded, and only then. On an outdoor run the steps are stored with the GPS track, so the app can work out how long your stride is. On a treadmill run, steps times stride is the distance. Steps are kept on the phone like the rest of the run and aren't uploaded. Say no and runs are recorded without steps, and a treadmill run counts time only.

Map tiles

A finished run's summary shows the route over a map. The route itself is drawn on your phone, but the map underneath is downloaded as tiles from OpenFreeMap, built from OpenStreetMap data. As with any website you visit, their servers see your IP address and which tiles were requested, which is roughly the area of the map you're looking at. The app sends no account, no identifier and no track.

If you'd rather it didn't, view summaries offline: the app draws the route on a plain background instead. The History thumbnails and the share picture never use the map.

Friends and sharing

Nothing is sent until you switch on "Online friends". The app asks the first time you open Friends, and you can switch it off again in Friends & sharing. Off, the app makes no requests to our server at all.

On, the app talks to our server at api.bradhatesrunning.com (hosted by DreamHost in the United States). It keeps:

Switching a run's sharing off, or deleting the run, removes it from the server. "Delete my account on the server" (in Friends & sharing, when you switch Online friends off) removes everything above. The server's nightly database backups are kept for 14 days, so a deletion is gone from those within two weeks. Our host's web logs record addresses and which kind of request was made, never which friend or run it was about: ids travel inside requests, not in addresses.

This is the most a friend can ever receive from you, and only at the level you choose for them (nothing, weekly totals, every run, or every run plus the fact that you're running now):

Never where you ran, never your route, never the time of day, never your weight or calories. That rule is built into the app's data types and checked by its tests, not just promised here. Nicknames you give friends never leave your phone.

The share picture

"Share this run" makes a picture on your phone and hands it to whichever app you pick in Android's share menu. It shows the day, not the time, and has no map. The route shape is off every time you open it, and switching it on shows a warning first. What happens to the picture after that is up to you and the app you sent it to.

Health Connect

The Health Connect switches are off until you turn them on, and Android asks for your permission when you do.

Health Connect keeps its data on your phone. Other apps can read it only with the permissions you give them there. Turn the switches off, or remove the app's access in Health Connect, and it stops.

Backups and exports

All three also carry the key that lets a restored phone sign back in to online friends as you. The server keeps only a one-way fingerprint of that key, but anyone holding the backup or export itself could use it, which is one more reason to give an export a passphrase.

Voice

The app's voice is rendered in advance and ships inside the app as audio, so cues need no internet. If you choose the phone's own voice instead, your phone's text-to-speech engine reads the cues; some engines' voices are marked "Needs internet" and send the text to the engine's provider.

Permissions, and why

What the app doesn't do

No advertising, no analytics or tracking libraries, no automatic crash reporting, no account, no selling or sharing of data. The app contains no code whose job is to report on you.

"Send a problem report" in Settings opens your own email app with the app's recent log (and the last crash, if there was one) attached, addressed to issues@bradhatesrunning.com, for you to send or not. It holds the app's version, your phone's model and system version, and a few settings such as units; no location, runs, weight or name. Nothing is sent unless you send that email.

Deleting things

Delete a run in the app and its track goes with it. "Reset settings" puts the settings back. Uninstalling removes everything the app stored on the phone. Backups in your Google account follow Google's rules for app backups; exports are files you manage yourself.

This website

This site is plain pages. No cookies, no analytics, no fonts, scripts or embeds from anybody else. The web host keeps ordinary server logs (IP address, page, time and browser) for security and troubleshooting, as web hosts do.

The alpha download page is the one exception to "plain pages": the code you type there is sent to our server at api.bradhatesrunning.com, which counts how many times each code has been used and when it was last used. It keeps no record of who downloaded, and only a one-way hash of each code. Wrong codes are counted per connection, under a one-way hash of the address, to slow down guessing.

Changes

If the app starts doing something new with your data, this page changes first and the date at the top moves.

Questions

Anything about your data, including asking for something on the server to be deleted: privacy@bradhatesrunning.com. Problems with the app: issues@bradhatesrunning.com, or "Send a problem report" in Settings.