How HalalPin works
We read the ingredient panel on a Korean food label and tell you what is in it. This page explains what we actually hold, how we decide, and what we still do not know.
What the database holds
Most of what we store lets us recognize a word. A much smaller core actually rules on it. Those are different things, and keeping them apart is the single most important decision in this system.
- Recognized
- 55,965
- words we can read on a label — no judgement attached
- Ruled on
- 193
- substances a reviewer has actually ruled on
- Published
- 3
- search terms live in the app right now
The exact breakdown
- ingredients
- 57
- E-numbers
- 93
- Korean regional products
- 43
- animals (reference, not matched)
- 60
- recognition-only terms
- 55,965
Where the recognition terms come from
- 식품원료 — food raw materials
- 43,594
- 수입식품 원료 — imported food ingredients
- 11,515
- 식품첨가물 기준·규격 — additive standards
- 856
All three are public registers published by Korea’s Ministry of Food and Drug Safety. They tell us a word exists and what it names. None of them says anything about whether a food is permissible — that is a different question, asked of different documents.
What those registers do tell us
- register did not say
- 39,559
- plant
- 14,342
- animal_marine_undetermined
- 1,317
- animal_land_slaughter_unknown
- 343
- microbial
- 294
- egg
- 62
- dairy_milk
- 37
- animal_porcine
- 7
- animal_blood
- 3
- dairy_undetermined
- 1
Where a register names what a substance is — a plant, a fish, a microbe — we record that, because origin is chemistry and can be cited. Where it says nothing, we record nothing. Thousands of the terms above sit in that group, and it is honest rather than embarrassing: guessing an origin the document never stated is how a reference starts inventing things.
“Published” is small because almost every row is still a draft awaiting review. That number is the one we are working to move, and inflating it would defeat the purpose of having it.
How a label becomes a verdict
Every word on the panel is looked up on four lists. Three of them carry a ruling. The fourth — vocabulary from the government registers above — normally only proves we know the word. There is exactly one way it can say more: where a register recorded what the substance is made from, and a reviewer has verified every school’s position on that kind of origin — or, if you told us which school you follow, that school’s position — the word inherits that ruling. 48 of 80 of those positions are verified today; a word whose class has not passed that review still only proves we know the word.
That split is why we can read a label perfectly and still refuse to answer. Two separate things have to be true: enough of the label was read, and something on it was actually ruled on.
Below 80% we have no basis to clear a product, however clean the part we read looked.
Full coverage, judged by nothing. Recognizing a word is not clearing it.
Enough of the label read, and a real finding to report.
How we categorize
“Gelatin is doubtful” is really two claims stacked on top of each other: one about what gelatin is made from, and one about what that origin means. They need different evidence, so we record them separately.
One of 20 fixed classes — plant, mineral, microbial, fish, a sea creature that is not a fish, land animal of undisclosed species, pig, milk, rennet, insect, egg, and so on. Where the source says only “marine” or only “dairy”, there is a class that says exactly that and no more.
Chemistry. Citable against a national standard.
Four schools × 20 classes = 80 positions. 48 reviewed and cited; 32 researched and waiting on review.
Jurisprudence. A different kind of claim, and a different ceiling of proof.
Permissible, not permissible, or doubtful — with the reason, and what would resolve it.
Changing this sends a row back for review. That is intended.
The 20 origin classes
- plant
- mineral
- synthetic
- microbial
- alcohol_derived
- animal_porcine
- animal_blood
- animal_land_dhabiha
- animal_land_undetermined
- animal_land_slaughter_unknown
- animal_marine_fish
- animal_marine_non_fish
- animal_marine_undetermined
- insect_body
- insect_secretion
- egg
- dairy_milk
- dairy_rennet
- dairy_undetermined
- human
A class is deliberately never wider than its evidence. If a source says only “animal fat”, the row records an animal of undisclosed species — not pork. Naming the pig would assert a commercial route no document stated.
That is also why several of them come in threes. A fish is permitted by all four schools and a shrimp is not permitted by one of them, so a single “marine” class had to answer “it depends” for sardines. Milk is permitted by all four on explicit scripture and the entire dairy disagreement is about rennet, so a single “dairy” class had to call milk contested. Splitting them moves the question to where it belongs — what the substance actually is — and leaves an undetermined class for the labels that never say.
Where the schools disagree
Four schools of Islamic law reach different conclusions about the same animal. That is not a gap in our data — it is the actual state of the scholarship, and flattening it into one answer would mean quietly choosing a school on your behalf.
| Animal | Hanafi | Shafiʻi | Maliki | Hanbali |
|---|---|---|---|---|
| Shrimp | disputed | halal | halal | halal |
| Crab | disputed | halal | halal | halal |
| Lobster | disputed | halal | halal | halal |
| Horse | makruh | halal | makruh | halal |
What we don’t know yet
A reference this young should say where it is weak. Four things are true right now, and we would rather you read them here than discover them.
Figures generated 2026-09-18 07:33 UTC.