How the calculator decides
The calculator does one thing: it adds up what a provider published, then tells you which parts of that sum it could not verify. It never estimates, never fills a gap with a neighbouring number, and never chooses an introductory discount on your behalf. Every rule below is in the code, and you can disagree with any of them.
Rule 1: a per-serve price is multiplied by every serve in the box
One serve is one person eating one meal. A box for four people with five recipes holds 20 serves, not 5. When a provider publishes a price per serve, the calculator multiplies it by people × recipes. Multiplying by the recipe count alone is the single most common way a meal-kit comparison gets it wrong, because it silently leaves out the household size.
HelloFresh’s own page is the proof that this is the right reading. It quotes the family-of-4, 5-meal box as “$165 + shipping”, which is $8.25 a serve — and $165 ÷ 20 serves is exactly $8.25.
Rule 2: a per-box price is used as-is, and shipping is not added twice
Some providers publish a box price instead of a per-serve price. When that box price already contains shipping, the calculator does not add a delivery fee on top. This is why the two price bases are never mixed into one column: a per-serve figure and a shipping-inclusive box figure are not the same kind of number.
- HelloFresh — published per serving. HelloFresh states the price as "$165 + shipping" for the 4-person, 5-meal box and does not publish a separate shipping amount on the plan page, so the shipping line is shown as unknown rather than zero.
- Dinnerly — published per box, shipping included. Dinnerly box prices already include the $11.99 shipping, and a shipping surcharge of $1 or $2 applies to some delivery areas. Shipping is therefore counted once inside the box price, not added again.
- My Foodie Box — publishes only a starting price ($6.25 per serve) and a flat $9.95 delivery fee, with no per-box table, so it cannot fill a comparison grid. It appears in the provider list marked as such.
Rule 3: an unpublished amount is never shown as zero
A missing delivery charge is not $0. When a provider does not publish a delivery amount, that amount stays out of the sum and the total is labelled “at least”. The figure can only go up, and the page says so. This is the difference between an honest lower bound and a total that is wrong by whatever the missing part happens to be.
Rule 4: a known fee with an unknown area top-up is also a floor
Dinnerly includes $11.99 shipping in its box prices, then adds “$1 or $2 in some delivery areas”. The base fee is known; the top-up depends on the reader’s postcode, which this site never asks for. Every Dinnerly total is therefore also a floor — for a different reason, and with a different message, so you know which number to go and check.
These two unknowns are kept separate on purpose. “Delivery not published” and “some areas pay more” have different fixes: the first means asking the provider, the second means entering your own postcode on their site.
Rule 5: nothing is interpolated between box sizes
If a provider publishes 4 × 5 but not 4 × 6, the calculator reports that gap instead of averaging its neighbours. It applies to household sizes and to recipe counts, and the recipe limits are read per box row rather than per provider — Dinnerly’s 6-person box stops at 5 recipes while its 4-person box runs to 6. Reading that limit off the provider as a whole is how a tool ends up quoting a box that is not for sale.
Rule 6: the default result is the ongoing cost, not the offer
No provider published a discount amount, a discounted week count or a post-offer price we could quote on 2026-10-04. So the introductory offer is a labelled unknown and the headline figure is what you keep paying. If you have actually been shown an offer, you can enter the amount and week count yourself, and both sides are shown.
Two refusals sit behind that. If the discount you enter is larger than the box, the calculator will not print a negative weekly cost — it tells you the amount exceeds the box. And when the box total is itself a floor, it refuses to declare your offer “too large” at all, because it genuinely cannot tell whether a real box would be bigger than what it could verify.
Rule 7: where a provider contradicts itself, both numbers are shown
For one plan, HelloFresh’s page quotes $8.25 a serve in the intro copy and $9.59 in the price table. The calculator costs that box at the table price, because every other box size only appears in the table and comparing on one basis is the only way the numbers mean the same thing — and it prints the disagreement rather than picking a side quietly.
What the calculator never does
- It does not rank providers or name a “best box”. Nothing here has been tasted or tested.
- It does not fill in an introductory discount, publish a code, or claim a lowest price.
- It does not estimate a size or recipe count a provider does not sell.
- It does not treat a missing delivery fee as zero.
- It does not check whether a box is deliverable to your address. Coverage is per postcode and changes.
- It does not send your answers anywhere. The arithmetic runs in your browser.
Where each figure comes from, and what this site decides rather than cites, is set out on the
sources page. The arithmetic itself lives in src/lib/cost.mjs, with a unit
test for each of these rules.