Blog

What a halal food scanner can actually tell you

A scanner can narrow an aisle down to the one product worth checking properly. It cannot tell you something is halal.

What the app is doing when you scan

A barcode is a number and nothing else. Pointing a phone at one does not read the product: it looks the number up in a food database and reads back whatever a contributor typed into the ingredients field. Every halal scanner in the store works this way, whatever the screenshots imply.

That database is usually Open Food Facts, an open catalogue built the way Wikipedia is, with a few million products in it. The app then searches the ingredient text for terms that halal consumer guides commonly flag — gelatin, rennet, a handful of E-numbers — and shows you what it found.

That is the whole mechanism. It is worth knowing precisely, because every limit below follows from it.

Why no app can certify a product

Certification is not a property of an ingredient list. It is a claim about a supply chain: how the animal was slaughtered, whether the line was shared with pork, what the flavour house actually put into the compound the label calls natural flavouring, which plant this batch came from.

None of that is printed on the back of the packet. A certifier establishes it by auditing the producer, which is why certification is a body — JAKIM, IFANCA, HFA, MUI and others — rather than a lookup. Those bodies do not publish open interfaces for apps to query, and each one knows only about the companies it has certified.

So an app that shows you a confident halal verdict is doing one of two things: reading an ingredient list and overstating what it found, or showing you a single certifier’s catalogue and presenting it as the world. Neither is what it appears to be.

The ingredients worth stopping on

Gelatin is the most common one. Unless the label names a source — beef, fish, plant — it is unstated, and pork is the cheapest source. The same question applies to E441, which is gelatin under its E-number.

Rennet in cheese may be animal, microbial or vegetable, and only the first raises a question. Whey is worth a glance for the same reason, since it can be a by-product of cheesemaking that used animal rennet.

Alcohol reaches further than drinks. Vanilla extract normally uses it as a carrier, and it can sit inside a flavouring without appearing under its own name.

Among the E-numbers: E120 (carmine, cochineal) is insect-derived and scholars differ on it, as they do on E904 (shellac). E542 is bone phosphate. E471 and E472 are emulsifiers that may be animal or plant derived — the label rarely says which. E920, a dough conditioner, is often produced from feathers or hair.

And natural flavouring discloses nothing whatsoever. That is precisely why it is a reason to write to the manufacturer rather than to assume in either direction.

A clear result is not a clearance

Three things sit behind a green screen, and an honest app should say all of them.

The first is missing data. A large share of products in any open database have no ingredient text at all. An app that reports nothing found for one of those is describing its own ignorance, not the product, and the difference matters enormously.

The second is that crowdsourced text can be wrong. It may be partially transcribed, out of date, or written in a language the app’s keyword list does not cover. A scanner matching English terms against a French ingredient list will find nothing, cheerfully.

The third is that recipes change while barcodes do not. The number on the packet in your hand can belong to a formulation that was reformulated two years ago.

What a scanner is genuinely good for

Triage. You are standing in front of five similar products and you have a few minutes. A scanner turns that into one product worth reading carefully, which is a real saving even though it settled nothing on its own.

Vocabulary. After a few weeks of scanning you start recognising E471 and L-cysteine on sight, and the phone becomes less necessary. That is the tool working properly rather than the tool failing.

And the obvious cases. A bottle of wine frequently carries no ingredient list at all, so an ingredients-only check reports no data for the single most clear-cut category there is. A scanner that also reads what the product is, not only what it lists, catches that.

How Mozzi’s scan is built

It answers one narrow question, in three ways, and never claims more than it has. Either something on the list is worth checking — named, with the reason — or nothing matched, or there is no ingredient data for this product at all. The third is a distinct answer, not a quiet version of the second.

It only reports a product as out when the database says so structurally: an alcoholic-beverage category, or a declared alcohol content above zero. A keyword match in free text never gets that treatment, because a substring hit on the word wine inside an ingredient blob is not the same fact as a bottle of wine.

It reads qualifiers rather than ignoring them. Beef gelatin, microbial rennet and vegetable rennet are not flagged, because flagging them would train you to ignore the flags.

Two edge cases get their own wording instead of a verdict: vinegar made from wine, where rulings differ on whether the transformation settles it, and drinks labelled non-alcoholic that keep the parent category.

It is also the only part of Mozzi that touches the network, because the product database is not something that fits on a phone. Prayer times, the qibla and the whole Qur’an work with no signal at all; the scanner needs one.

The part an app cannot do

Nothing here is a religious ruling. Scholars differ on several of the ingredients named above, and on how much doubt is enough to abstain. For anything that matters to you, ask someone qualified to answer it, and when a product is genuinely unclear, write to the manufacturer — they will usually tell you the source of an ingredient if you ask directly.

What software can honestly offer is smaller than a verdict and still worth having: it reads the list faster than you can, it remembers which E-numbers are worth a second look, and it tells you when it does not know.