Burnline
Calorie balance for iOS

A balance, not a budget.

Most trackers give you a bar that fills as you eat less, so the app is happiest on the day you eat nothing. Burnline shows a reading on a scale instead — and the scale runs past your target into territory you probably didn’t intend.

balance = burned so far − eaten so far

Two measured figures and their difference. Both of them sit directly under the reading, so you can check it rather than trust it.

It is not on the App Store yet. There is nothing to sign up to — when it ships it will be said here and in the notes.

The Today screen. A dial reads 450 kcal deficit and a pill beneath it says On track. Under the dial: BURNED 2 214 of 3 093 kcal, marked estimated; EATEN 1 762 of 2 643 kcal; PROTEIN 89 of 130 g; LEFT TO EAT 881 kcal. Below that, today's log lists running, porridge and banana, each labelled FROM THE LIST.
A real screenshot, not a mock-up. Every picture on this page is simctl output or a render of the app’s own views.
The instrument

Drag it to the right. Watch it not get happier.

The dial is a diverging scale, not a progress ring. The target is the peak of it, and colour falls away in both directions — so nothing to the right of your target can read as a better result. That is the whole difference between a balance and a score.

The dial reading 450 kcal deficit, with a pill saying On track.
Surplus Deficit

450 kcal deficit — On track. The target band is the destination. Nowhere further right is a better result.

Every frame above is the shipping control, rendered from the app’s own view at seven real readings — not an illustration of it.

Note what happens at each end. A surplus is described as above maintenance and nothing more: eating more than you burned for a day is the most ordinary non-event there is, and the app does not treat it as an error. Push the other way and the colour does not brighten: green is strongest at your target and fades toward a pale mint beyond it, so nothing to the right can read as more of a win. The status line says how far past you are; the scale declines to congratulate you for it.

It runs the other way too. Set a goal of putting weight on and the green moves to the surplus side to meet it. The axis does not flip — which side is a surplus is a fact rather than a preference, and a day in surplus is still described as one. Only the target moves, and the colour with it.

It runs the other way too. Set a goal of putting weight on and the green moves to the surplus side to meet it — the axis does not flip, because which side is a surplus is a fact rather than a preference, and a day in surplus is still described as one. Only the target moves, and the colour with it.

Near maintenance it stops showing a number at all and says Near. A hundred calories either side of zero is noise — it is a band you set in Profile, and the colour widens with it — and printing a figure inside it would be a claim to precision the numbers cannot support.

Provenance

Every figure says where it came from.

A number you typed and a number a model guessed are not the same kind of thing, and an app that draws them identically is quietly lying to you. So each entry carries its origin, and the label is on the row.

As entered
You gave the figure. It is used exactly as written, with no estimating.
From the list
A row you picked out of the food list, with its USDA figure and portion.
Estimated
A model answered, and the confirm sheet names which one before anything is saved.
From Health
Imported from HealthKit — a workout Health already knew about.
Rough guess
Said plainly, so it can never be mistaken for a measurement.

Logging the same thing again does not promote it. Repeat yesterday’s lunch and the origin is untouched: a rough guess logged a second time is still a rough guess.

A sheet titled How this adds up. So far today: Burned 2 286, Eaten 1 762, Balance 524 kcal. What today is aimed at: expected burn by midnight 3 093, intake this allows 2 643. Where the burn comes from: resting energy 1 602, everyday activity 1 161, logged workouts 330. Then a paragraph explaining that the dial subtracts what you have eaten from what you have burned and shows nothing else.
Tap the reading and it shows its own arithmetic, with today’s actual numbers in it — every term, down to where the burn came from.
Logging

One field. No chooser in front of it.

Add opens a text field and starts answering as you type. There used to be a menu asking how you would like to describe the thing before you had described anything — it is gone.

Nothing typed

Again

What you log most over the last thirty days, grouped by name. One tap repeats the most recent version.

Something it knows

Yours, then the list

Entries you have saved, then matching rows from the food list — each with its portion and its figure on the row.

Something it doesn’t

Fill in the figures

The by-hand form is in the footer the whole time, never behind the paid path. “Burger” is in the list, and yours may still have been a double.

The Add sheet. The word Chicken has been typed into a field, with camera and photo-library buttons beneath it marked PRO. Under YOURS: chicken salad 416 kcal, Chicken salad and rice 350 kcal. Under IN THE LIST: chicken breast 236 kcal for 1 cup cooked diced, chicken drumstick 278, chicken wing 90, chicken curry 257, chicken salad 416. A footer note reads: numbers you give are kept exactly, anything else is estimated and marked as such. A green button says Fill in the figures.
About today

A remark about the day, or nothing at all.

Between the figures and the log there is a block that sometimes has a sentence in it. It reads what you actually ate — the entries, in your own words, with their times and portions — and ties a total back to the things that made it.

Most of today so far is the coffee and the pasta, so protein is the gap — 42 of 130, and one proper meal moves that a long way.
It may say nothing

No badge, ever

It is absent unless it has something worth saying, and the prompt is allowed to answer with nothing. A dot on an icon is an unread mark, and this app does not nag.

It has no opinion of you

Never ranks your food

Nothing anyone eats is virtuous. It can notice a fact about your own targets or your own logging; it cannot tell you a thing you ate was a good or bad choice, and there is no wording that unlocks it.

It performs nothing

The tick is the app’s

It asks; the app does it and reports back. The “updated” mark is drawn from the call that actually happened, never taken from its prose — something able to report its own success eventually reports one that did not.

Every change it makes has to declare where the number came from — you, or the model — before the app will accept it. That is the same rule as the rest of the app, written as an argument rather than as a hope.

The food list

590 foods, priced by the portion.

Resolved from the USDA’s FoodData Central survey data — the same reference the national dietary surveys are coded against. Each row keeps the identifier it came from, so any figure in the app can be traced back to the record it was taken from.

A row is priced by a portion a person would actually say — a cup, a wing, a slice — rather than leaving you to convert from a per-100-gram figure at the counter. Which foods are on the list is curated by hand and kept short on purpose: past a few hundred rows the problem stops being capacity and becomes whether the five results you can see are the right five.

The list needs no network and no account. It is on the phone.

The Foods screen, listing alfredo sauce 390 kcal for 1 cup, alfredo sauce with meat 445, almond milk 49, almonds 299 for 1 package, anchovy 95 for 1 can, apple 101 for 1 small, apple crisp 538, apple juice 63, apple pie 222. A search field at the bottom reads Search foods and activities.
Widgets

Most days you shouldn’t need to open it.

The app and the widgets read one record and re-run one engine, so they cannot disagree about today. There is only one implementation of the balance in the whole project.

Home Screen

Small and medium

Small carries the dial, the figure and the verdict. Medium adds burned and eaten against their denominators, and two buttons that open straight into logging.

The small widget: the dial at 450 kcal deficit with an On track pill. The medium widget: the dial beside BALANCE RIGHT NOW, an On track pill, BURNED 2 210 of 2 280 kcal, EATEN 1 760 of 1 830 kcal, and two buttons, plus Food and plus Move.
Lock Screen

Circular and rectangular

The system strips colour from these entirely. The zones are told apart by tick weight and brightness instead, and the marker protrudes past the scale rather than being a dot that could vanish into it.

The circular Lock Screen accessory, monochrome, showing 450 on a graduated ring. The rectangular Lock Screen accessory in white on a dark ground: 450 KCAL DEFICIT above a row of ticks with a brighter marker, and the words ON TRACK.
Live Activity

Track My Day

Opt in and the balance sits on the Lock Screen as a horizontal scale. It only redraws when the figure moves by 25 kcal or changes zone, so it stays still instead of twitching at you.

The Live Activity on the Lock Screen: 450 kcal deficit, On track, and a horizontal balance scale with a marker.
What costs money

The free app asks for no account, and almost none of it asks for a network.

The list, the by-hand form, repeats, saved entries, Health import, the widgets, the Live Activity, the statistics and the export all run on the phone with nothing signed in and nothing switched on. Scanning a barcode is free as well, and it is the one free thing that has to ask a database — when it cannot be reached, the list and the form are still there.

Free

Everything above

No account exists to make. Logging by hand or from the list never asks for a network, and the absence of a subscription can never block it.

Pro

Estimates, and the companion

Point the camera at a plate, or type something the list has never heard of, and a model answers — shown to you for correction before it counts. The same subscription pays for the companion, which reads the day and answers questions about it.

Both send something off the phone, and they do not send the same amount: an estimate carries the photograph or the phrase, the companion carries the day. Written out in full on the privacy page.

There are two tiers and there will not be a third: the free one is a whole app rather than a trial, and the paid one is the part that costs something to run. The subscription is not built yet, so this page is not going to quote a number it cannot take money for.

Your data

On the phone, in files you can read.

Where it lives

One container, plain JSON

A profile, your saved entries, and one file per day. No server holds a copy: there is no account to hold one against, and the server that forwards an estimate keeps none of what passes through it.

Getting it out

Export as a spreadsheet

One row per entry, with the origin and the source as columns — so the provenance survives leaving the app.

Health

Read-only, always

Steps, active energy and workouts are read if you allow it. Nothing is ever written back to Health.

Not out yet

It isn’t on the App Store, and this page won’t pretend it is.

The app is in development, and there is no list to join: the release will be announced on this page and in the notes, which are about where calorie figures come from and what a tracker has no business claiming. Nothing on this site asks you for an address, so nothing here has one.

Burnline estimates energy balance for general interest. It is not a medical device and does not give medical or nutritional advice. Talk to a professional before making significant changes to how you eat.