Repository navigation
FAQ
Answers to the questions that come up most often. If yours isn't here, open an issue on GitHub.
OpenNutriTracker is a free, open-source nutrition and calorie tracker. There are no ads, no subscriptions, no in-app purchases, and no paid tier — every feature is available to everyone. The source code is public under the GPLv3 license, so anyone can inspect how the app works or build it themselves.
iOS (App Store) and Android (Google Play). Android APKs are also attached to GitHub Releases for side-loading — if you install one, you can verify the signing certificate against the official SHA-256 fingerprint published in the README.
Nine: English, German, Czech, Italian, Polish, Slovak, Turkish, Ukrainian, and Chinese (Simplified). Want to add or improve one? See the Contribution Guide.
No — OpenNutriTracker is currently a mobile app for iOS and Android only.
Everything you log — meals, activities, weight, water, settings, profile — is stored locally on your device in an AES-encrypted database (Hive). The encryption key is generated on first launch and kept in the platform's secure storage (Keychain on iOS, Keystore-backed storage on Android). There is no account and no cloud copy.
Two things, and only these:
- Food-database lookups — searching or scanning a product sends the search term or barcode to Open Food Facts and (if enabled) the reference-database backend, because that's where the food data lives. No personal profile data is attached.
- Anonymous crash reports — only if you opted in during onboarding. This can be turned off at any time in Settings, and the app works identically without it.
There is no analytics tracking of your food, weight, or behavior, and your data is never shared with third parties. The formal privacy policy is here.
There is no built-in cloud sync (that would require servers and accounts, which the app deliberately avoids). What you can do:
- Export/import — export your full diary, activities, and custom foods as a zip (Settings → Export / Import App Data) and import it on the other device.
- QR sharing — share a single meal or activity to another phone by letting it scan a QR code.
- The export bundle is plain JSON + CSV with a documented format, so tools like Syncthing or a spreadsheet can work with it too.
The export zip contains your food diary, logged activities, tracked-day history, and recipes — each as JSON (which the app can re-import) plus a flattened CSV companion for spreadsheets and external tooling (recipes are JSON-only). Your profile (height, weight, birthday, activity level, goal) is deliberately not included, so a shared export file doesn't leak body data; you re-enter the profile on the new device.
Settings → Delete all data removes everything the app has stored, after a confirmation. Since all data lives on the device, uninstalling the app also removes it — there is no server-side copy to clean up.
Three sources:
- Open Food Facts — a community-maintained database of packaged products worldwide. Always enabled.
- USDA FoodData Central (FDC) — the US reference database, good for generic/unbranded foods.
- German Bundeslebensmittelschlüssel (BLS) — the German federal food composition database.
FDC and BLS are served through the app's own open-source backend and can be toggled individually in Settings → Food databases. You can even self-host the backend and point your own build at it.
Packaged-product coverage comes from Open Food Facts, which is community-maintained, so gaps happen. You can:
- Create a custom meal with the product's nutrition values and attach the barcode to it — from then on, scanning that barcode finds your own entry.
- Add the product to Open Food Facts itself (via their app or website) — that fixes it for every user of every app that uses the database.
Product data from Open Food Facts is community-entered and not validated by the app — always sanity-check values that look off (this is also why the app's disclaimer exists). You can correct the product on Open Food Facts directly, or create a custom meal with the label's real values and use that instead.
- Custom meal — a food you define once with its nutrition values (per 100 g/ml or per serving), searchable later, optionally with photo, brand, and barcode.
- Recipe — a composed dish built from real ingredient products with the built-in ingredient picker; the app computes the combined nutrition per portion.
- Quick add — the shortcut for "I know it was about 550 kcal": title + kcal (+ optional macros), logged directly with no stored food item.
From the activity's MET value (2024 Adult Compendium of Physical Activities), your weight, and the duration: kcal = MET × weight × hours. Details and sources on the Calculations page. You can also define custom activities and enter calories directly.
In short: an estimate of your maintenance energy (TDEE, computed with the IOM 2005 equations from your age, height, weight, and activity level) plus a deficit or surplus for your weight goal, plus any manual offset you set, plus calories burned by logged workouts. Every component — including the exact formulas, coefficients, and worked examples — is documented in full on the Calculations page.
That's intentional: exercise calories are added on top of the goal so that your planned deficit or surplus stays the same whether or not you train. If you prefer not to "eat back" exercise calories, simply don't consume the extra budget — or disable activity tracking display in Settings.
If the computed goal lands below commonly cited safe minimums (≈1500 or ≈1200 kcal/day depending on your profile), the app shows a non-blocking warning suggesting professional advice. The goal is not clamped — see Low-Calorie Warning for the exact thresholds.
Yes — you can move the diary's day boundary (e.g. to 04:00) in Settings → Calculations, so a 2 a.m. snack counts toward the previous day. See Diary Day Boundary.
You choose: an averaged midpoint of the male and female reference formulas (the default), or explicitly the estrogen-typical or testosterone-typical reference. The reasoning and math are documented under Calorie Profiles for Non-Binary Users.
Yes — Settings offers a global kJ toggle. Values are converted for display with the standard factor 4.184 kJ/kcal; internally everything stays in kcal.
That's a deliberate one-time safety gate: fasting is not appropriate for everyone (e.g. during illness, pregnancy, or with a history of eating disorders), so the feature stays locked until you acknowledge the warning.
Please open an issue with steps to reproduce (for bugs) or a short description of the use case (for features). Pull requests are welcome too — see the Contribution Guide.
⚠️ Disclaimer: OpenNutriTracker is not a medical application. All information should be taken with caution — mistakes can happen. Consult a qualified professional for personal medical or dietary advice. Use during illness, pregnancy, or lactation is not recommended.