Every other rating site asks you to trust them. We'd rather show you the working. Here is the entire algorithm - every weight, every penalty - and the breakdown on every food page shows exactly where its points went.
Algorithm v1.4.0 100 points, six componentsPenalties to -25No pay-to-rank, ever
The principle
Why the formula is public
A rating you can't check is just an opinion with a number on it. Ours is a calculation: the same published formula runs on every food's label data, and every food page shows the point-by-point result.
That cuts both ways, deliberately. Brands can see exactly why they scored what they scored - and exactly what would improve it: clearer labels, named meat, fewer artificial additives. If a score changes, the working changes with it.
Nobody can pay to move a number. Advertising and affiliate links exist on this site; they have no route into the maths.
And price is never part of it. The score measures one thing - what is in the bowl and how honestly the label says so - so a food is judged on the same footing whether it costs 20p a day or two pounds. We show cost per day as separate information, so you can weigh a food's score against your budget yourself; a high price never earns points and a low one never loses them.
The formula
Six components, 100 points
Every complete food starts from the same six questions. Treats and mixers skip the ones that don't apply to them (macro balance, meat content, processing) and are rescaled to /100 from the rest.
AIngredient quality40pts
BMeat content15pts
CLabelling clarity15pts
DAdditives10pts
ENutritional balance10pts
FProcessing10pts
That is the full 100. After they are summed, the red-flag penalty pool below can take up to 25 points back off. The cards spell out each one.
A
Ingredient quality
40 pts
The weighted average quality of everything in the bowl.
Named fresh meat, fish95-100
Named meals, organ meats80-85
Rice52
Maize, wheat28
"Meat and animal derivatives"15
"Cereals" (unspecified)15
Weighted by declared percentage, or by position (35/20/12/8/6) when the label gives none. A plant-led recipe with little named meat is anchored down - a dog food should be built on animal protein, not on well-scoring plants alone. Heavy legume loads are noted for information only: the FDA found no causal link between legume-rich diets and heart disease (DCM), so we tell you rather than score it.
B
Meat content
15 pts
Declared total meat percentage.
50% or more15
30%11
20%7
Sliding smoothly between anchors3-15
No figure, named meats lead6
No figure, vague meat terms0
Points slide between the anchors with no cliffs - a step ladder paid 4 extra points for the 1% between 49% and 50% meat, which only rewarded printing the magic number. Dried meats and meals count at their fresh weight (a rendered meal is roughly 2.4x as concentrated), so honest meal-led labels no longer lose to fresh-inclusion marketing. The credit is still held to what the food's dry-matter protein actually supports: for an adult, full marks need 27% dry-matter protein.
C
Labelling clarity
15 pts
Whether the label tells you what is in it.
Every ingredient named+5
Percentages, by how much of the recipe they cover+6
Meat species stated+2
Fixed recipe, no "may contain"+2
Vague category terms forfeit the naming points for the whole label.
D
Additives
10 pts
Starts at 10. Deductions only.
BHA / BHT class preservative-8
Artificial colours-6
Unnamed preservative-4
Added sugars, caramel, glycerol-4
Artificial flavourings-3
Declaring a benign additive costs nothing - naming your tocopherols is exactly the practice we want. Only additives below our neutral line (carrageenan, unnamed antioxidants, gelling agents) deduct. BHA and BHT are legal in the UK - docking them is our stated preference, never a claim they are banned. Ethoxyquin, which genuinely is banned in the EU, is a red flag below.
E
Nutritional balance
10 pts
Carbohydrate and fat on a dry-matter basis, so wet and dry compare fairly.
Under 30% carbs4
30-55% carbs (sliding)4-0
Fibre in the 1.5-5% bandup to +2
Ash a sensible mineral load (to 8%)up to +2
Fat too low or too high-2
Named functional extras+2
Carbohydrate is a supporting signal, not a verdict - dogs digest cooked starch well, so it is weighted modestly and slides with no cliffs. Fat is judged as a band: healthy costs nothing, deficient or excessive fat docks up to 2. Moderate ash is not a fault; only genuine extremes score zero. No published analysis scores a neutral 4 and the page says "estimated".
F
Processing
10 pts
How hard the food was cooked.
Fresh-cooked10
Raw, freeze-dried, air-dried8
Cold-pressed7
Wet, extruded kibble6
Gently cooked fresh food tops this table because it keeps nutrients AND kills pathogens. Raw and freeze-dried are minimally processed but have no heat kill step - surveys repeatedly find Salmonella and Listeria in commercial raw diets - so they sit just below, and their pages carry a handling note. Inferred from food type; unstated shows as "assumed extruded", never guessed in the maker's favour.
The red-flag penalty pool
to -25
Subtracted after the six components. Position is dosage, so a red flag in the first five ingredients counts double.
Red-classified ingredient-4 to -10
Unspecified derivatives as ingredient one-10
Ethoxyquin (banned in the EU, Reg 2022/1375)-10
Artificial preservative in a "natural" food-3
Maximum total penalty-25
Every penalty is printed on the food page with its reason.
Open data
The reference quality scores
The anchor values behind component A, published in full. Every ingredient we track has its own page with its exact score and classification.
Ingredient
Quality score
Named fresh meat or fish (chicken, salmon)
95-100
Egg
90
Named organ meat (chicken liver)
85
Named oils (salmon oil)
85
Named meat meal (chicken meal)
80-85
Insect protein
75
Sweet potato
75
Oats
70
Rice
65
Barley
60
Beet pulp
60
Potato
55
Peas and legumes (heavy loads noted for information)
Missing data never earns points and never gets papered over. Three rules, applied automatically and shown on the page every time.
Not yet rated
No ingredients list means no score, full stop. The page says "Not yet rated - awaiting label data" instead of showing you a guess.
Provisional
If more than 20% of a label's entries aren't in our ingredient database yet, the score is capped at 69 and wears a provisional badge until we've reviewed them. The cap and the reason are printed in the breakdown.
Estimated
No declared analysis means the nutrition component scores a neutral 4/10 and the page says "estimated". Undeclared moisture is assumed at a typical value - and flagged, so the dry-matter maths is never silently invented.
The exception
Why clinical diets are never scored
Veterinary and prescription diets are formulated for medical conditions under veterinary supervision. A renal diet deliberately restricts protein; scoring it like an everyday food would punish it for doing its job.
So we don't. Clinical diets carry a badge instead of a number, we list their composition and ingredients factually, and the prescribing stays where it belongs - with your vet.
Reading a score
The bands
Always out of 100, never a percentage. The number and the band label always travel with the colour.
Exceptional90+
Very good80-89
Good60-79
Average45-59
Poor30-44
Avoidbelow 30
A 90+ has to feel earned - we calibrate so fewer than one food in twenty gets there. And it has to be provable: 90+ is reserved for fully transparent labels, meaning a complete analytical declaration and percentages covering at least half the recipe. A food that qualifies on points but not on disclosure holds at 89, with the reason printed in its breakdown.
Proof, not promises
A worked example
Not a mock-up - this is a real food from the directory, rendered from the same stored breakdown its own page shows, refreshed whenever it is re-scored.
Algorithm v1.4.0 - exactly as shown on its own page
90 / 100
Provenance
Version and changelog
The algorithm is versioned like software, because it is software. Every food stores the version that scored it, and changes land here - never silently.
v1.4.0
Launch version - current
Six components (100 points) plus the red-flag penalty pool, the data-confidence rules and the reduced formula for treats and mixers. Calibrated against 30+ reference foods across the quality spectrum before launch, with the rank order sanity-checked against expert consensus.
Straight answers
Questions we actually get
Can a brand pay to improve its score?
No. Scores are computed from label data by the algorithm on this page - there is no editorial dial to turn and no sales team with access to one. We earn money from advertising and affiliate links, and neither has a route into the maths.
Why does a food score differently here than on other sites?
Different formulas produce different numbers - the difference is you can read ours. Every weight is on this page and every food page shows its own working, so when we disagree with another site you can see exactly why.
Do owner reviews change the ODF Score?
Never. Star ratings from owners are shown separately on every page. The ODF Score is about what is in the bowl; reviews are about whether dogs actually eat it. Blending them would corrupt both.
What happens when a recipe changes?
We re-score from the new label and the breakdown updates with it. Every food page shows a "label last verified" date, so you can always see how fresh the data behind a score is.
Why doesn't my vet-prescribed food have a score?
Clinical diets are formulated for medical conditions under veterinary supervision, and scoring them like everyday foods would punish them for doing their job. We list their ingredients and composition factually and leave the prescribing to your vet.
Now put it to work
Every food. Same formula. Full working shown.
Browse the directory and open any breakdown - the algorithm you just read is the one that scored it.