Privacy
Your training stays on your device.
Last updated
Brosiology has no accounts today and no server of its own. What you put into it is stored in your browser and isn’t sent anywhere. The app does send anonymous usage statistics, which you can turn off. This page says exactly what that means, and the few things that do go over the internet.
What stays on your device
Everything you enter: every workout and the sets, weights and reps you log, your programs, goals, pain and discomfort reports and their notes, your body weight, the joints and muscles you protect, your equipment and plates, and your settings. So do the day you started using the app and the last day and week the usage statistics counted, which the statistics use to work out “days since you started” without sending any date.
It’s kept in your browser’s own storage for this site (IndexedDB, or localStorage if IndexedDB isn’t available). There’s currently no account, no sign-in and no sync, so nobody else can see it, including whoever runs Brosiology.
A file you import, such as a Strong, Hevy or FitNotes export, is read in your browser and never uploaded. The CSV export of your log is made in your browser too.
That also means there’s no copy anywhere else. Clearing this site’s data in your browser, or removing the installed app, deletes it for good. A backup you made yourself is the only way to get it back. On iPhone, the Home Screen app and Safari keep separate data.
To delete everything in the app, including the usage statistics id: You → Data → Back up, restore or reset → Erase all data.
What leaves your device
None of your training data. Brosiology sets no cookies. The only things that go over the internet are:
- Loading the site and the app. Your browser downloads the pages and files from the host (see Hosting, below). The installed app opens from files saved on your device and checks the host for updates when you’re online.
- Fonts. The pages load their typefaces from Google Fonts, so your browser asks Google’s servers for them. Like any web request, that tells Google your IP address, your browser and the site asking. Google says font requests carry no cookies and aren’t used to build profiles or target ads (Google Fonts privacy FAQ). The installed app keeps the fonts after the first load.
- Anonymous usage statistics. Whether people come back, what they set up, which features get used, errors and load times, which buttons are tapped, and anonymous screen recordings with every word, number and input masked, sent to PostHog unless you turn them off. See Anonymous usage statistics, below.
- What you send yourself. Backups and share codes, below, go only where you put them.
- Links you tap. The Support link opens Ko-fi, and a few credits link to other sites. Those sites have their own privacy terms.
Anonymous usage statistics
To learn what to improve, the app sends PostHog anonymous usage statistics. They answer five questions: do people come back, what do they set up, which features earn their place, does the app break or run slowly, and which buttons get tapped.
- Whether people come back. The first time the app is opened each day, a note gives how many days since you started; the first time each week, how many weeks since you started and which week you started in (such as week 45 of 2026). Both also say whether you started before this device first opened the app, as when you bring a log from another app or restore a backup. A finished workout says which workout it is in your log (1, 2, 3 and so on) and how many days since you started. Days past 90, weeks past two years and workouts past 100 are sent as that top number. The day you started is your first day on the app or the first workout in a log you brought from another app, whichever is earlier; it and the last day counted are kept only on this device, in your saved data, and travel with a backup. Sample data never counts. When the app is opened and when a workout is finished, the note also gives your training habits in bands: how many weeks since your first workout and how many workouts (such as 2–4 weeks and 10–24 workouts), how many days a week you trained over the last four weeks, the time of day (morning, midday, evening or night), and where the active program came from; a finished workout also gives your week streak in a band (such as 4–7 weeks).
- What you set up. Once a week, and when setup is finished: your goal, your experience, how many days a week you chose, how long a session you chose (in a band such as 60–90 minutes), your equipment setup (which built-in one, or just “your own”), your units, which strength standards you compare against, whether full screen is on, and counts of your protected joints and muscles, bands, programs and custom exercises and of the kinds of prompt you turned off. Setup also notes each step as it’s shown, so it can be seen where people stop.
- Which features get used. A short note when one of these happens: the app or a tab is opened; setup is finished or skipped; a program is made active (where it came from: the generator, built by hand, a share code or a typed-in routine; its split; its goal); a workout is started or finished (its length in a band such as 30–60 minutes, how many exercises, whether it was logged afterwards, and whether any reps in reserve or bands were logged) and how many new records it set; a routine typed into Review my routine is read (how many lines and days, and how many lines it was unsure of) or saved (and whether estimated history was added); the Program Lab is opened, a fix applied (which kind of finding, such as volume, and which kind of fix), a scenario tried, or the program saved; a suggestion is acted on (which kind, and whether it was set to prompt or quiet); a swap is taken (why: a stall, the equipment or by choice; whether it kept the same move with other kit; and where it sat in the list offered); an exercise is added (only its kind: core, variant, specialty or modified, and whether from the picker, the Lab or as a new one in the Library); a filter chip is turned on in the Library or the picker (which chip, such as legs or dumbbell; a search only says one was started); the evidence notes for a movement family are opened; the motion view is turned or played; a muscle on a muscle map is tapped (not which); the “Something hurts” steps end (with a swap, lighter, skipped, stopped, just logged, or closed); a pain or discomfort report (how bad: mild, moderate or severe, and the joint area, or just “muscle” for a muscle); a joint is protected (its joint area, and whether to avoid it or go easy); a swap is taken because something hurt or a joint is protected (its joint area, whether it kept the same move with other kit, and where it sat in the list offered); a block check-in is shown, taken or dismissed; a goal plan is made (how many lifts, and the first one’s movement, such as bench press); a backup is copied or restored; your log is exported as CSV; a share code is copied, shared or imported (program or exercise); a log is imported from another app (only which app: Strong, Hevy, FitNotes or a Brosiology export); the install prompt is accepted; the thank-you prompt asking for support is shown or its Support button tapped (only which milestone it marks, such as 50 workouts or a year); and the statistics are turned off. A joint area is one of nine: shoulder, elbow, wrist, neck, upper back, lower back, hip, knee or ankle. It never says which side, how it happened, which muscle, or anything you typed. Each note also says whether the app is installed or in a browser tab, whether the device runs iOS, Android or something else, the app version, and which tab was open (Train, Plan, Goals, Library, Progress or You).
- Errors and load times. When the app hits an error it doesn’t catch: the kind of error and where in the app’s own code it happened (the file, line and function of the code as served). An error’s message can repeat something on screen, so only its first 80 characters are sent, with anything in quotes and any web address removed and every digit replaced by #. How quickly pages load and respond (web vitals), as timings only.
- Taps and screens. Which screens are opened, which buttons and links are tapped and where on the screen, so taps can be shown as a heatmap. A tap names the button only by the app’s own short label for it, such as start_workout or tab_plan, or the first words of its built-in id, such as log-instead; generated ids are cut off. All text and every other attribute are removed before anything is sent, so it records which button was tapped, not what it said.
- Screen recordings. Anonymous recordings of how the app is used: the layout of each screen, scrolling and taps. Every word, number and input is masked and images, icons, charts and the muscle and motion views are blocked, so your weights, reps, notes, pain reports and names never appear in a recording; the only labels that show are the same button labels. While the beta is small, every visit is recorded.
Nothing else is sent: no weights, reps, sets, body weight or body measurements, no names, no exercise or program names, no side, cause or note for a pain report or a protected joint (only its joint area), nothing you type, and no share or import code. No dates leave the device either: only counts, such as days since you started. Page addresses are cut to the page itself, such as /app/, with nothing after a # or ?, and the address of the site you came from isn’t sent. There’s no account and no cookie. There is one stored identifier: a random id kept on this device in the browser’s storage, with no name or account attached, sent with the statistics so that visits from this device can be counted as one person over time (to learn whether people keep training). It isn’t linked to anything that could identify you, and if accounts ever exist it will be kept apart from them. Reset id in You → Usage statistics replaces it with a new one, so later visits can’t be linked to earlier ones; it’s deleted when the statistics are turned off, when your browser sends Global Privacy Control, and by Erase all data. PostHog is told not to build a profile of the visitor or look up a location from the IP address, and Brosiology’s PostHog project is set to discard IP addresses.
The statistics go to PostHog (PostHog, Inc.) at eu.i.posthog.com, its EU cloud, hosted in Frankfurt, Germany, and the app reads its recording settings from eu-assets.i.posthog.com. PostHog’s code, including its recording, error and load-time parts, is built into the app and served from this site; nothing is loaded from PostHog’s servers to run it. As with any web request, your browser’s request shows PostHog your IP address and browser; PostHog’s privacy policy covers what it does with requests. Statistics that can’t be sent are retried while the page is open and dropped when it closes; none wait in this browser’s storage.
The statistics are off when You → Usage statistics is set to Off (one last note says they were turned off, then nothing more is sent or recorded), and always off when your browser sends Global Privacy Control. When they’re off as the app opens, PostHog’s code isn’t even loaded. A copy of the app built without a PostHog key sends nothing. The statistics are never sold, never linked to a person and never used for ads.
Hosting
The site is served by Microsoft Azure Static Web Apps. As with any website, each request your browser makes includes your IP address, your browser details and the address asked for, and Microsoft may keep these in its own service logs to run and protect the service. Brosiology hasn’t added any logging of its own on top of that; the usage statistics above go to PostHog, not the host.
Backups and share codes
A backup (You → Data) is a file, or text copied to your clipboard, that holds all of your Brosiology data. It’s made only when you ask, and goes wherever you save or send it, such as your files, an email or a cloud drive, whose own privacy terms then apply. Anyone who has it can read it.
A share code holds one program or one exercise, with any custom exercises the program uses. It doesn’t include your logged workouts, weights, pain reports or body weight. You choose who gets it, and anyone with the code can import it. A share link puts the code in the web address, so the host receives it, like any address, when someone opens the link.
No ads, no selling
Brosiology shows no advertising and loads no advertising or tracking scripts from other sites; the usage statistics above are collected by PostHog’s open-source code, built into the app and served from this site, and sent to PostHog only. It doesn’t sell your data or show it to advertisers, and it doesn’t collect any to sell.
Children
Brosiology isn’t directed at children under 13.
Changes to this page
If what Brosiology does with data changes, this page changes first, and the date at the top changes with it.
Contact
Questions about privacy, or anything else: email blakelsmedley@gmail.com, or send a message on Brosiology’s Ko-fi page.