This app turns the "per 1000kcal" nutrient numbers from your private recipe sheet into the Dry Matter and As-Fed values that go on a Viva nutrition label — the same math your DMB/As-fed Google Sheet tabs did, just in one place.
Getting started
- Pick a recipe from the dropdown at the top, or click + New Recipe to start one.
- Fill in Caloric density (kcal/oz) and Moisture (%) — every other calculation depends on these two numbers.
- Paste each nutrient's caloric value (per 1000kcal) from your private recipe sheet into its box. Dry Matter and As-Fed fill in automatically as you type.
- Switch to the Label tab to see the print-ready layout, color-coded to match this recipe. Click Download as PNG to save an image you can drop into your Slides deck.
A few things that are NOT calculated
- Guaranteed Analysis (Crude Protein/Fat/Carb/Fiber) takes the buffered As-Fed % from your AAFCO Labels sheet as input — Caloric and Dry Matter are derived from that, not the other way around.
- Ca:P and Omega-6/Omega-3 are plain values you paste in directly (e.g. "1.1 : 1") — they aren't derived from the mineral or fatty-acid numbers.
- Calories from Protein/Fat/Carbohydrate are also pasted in as-is.
Buttons & controls
- + New Recipe — starts a blank recipe.
- Duplicate — copies the current recipe (handy for a new protein that's similar to one you already have).
- Delete — removes the current recipe. You'll be asked to confirm; you always need at least one left.
- Backup / Restore — Backup downloads all your recipes as a JSON file; Restore loads one back in (it asks you to confirm before replacing what's currently here). Worth doing after any big edit, since everything only lives in this browser.
- Protein buttons (Chicken/Turkey/Pork/Duck/Rabbit/Beef) — each has a fixed brand color, used automatically on the Label view. Click + Special for a one-off seasonal protein (e.g. Venison) with a custom name and color.
- Recipe (Dog/Cat/Pure/Puppy) — switches the AAFCO footer text and shows/hides Taurine (Cat only). Puppy recipes are always the Beef & Turkey blend, so there's no protein to pick.
- Label color (Label tab) — sets the accent color used on the printed label; only applies if you pick one yourself.
- Pick slot / Upload (Label tab) — choose which image slot on the real Slides deck is the recipe photo, or upload a new one to push there.
- Connect Slides / Push to Slides (Label tab) — connect once with the Slides key, then Push to Slides overwrites the matching slide's nutrient tables, "Last Updated" stamp, and (if filled in) the Ingredients box and photo — with the color-coded row tint if you picked a Label color. It only ever overwrites a field you've actually filled in here; anything left blank is never touched on the slide.
- Pull from Slides (Label tab, once connected) — the reverse of Push: creates a new tab for every recipe slide in the deck, named exactly like the slide it came from. The Calculator for each one starts completely blank on purpose — nothing gets pulled into it — but the Label tab shows that slide's current values as a reference, field by field, until you type your own number in on the Calculator (which then takes over just for that one field). Handy for double-checking a slide's numbers or turning it into a fresh recipe without retyping everything. The dialog pre-fills the deck link it already knows about, but you can paste a different one.
Precision
The Calculator tab always shows 2 decimal places so small values (like 0.02%) stay visible. The Label tab (and what gets pushed to Slides) shows a clean 1 decimal place, except when that would display "0.0" for a value that isn't actually zero — then it shows 2 decimals there too, just for that number.
Saving
Everything saves automatically to this browser as you type — there's no separate save button, and nothing is sent anywhere online (except what you explicitly push to Slides). Use Backup regularly, since uninstalling the app or clearing this browser's site data erases everything with no way back otherwise.