Chrome extension that labels food products on Oda and Mathem as ultra-processed (UPF) or not, based on the NOVA classification system.
JunkBlock scans product pages and adds badges to each product:
- Ultra (red) — contains ultra-processed ingredients (NOVA Group 4)
- Ikke UPF (grey) — no ultra-processed markers found
Click an Ultra badge to see which specific markers were detected (e.g., emulgator, maltodekstrin, E621).
- Extracts ingredient lists via Next.js data routes
- Scans ingredients against a curated list of NOVA Group 4 markers (Norwegian + Swedish)
- Checks for UPF indicator substances, cosmetic additives, and non-whitelisted E-numbers
- Adds badges to product image icon rows on listing pages and detail pages
Works on listing/category pages, search results, and individual product pages including modal views.
Available on the Chrome Web Store.
Or sideload for development:
- Clone this repo
- Open
chrome://extensionsin Chrome - Enable "Developer mode" (top right)
- Click "Load unpacked" and select this folder
- Browse oda.com/no or mathem.se — badges appear automatically
Click the JunkBlock icon in your toolbar to open the settings popup:
- Toggle marker categories on/off (e.g., disable sweeteners or E-numbers)
- Add custom markers to flag additional ingredients
- Remove individual markers you disagree with
Settings sync across devices via Chrome storage.
The detection engine uses categorized UPF markers:
- Modified sugars/syrups — glucose-fructose syrup, maltodextrin, dextrose, etc.
- Modified fats — hydrogenated, interesterified fats
- Modified starch
- Protein isolates — soy protein isolate, whey protein, casein, hydrolyzed protein, mechanically separated meat
- Emulsifiers & stabilizers — emulsifiers, stabilizers, thickeners, gelling agents, carrageenan
- Colorings & flavor enhancers — colorants, MSG, flavor enhancers
- Flavorings — aroma/arom (excluding natural flavorings)
- Sweeteners — aspartame, sucralose, acesulfame, sugar alcohols, etc.
- Preservatives — sodium benzoate, potassium sorbate, sodium nitrite, etc.
- E-numbers — any E-number not on the ~40-item whitelist of natural/traditional additives (e.g., E330 citric acid, E322 lecithin, E500 baking soda are whitelisted)
Moderate strictness: traditional ingredients like lecithin, gelatin, and palm oil are NOT flagged.
All analysis happens locally in your browser. No data is collected or transmitted anywhere. See privacy policy.
- Manifest V3, content script + settings popup
- Uses
storagepermission for user preferences only - Fetches ingredient data via public Next.js data routes (no API keys)
- Concurrent fetching (8 parallel) with debounced scanning
- Site detection auto-selects correct path prefix (/no/ for Oda, /se/ for Mathem)
manifest.json — Extension manifest
upf-rules.js — NOVA Group 4 classification engine + settings
content.js — DOM scanning, badge insertion, tooltip logic
styles.css — Badge and tooltip styles
popup.html/js/css — Settings popup UI
icons/ — Extension icons (16, 48, 128px)
privacy-policy.md — Privacy policy
MIT