1<!DOCTYPE html> 2<html lang="en" dir="ltr"><head><meta charset="utf-8"> 3 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4 <meta name="theme-color" content="#5a9e2f"> 5
5<script> 6 (function () { 7 try { 8 if (!window.ReactNativeWebView && !window.__iweNative) return; 9 document.documentElement.setAttribute('data-native-app', '1'); 10 // The pricing page IS the purchase flow, so there is nothing on 11 // it to keep. Replace rather than assign: no back-button trap. 12 if (location.pathname.toLowerCase().replace(/\/+$/, '') === '/pricing') { 13 location.replace('/'); 14 } 15 } catch (_) { /* a browser, or a locked-down one: leave the site alone */ } 16 })(); 17 </script>
17 18 <meta property="fb:app_id" content="1589492488828826"> 19 <meta name="facebook-domain-verification" content="7qmt89rygdcnet70qbcbb0q53c2w1g"> 20 <meta name="apple-mobile-web-app-capable" content="yes"> 21 <meta name="apple-mobile-web-app-status-bar-style" content="default"> 22 <meta name="apple-mobile-web-app-title" content="iwant2eat"> 23 <meta name="mobile-web-app-capable" content="yes"> 24 <base href="/"> 25 <link rel="icon" type="image/png" sizes="192x192" href="/brand/icon-192.png"> 26 <link rel="icon" type="image/png" sizes="32x32" href="/brand/favicon-32.png"> 27 <link rel="alternate icon" href="/favicon.ico"> 28 <link rel="apple-touch-icon" sizes="180x180" href="/brand/apple-touch-icon.png"> 29 <link rel="manifest" href="/site.webmanifest"> 30
30<script> 31 (function () { 32 'use strict'; 33 // Don't remember auth flows, the offline shell, error pages, or 34 // raw API/util endpoints â restoring any of those would be worse 35 // than just opening home. 36 var SKIP = /^\/(shell|offline-shell\.html|Account|Identity|Error|api|avatar|version|set-lang|connect|signin-|signout)/i; 37 function restorable(path) { 38 return typeof path === 'string' && path.charAt(0) === '/' && !SKIP.test(path); 39 } 40 function save() { 41 try { 42 if (restorable(location.pathname)) { 43 localStorage.setItem('iwe.lastPath', location.pathname + location.search); 44 } 45 } catch (e) { /* private mode / storage disabled â ignore */ } 46 } 47 ['pushState', 'replaceState'].forEach(function (name) { 48 var orig = history[name]; 49 if (typeof orig !== 'function') return; 50 history[name] = function () { 51 var r = orig.apply(this, arguments); 52 save(); 53 return r; 54 }; 55 }); 56 window.addEventListener('popstate', save); 57 // Blazor enhanced navigation fires this after swapping the DOM. 58 document.addEventListener('enhancedload', save); 59 save(); 60 })(); 61 </script>
61 62
62<script> 63 (function () { 64 'use strict'; 65 var mql = window.matchMedia('(max-width: 560px)'); 66 function apply() { 67 var els = document.querySelectorAll('input[data-ph-short]'); 68 for (var i = 0; i < els.length; i++) { 69 var el = els[i]; 70 if (!el.dataset.phFull) el.dataset.phFull = el.getAttribute('placeholder') || ''; 71 el.setAttribute('placeholder', mql.matches ? (el.dataset.phShort || el.dataset.phFull) : el.dataset.phFull); 72 } 73 } 74 // Re-run a few times after a (enhanced) navigation so we catch the 75 // input even when an interactive component mounts it a tick later. 76 function applySoon() { apply(); setTimeout(apply, 200); setTimeout(apply, 800); } 77 if (mql.addEventListener) mql.addEventListener('change', apply); 78 else if (mql.addListener) mql.addListener(apply); 79 document.addEventListener('enhancedload', applySoon); 80 window.addEventListener('load', applySoon); 81 applySoon(); 82 })(); 83 </script>
83 84
84<script> 85 (function () { 86 'use strict'; 87 var host = location.hostname || ''; 88 var isStage = /^stage\./i.test(host) || /\.trycloudflare\.com$/i.test(host); 89 if (!isStage) return; 90 var PREFIX = 'STAGE - '; 91 function apply() { 92 var t = document.title || ''; 93 // No page title yet (before the <title> parses, or the empty 94 // gap during an enhanced-nav swap) â leave it. Prefixing an 95 // empty title yields a bare "STAGE - " whose trailing space the 96 // browser trims back to "STAGE -", which then fails a literal 97 // PREFIX check and double-prefixes into "STAGE - STAGE -". 98 if (!t) return; 99 // Already prefixed. Trim-safe (matches both "STAGE - x" and the 100 // trailing-space-stripped "STAGE -") so we never re-apply. 101 if (/^STAGE -/.test(t)) return; 102 document.title = PREFIX + t; 103 } 104 apply(); 105 try { 106 var mo = new MutationObserver(apply); 107 mo.observe(document.head || document.documentElement, 108 { childList: true, subtree: true, characterData: true }); 109 } catch (_) { /* no MutationObserver â first-paint prefix still applied */ } 110 document.addEventListener('enhancedload', apply); 111 })(); 112 </script>
112<meta name="iwe-session-lost-text" content="Your session has ended. Sign in again to see your recipes." /> 113 <meta name="iwe-session-lost-cta" content="Sign in" /> 114 115 <link rel="stylesheet" href="/fonts/lora/lora.css"> 116 <link rel="stylesheet" href="/fonts/caveat/caveat.css"> 117 <link rel="stylesheet" href="app.g0i1m63mv2.css" /> 118 <link rel="stylesheet" href="css/themes.my8wepgavo.css" /> 119 <link rel="stylesheet" href="css/redesign.5mpghn5smd.css" /> 120 <link rel="stylesheet" href="css/recipe-detail.oqv9v7u77l.css" /> 121 <link rel="stylesheet" href="IWant2Eat.Web.fuy6buppbu.styles.css" /> 122
122<script type="importmap">{ 123 "imports": { 124 "./Components/Layout/ReconnectModal.razor.js": "./Components/Layout/ReconnectModal.5iaswfb9pn.razor.js", 125 "./_framework/blazor.server.js": "./_framework/blazor.server.dwu72t6gfx.js", 126 "./_framework/blazor.web.js": "./_framework/blazor.web.9hsif5t8mt.js", 127 "./_framework/dotnet.native.js": "./_framework/dotnet.native.b6l13xorvf.js", 128 "./_framework/dotnet.runtime.js": "./_framework/dotnet.runtime.v06hirbjsv.js", 129 "./_framework/dotnet.js": "./_framework/dotnet.zuf4rdtlhz.js", 130 "./js/account-deleted.js": "./js/account-deleted.wa3gmw54bc.js", 131 "./js/add-btn-drop.js": "./js/add-btn-drop.ah4e54jj3x.js", 132 "./js/ai-alerts.js": "./js/ai-alerts.yam1hxr0k5.js", 133 "./js/analytics.js": "./js/analytics.dbdjnyqt7e.js", 134 "./js/card-drop.js": "./js/card-drop.0zbfcnsohp.js", 135 "./js/card-longpress.js": "./js/card-longpress.xvkzaape1m.js", 136 "./js/card-nav-fallback.js": "./js/card-nav-fallback.2ghcdzqrhw.js", 137 "./js/col-resize.js": "./js/col-resize.7axw9mih4z.js", 138 "./js/contact-picker.js": "./js/contact-picker.u4n4v0bzi5.js", 139 "./js/cook-listen.js": "./js/cook-listen.sz2k8rsfyi.js", 140 "./js/cook-tts.js": "./js/cook-tts.kppf2b77ba.js", 141 "./js/ctx-menu-clamp.js": "./js/ctx-menu-clamp.o9t2943fbv.js", 142 "./js/dev-fake-offline.js": "./js/dev-fake-offline.53s2nvmek1.js", 143 "./js/error-reporter.js": "./js/error-reporter.lpaon3icqs.js", 144 "./js/extension-banner.js": "./js/extension-banner.6r9rsgt4sg.js", 145 "./js/footer-buildstamp.js": "./js/footer-buildstamp.p0kwebuj2g.js", 146 "./js/geo-store.js": "./js/geo-store.bymqbj5izk.js", 147 "./js/hh-longpress.js": "./js/hh-longpress.q9dy3mob1q.js", 148 "./js/html2pdf.bundle.min.js": "./js/html2pdf.bundle.min.pvdha3938a.js", 149 "./js/ing-edit-delay.js": "./js/ing-edit-delay.d4786nf75t.js", 150 "./js/install-prompt.js": "./js/install-prompt.tumv8yl31y.js", 151 "./js/ios-shortcut-banner.js": "./js/ios-shortcut-banner.yhme3rr5h0.js", 152 "./js/iwe-offline.js": "./js/iwe-offline.b9eni71xu6.js", 153 "./js/iwe-print.js": "./js/iwe-print.8nqc6k623e.js", 154 "./js/keep-awake-ui.js": "./js/keep-awake-ui.srn3wmx03d.js", 155 "./js/menu-dismiss.js": "./js/menu-dismiss.3fd8ycjv95.js", 156 "./js/native-bridge.js": "./js/native-bridge.h1wov55x50.js", 157 "./js/nav-scroll.js": "./js/nav-scroll.z7inkc8n82.js", 158 "./js/nav-watchdog.js": "./js/nav-watchdog.fupe1nn511.js", 159 "./js/offline-shell.js": "./js/offline-shell.69a9uk8b52.js", 160 "./js/paprika-drop.js": "./js/paprika-drop.dl11mqpt3k.js", 161 "./js/password-toggle.js": "./js/password-toggle.plun6cicut.js", 162 "./js/paste-handler.js": "./js/paste-handler.bi3rwqswpn.js", 163 "./js/prefs.js": "./js/prefs.k3ir0fkg2u.js", 164 "./js/prevent-drop.js": "./js/prevent-drop.vbs19cu0tp.js", 165 "./js/recipe-drop.js": "./js/recipe-drop.1q5jo1d5fs.js", 166 "./js/recipe-format.js": "./js/recipe-format.ug9289yphx.js", 167 "./js/recipe-video.js": "./js/recipe-video.iy7pc2asts.js", 168 "./js/social-share.js": "./js/social-share.y68texoyml.js", 169 "./js/step-check.js": "./js/step-check.i9fw7teo44.js", 170 "./js/sw-reload.js": "./js/sw-reload.d7wpcgaail.js", 171 "./js/sync-auto.js": "./js/sync-auto.9djpypdbu7.js", 172 "./js/sync-ui.js": "./js/sync-ui.nqft9xrfni.js", 173 "./js/sync.js": "./js/sync.nsxs4o9i6h.js", 174 "./js/tag-drop-touch.js": "./js/tag-drop-touch.t9crimk8eb.js", 175 "./js/tap-haptics.js": "./js/tap-haptics.5cxr9u3gw4.js", 176 "./js/theme.js": "./js/theme.amjygw6y4u.js", 177 "./js/tree-hover.js": "./js/tree-hover.d74cuv51yy.js", 178 "./js/wake-lock.js": "./js/wake-lock.vpgxtic9mu.js", 179 "./service-worker.js": "./service-worker.4vipx70gxv.js", 180 "_framework/resource-collection.js": "./_framework/resource-collection.eNxRU.js", 181 "_framework/resource-collection.js.gz": "./_framework/resource-collection.eNxRU.js.gz" 182 }, 183 "integrity": { 184 "./Components/Layout/ReconnectModal.5iaswfb9pn.razor.js": "sha256-LdCyVM1X+W4b3Q9SONhIDbt6rnzZsGxMPHGW2BqB6Y8=", 185 "./Components/Layout/ReconnectModal.razor.js": "sha256-LdCyVM1X+W4b3Q9SONhIDbt6rnzZsGxMPHGW2BqB6Y8=", 186 "./Identity/js/site.js": "sha256-hRQyftXiu1lLX2P9Ly9xa4gHJgLeR1uGN5qegUobtGo=", 187 "./Identity/lib/bootstrap/dist/js/bootstrap.bundle.js": "sha256-mkoRoV24jV+rCPWcHD
187R5awPx8VuzzJKN0ibhxZ9/WaM=", 188 "./Identity/lib/bootstrap/dist/js/bootstrap.bundle.min.js": "sha256-CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC+mjoJimHGw=", 189 "./Identity/lib/bootstrap/dist/js/bootstrap.esm.js": "sha256-exiXZNJDwucXfuje3CbXPbuS6+Ery3z9sP+pgmvh8nA=", 190 "./Identity/lib/bootstrap/dist/js/bootstrap.esm.min.js": "sha256-QZdFT1ZNdly4rmgUBtXmXFS9BU1FTa+sPe6h794sFRQ=", 191 "./Identity/lib/bootstrap/dist/js/bootstrap.js": "sha256-+UW802wgVfnjaSbdwyHLlU7AVplb0WToOlvN1CnzIac=", 192 "./Identity/lib/bootstrap/dist/js/bootstrap.min.js": "sha256-3gQJhtmj7YnV1fmtbVcnAV6eI4ws0Tr48bVZCThtCGQ=", 193 "./Identity/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js": "sha256-wJQaJ0XynBE2fq6CexXXhxKu7fstVmQc7V2MHNTo+WQ=", 194 "./Identity/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js": "sha256-YJa7W8EiQdQpkk93iGEjjnLSUWRpRJbSfzfURh1kxz4=", 195 "./Identity/lib/jquery-validation/dist/additional-methods.js": "sha256-XL6yOf4sfG2g15W8aB744T4ClbiDG4IMGl2mi0tbzu0=", 196 "./Identity/lib/jquery-validation/dist/additional-methods.min.js": "sha256-jhvKRxZo6eW/PyCe+4rjBLzqesJlE8rnyQGEjk8l2k8=", 197 "./Identity/lib/jquery-validation/dist/jquery.validate.js": "sha256-kRL82372ur5YrVTjFWp9muao9yeU8AoLiJxSb5ekmHg=", 198 "./Identity/lib/jquery-validation/dist/jquery.validate.min.js": "sha256-umbTaFxP31Fv6O1itpLS/3+v5fOAWDLOUzlmvOGaKV4=", 199 "./Identity/lib/jquery/dist/jquery.js": "sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=", 200 "./Identity/lib/jquery/dist/jquery.min.js": "sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=", 201 "./Identity/lib/jquery/dist/jquery.slim.js": "sha256-UgvvN8vBkgO0luPSUl2s8TIlOSYRoGFAX4jlCIm9Adc=", 202 "./Identity/lib/jquery/dist/jquery.slim.min.js": "sha256-kmHvs0B+OpCW5GVHUNjv9rOmY0IvSIRcf7zGUDTDQM8=", 203 "./_framework/blazor.server.dwu72t6gfx.js": "sha256-Lc5OPalQJm9BAlnrUqnpkrh1LpQXi5KqbcuMnfqzZ6g=", 204 "./_framework/blazor.server.js": "sha256-Lc5OPalQJm9BAlnrUqnpkrh1LpQXi5KqbcuMnfqzZ6g=", 205 "./_framework/blazor.web.9hsif5t8mt.js": "sha256-UyxcGqcLON35RjdHgX1tr8QrjPLgL0P1EaXSRUokmko=", 206 "./_framework/blazor.web.js": "sha256-UyxcGqcLON35RjdHgX1tr8QrjPLgL0P1EaXSRUokmko=", 207 "./_framework/blazor.webassembly.js": "sha256-1xlHuu1iNOJiMMz2BCq95uekwHf6pdpTcgVNKVBboPs=", 208 "./_framework/dotnet.js": "sha256-tXeh3BvfBiuKojKTFt9DNMGZLYEOFx25aWCX4MkpLFM=", 209 "./_framework/dotnet.native.b6l13xorvf.js": "sha256-jZddobLBM2C3lQhYQ61xSQJ/WqD3eQCO3RzoHGaOjx0=", 210 "./_framework/dotnet.native.js": "sha256-jZddobLBM2C3lQhYQ61xSQJ/WqD3eQCO3RzoHGaOjx0=", 211 "./_framework/dotnet.runtime.js": "sha256-QbnqrZGHtGq7wudS17/AYEPpH9JkphrsyVllD6JHmds=", 212 "./_framework/dotnet.runtime.v06hirbjsv.js": "sha256-QbnqrZGHtGq7wudS17/AYEPpH9JkphrsyVllD6JHmds=", 213 "./_framework/dotnet.zuf4rdtlhz.js": "sha256-tXeh3BvfBiuKojKTFt9DNMGZLYEOFx25aWCX4MkpLFM=", 214 "./js/account-deleted.js": "sha256-uBqzC67uZcoqpZy5ooggkt++EvQMZEFcU9BtKbKOyBs=", 215 "./js/account-deleted.wa3gmw54bc.js": "sha256-uBqzC67uZcoqpZy5ooggkt++EvQMZEFcU9BtKbKOyBs=", 216 "./js/add-btn-drop.ah4e54jj3x.js": "sha256-LrN409ZXsflKWZJHsXFLtv3RsvjufzqxjzvbNadofFg=", 217 "./js/add-btn-drop.js": "sha256-LrN409ZXsflKWZJHsXFLtv3RsvjufzqxjzvbNadofFg=", 218 "./js/ai-alerts.js": "sha256-1lPNx0EpOyXS8vVK0US6HOtS/wqwA5JbO+2xuevDtoQ=", 219 "./js/ai-alerts.yam1hxr0k5.js": "sha256-1lPNx0EpOyXS8vVK0US6HOtS/wqwA5JbO+2xuevDtoQ=", 220 "./js/analytics.dbdjnyqt7e.js": "sha256-1xaHC4hP1RjIQNh5UvJHk+jboysJdi6SvzwbiAIcNbk=", 221 "./js/analytics.js": "sha256-1xaHC4hP1RjIQNh5UvJHk+jboysJdi6SvzwbiAIcNbk=", 222 "./js/card-drop.0zbfcnsohp.js": "sha256-XPLzwrn8+SEfzFsOYYRP8HB1qgiOAdKsdA82kfvMIzo=", 223 "./js/card-drop.js": "sha256-XPLzwrn8+SEfzFsOYYRP8HB1qgiOAdKsdA82kfvMIzo=", 224 "./js/card-longpress.js": "sha256-g+nC7bh59oyxvK4qIIw7A28QI7cPCm45g+OVbU8kNjY=", 225 "./js/card-longpress.xvkzaape1m.js": "sha256-g+nC7bh59oyxvK4qIIw7A28QI7cPCm45g+OVbU8kNjY=", 226 "./js/card-nav-fallback.2ghcdzqrhw.js": "sha256-riN8mCV75dqP9UOgbguIi85cNvci374j52BzBb8ee5A=", 227 "./js/card-nav-fallback.js": "sha256-riN8mCV75dqP9UOgbguIi85cNvci374j52BzBb8ee5A=", 228 "./js/col-resize.7axw9mih4z.js": "sha256-f5EpqTGRXQlO5Uw88YIVoNMBFXTT6u8cufXmInKWN4g=", 229 "./js/col-resize.js": "sha256-f5EpqTGRXQlO5Uw88YIVoNMBFXTT6u8cufXmInKWN4g=", 230 "./js/contact-picker.js": "sha256-4sKT2bOCNIekTsROFhKzpnFh/fUForyr0pzJtqnc+EU=", 231 "./js/contact-picker.u4n4v0bzi5.js": "sha256-4sKT2bOCNIekTsROFhKzpnFh/fUForyr0pzJtqnc+EU=", 232 "./js/cook-listen.js": "sha256-2N9fiV7VUK2/OGtY5M/nVT/E+VWiEgWKGPYl8xepCyw=", 233 "./js/cook-listen.sz2k8rsfyi.js": "sha256-2N9fiV7VUK2/OGtY5M/nVT/E+VWiEgWKGPYl8xepCyw=", 234 "./js/cook-tts.js": "sha256-GFKci1GS07j76BEY4oljLPvXT9rJfvZ/OVCKCchYX/Q=", 235 "./js/cook-tts.kppf2b77ba.js": "sha256-GFKci1GS07j76BEY4oljLPvXT9rJfvZ/OVCKCchYX/Q=", 236 "./js/ctx-menu-clamp.js": "sha256-VNbiZUWtjeqdm5k6gd3T3Y8OeFMCuN0FrG0DZZplcPU=", 237 "./js/ctx-menu-clamp.o9t2943fbv.js": "sha256-VNbiZUWtjeqdm5k6gd3T3Y8OeFMCuN0FrG0DZZplcPU=", 238 "./js/dev-fake-offline.53s2nvmek1.js": "sha256-sS200mAdjhFIY2I9Wkv7lPN6pFYf4eu7ia+IGMxNdsw=", 239 "./js/dev-fake-offline.js": "sha256-sS200mAdjhFIY2I9Wkv7lPN6pFYf4eu7ia+IGMxNdsw=", 240 "./js/error-reporter.js": "sha256-Oc+C8dzF1BsLZyMZ/oLBDAAYhkmdKf6zO+Rp0fzLa+4=", 241 "./js/error-reporter.lpaon3icqs.js": "sha256-Oc+C8dzF1BsLZyMZ/oLBDAAYhkmdKf6zO+Rp0fzLa+4=", 242 "./js/extension-banner.6r9rsgt4sg.js": "sha256-IhYVYp1+hGwZbob2aocCZrdRKAanckMTP0lf3VWci8U=", 243 "./js/extension-banner.js": "sha256-IhYVYp1+hGwZbob2aocCZrdRKAanckMTP0lf3VWci8U=", 244 "./js/footer-buildstamp.js": "sha256-p1iIPqgACcn89UAikm+4/7bOv1iVNUjBj/wp6QJhxc4=", 245 "./js/footer-buildstamp.p0kwebuj2g.js": "sha256-p1iIPqgACcn89UAikm+4/7bOv1iVNUjBj/wp6QJhxc4=", 246 "./js/geo-store.bymqbj5izk.js": "sha256-s921PRE96qhWVguACKUzg1+cIiAo1aKHvl4U4XUBcg0=", 247 "./js/geo-store.js": "sha256-s921PRE96qhWVguACKUzg1+cIiAo1aKHvl4U4XUBcg0=", 248 "./js/hh-longpress.js": "sha256-rrJ+e4aK+Ak5i7Yryu8eTCvueYRgYB4FB4AAuJ6Gys0=", 249 "./js/hh-longpress.q9dy3mob1q.js": "sha256-rrJ+e4aK+Ak5i7Yryu8eTCvueYRgYB4FB4AAuJ6Gys0=", 250 "./js/html2pdf.bundle.min.js": "sha256-hebunOJG465EJDE/fkal7YYKKNdXgR3o3JxD8wYEnWU=", 251 "./js/html2pdf.bundle.min.pvdha3938a.js": "sha256-hebunOJG465EJDE/fkal7YYKKNdXgR3o3JxD8wYEnWU=", 252 "./js/ing-edit-delay.d4786nf75t.js": "sha256-DQiTwDtqILUNltG9DMQgiLSBV4U8IDY4o4pM7gH3bM4=", 253 "./js/ing-edit-delay.js": "sha256-DQiTwDtqILUNltG9DMQgiLSBV4U8IDY4o4pM7gH3bM4=", 254 "./js/install-prompt.js": "sha256-i5oCs7VXRrqHGLdfwM79aIY7AnADcSYtrKC7jSJNjRQ=", 255 "./js/install-prompt.tumv8yl31y.js": "sha256-i5oCs7VXRrqHGLdfwM79aIY7AnADcSYtrKC7jSJNjRQ=", 256 "./js/ios-shortcut-banner.js": "sha256-ZojFvOTwBugxODU6lxDWGYyaLhSNwFxk19T/W6uNEzM=", 257 "./js/ios-shortcut-banner.yhme3rr5h0.js": "sha256-ZojFvOTwBugxODU6lxDWGYyaLhSNwFxk19T/W6uNEzM=", 258 "./js/iwe-offline.b9eni71xu6.js": "sha256-78WjDWTGrc0E7GA6kQkup90JQPBZMUgyh0qZHxvwN4E=", 259 "./js/iwe-offline.js": "sha256-78WjDWTGrc0E7GA6kQkup90JQPBZMUgyh0qZHxvwN4E=", 260 "./js/iwe-print.8nqc6k623e.js": "sha256-HHh2aY/kb7O2OiZUr/Fjj5TAvWC2cZl7vLDwgFaBcDk=", 261 "./js/iwe-print.js": "sha256-HHh2aY/kb7O2OiZUr/Fjj5TAvWC2cZl7vLDwgFaBcDk=", 262 "./js/keep-awake-ui.js": "sha256-6BxH3XL7qifC2rAG15Qq1reXDeQnXGuHoIpVFqkxac8=", 263 "./js/keep-awake-ui.srn3wmx03d.js": "sha256-6BxH3XL7qifC2rAG15Qq1reXDeQnXGuHoIpVFqkxac8=", 264 "./js/menu-dismiss.3fd8ycjv95.js": "sha256-7/ehbBIw63tF+hE+M+hRz53HxRYqraM+Y0+qNxvF8JM=", 265 "./js/menu-dismiss.js": "sha256-7/ehbBIw63tF+hE+M+hRz53HxRYqraM+Y0+qNxvF8JM=", 266 "./js/native-bridge.h1wov55x50.js": "sha256-NfvnAaRYJnV5YYqjp4kSJdyJ+bXJcbfYXjlo6MCRXtM=", 267 "./js/native-bridge.js": "sha256-NfvnAaRYJnV5YYqjp4kSJdyJ+bXJcbfYXjlo6MCRXtM=", 268 "./js/nav-scroll.js": "sha256-AcBu7iShvIKVwlw9gLxJ5Zms6ekG9pYWdLRG41b5P4w=", 269 "./js/nav-scroll.z7inkc8n82.js": "sha256-AcBu7iShvIKVwlw9gLxJ5Zms6ekG9pYWdLRG41b5P4w=", 270 "./js/nav-watchdog.fupe1nn511.js": "sha256-qXjQzZRfM1PsUEqiObiXrYybomwNJQdSjLoaNQjB2kc=", 271 "./js/nav-watchdog.js": "sha256-qXjQzZRfM1PsUEqiObiXrYybomwNJQdSjLoaNQjB2kc=", 272 "./js/offline-shell.69a9uk8b52.js": "sha256-KoquYEycxUswUmpGfouU4zmGTqK7mVBG5Qf2rl41Nlk=", 273 "./js/offline-shell.js": "sha256-KoquYEycxUswUmpGfouU4zmGTqK7mVBG5Qf2rl41Nlk=", 274 "./js/paprika-drop.dl11mqpt3k.js": "sha256-UQxCCwp1j1ZjlUqoikliRDCqJ93ZWO66seMoWgAZAyc=", 275 "./js/paprika-drop.js": "sha256-UQxCCwp1j1ZjlUqoikliRDCqJ93ZWO66seMoWgAZAyc=", 276 "./js/password-toggle.js": "sha256-U29JI3VmehXmtP+8P5SNx4FtyuwAFJA3GWdue84F1r8=", 277 "./js/password-toggle.plun6cicut.js": "sha256-U29JI3VmehXmtP+8P5SNx4FtyuwAFJA3GWdue84F1r8=", 278 "./js/paste-handler.bi3rwqswpn.js": "sha256-g9K+nG4VLqsF+k8w/P1JmCm0jHaD69lMcoc62D56uf4=", 279 "./js/paste-handler.js": "sha256-g9K+nG4VLqsF+k8w/P1JmCm0jHaD69lMcoc62D56uf4=", 280 "./js/prefs.js": "sha256-YHB+eLIzV0ENU35pzl+8tnTYk2V7aO576liTXAQvyJY=",
281 "./js/prefs.k3ir0fkg2u.js": "sha256-YHB+eLIzV0ENU35pzl+8tnTYk2V7aO576liTXAQvyJY=", 282 "./js/prevent-drop.js": "sha256-VYFzXVGUONHCvi9nib6YdtNcZNrW+Grbd7tKvX39gu8=", 283 "./js/prevent-drop.vbs19cu0tp.js": "sha256-VYFzXVGUONHCvi9nib6YdtNcZNrW+Grbd7tKvX39gu8=", 284 "./js/recipe-drop.1q5jo1d5fs.js": "sha256-R5AGQmiouM/0z32PQsvq3PnzOOXxMxUP6Rwelh4wUH0=", 285 "./js/recipe-drop.js": "sha256-R5AGQmiouM/0z32PQsvq3PnzOOXxMxUP6Rwelh4wUH0=", 286 "./js/recipe-format.js": "sha256-bsgXClV+S9cCBmaYEew41A+5mNVfmq88Scl5Hvrkia8=", 287 "./js/recipe-format.ug9289yphx.js": "sha256-bsgXClV+S9cCBmaYEew41A+5mNVfmq88Scl5Hvrkia8=", 288 "./js/recipe-video.iy7pc2asts.js": "sha256-dpdSf9ho5DPlRk5Kl43AcLw8NDPAnEVu/lYLZ5LJQuM=", 289 "./js/recipe-video.js": "sha256-dpdSf9ho5DPlRk5Kl43AcLw8NDPAnEVu/lYLZ5LJQuM=", 290 "./js/social-share.js": "sha256-Rj/dfNpKIf/xNDuo7oxWYqBBXfIB8Rc9XmpU3mBvotM=", 291 "./js/social-share.y68texoyml.js": "sha256-Rj/dfNpKIf/xNDuo7oxWYqBBXfIB8Rc9XmpU3mBvotM=", 292 "./js/step-check.i9fw7teo44.js": "sha256-RvBbSz6JwH4SI3XxUwpKhCtJmEfkGUT186qbBeXg1qA=", 293 "./js/step-check.js": "sha256-RvBbSz6JwH4SI3XxUwpKhCtJmEfkGUT186qbBeXg1qA=", 294 "./js/sw-reload.d7wpcgaail.js": "sha256-t6TkJIvbleuQwDYcz3Pt5yEYqyEz+8rsssJ0BChfb5Y=", 295 "./js/sw-reload.js": "sha256-t6TkJIvbleuQwDYcz3Pt5yEYqyEz+8rsssJ0BChfb5Y=", 296 "./js/sync-auto.9djpypdbu7.js": "sha256-TSQOsvsCPnBsPQs4yUVOZIDLHMGT4oAdEuK9i6QdweQ=", 297 "./js/sync-auto.js": "sha256-TSQOsvsCPnBsPQs4yUVOZIDLHMGT4oAdEuK9i6QdweQ=", 298 "./js/sync-ui.js": "sha256-7zEWsWIorXULlPgXtednMFpsfFsIctoOcJ2iW6g9ByE=", 299 "./js/sync-ui.nqft9xrfni.js": "sha256-7zEWsWIorXULlPgXtednMFpsfFsIctoOcJ2iW6g9ByE=", 300 "./js/sync.js": "sha256-6XHT3U2oacP+jrHwwgmP1XFJrOL95dW1E357jPhhMK4=", 301 "./js/sync.nsxs4o9i6h.js": "sha256-6XHT3U2oacP+jrHwwgmP1XFJrOL95dW1E357jPhhMK4=", 302 "./js/tag-drop-touch.js": "sha256-H987DMlY41/mrP8nytsf+4bi0GPcoU8eMnaavlqaeOs=", 303 "./js/tag-drop-touch.t9crimk8eb.js": "sha256-H987DMlY41/mrP8nytsf+4bi0GPcoU8eMnaavlqaeOs=", 304 "./js/tap-haptics.5cxr9u3gw4.js": "sha256-hfIqOMdsF/YkgnveZTevc6FS7c88cdG7o2p25e/vgvE=", 305 "./js/tap-haptics.js": "sha256-hfIqOMdsF/YkgnveZTevc6FS7c88cdG7o2p25e/vgvE=", 306 "./js/theme.amjygw6y4u.js": "sha256-Lvjt5QL2AzbtCGtosBUIbl1kSExgIPMkDnzQf8M4VNQ=", 307 "./js/theme.js": "sha256-Lvjt5QL2AzbtCGtosBUIbl1kSExgIPMkDnzQf8M4VNQ=", 308 "./js/tree-hover.d74cuv51yy.js": "sha256-txXpZBGLvrW7VJbuQvJihS+KKrJ26BdMy5tk55hvK0U=", 309 "./js/tree-hover.js": "sha256-txXpZBGLvrW7VJbuQvJihS+KKrJ26BdMy5tk55hvK0U=", 310 "./js/wake-lock.js": "sha256-45dhcvH2dE5jH39U76tHkwPJe+e5VKv0hcU5iyRhjHA=", 311 "./js/wake-lock.vpgxtic9mu.js": "sha256-45dhcvH2dE5jH39U76tHkwPJe+e5VKv0hcU5iyRhjHA=", 312 "./service-worker.4vipx70gxv.js": "sha256-wGhLElFbWUUIIsvDxyOfkKDjNElebc+0tH67F7kQ1H8=", 313 "./service-worker.js": "sha256-wGhLElFbWUUIIsvDxyOfkKDjNElebc+0tH67F7kQ1H8=", 314 "./_framework/resource-collection.eNxRU.js": "sha256-3JXV0tKqXFgDulyYE3lE6OXcvm3XuXOyCoHSoVaCBvo=", 315 "./_framework/resource-collection.eNxRU.js.gz": "sha256-3JXV0tKqXFgDulyYE3lE6OXcvm3XuXOyCoHSoVaCBvo=" 316 } 317}</script>
317 318 <title>Recipe-organizing guides â iwant2eat</title><meta name="description" content="Practical guides to organizing, saving, digitizing, and translating recipes â plus honest comparisons of recipe apps like Paprika, AnyList, and Yummly."> 319 <link rel="canonical" href="https://www.iwant2eat.com/guides"> 320 321 <meta property="og:type" content="website"> 322 <meta property="og:site_name" content="iwant2eat"> 323 <meta property="og:url" content="https://www.iwant2eat.com/guides"> 324 <meta property="og:title" content="Recipe-organizing guides â iwant2eat"> 325 <meta property="og:description" content="How to organize recipe screenshots, save recipes from email, digitize handwritten cards, translate and convert recipes, and more."> 326 <meta property="og:image" content="https://www.iwant2eat.com/brand/shot-recipes.png"> 327 328 <meta name="twitter:card" content="summary_large_image"> 329 <meta name="twitter:title" content="Recipe-organizing guides â iwant2eat"> 330 <meta name="twitter:description" content="Practical guides to saving, organizing, and translating your recipes."> 331 <meta name="twitter:image" content="https://www.iwant2eat.com/brand/shot-recipes.png">
vendor: 63 bytes, line 331
331<script async src="https://www.googletagmanager.com/gtag/js?id=
331G-2BDQSBTS44
vendor: 44 bytes, lines 331-332
331" crossorigin="anonymous"></script> 332
332<script> 333
vendor: 163 bytes, lines 333-336
333window.dataLayer = window.dataLayer || []; 334 function gtag(){dataLayer.push(arguments);} 335 gtag('js', new Date()); 336 gtag('config', '
336G-2BDQSBTS44
vendor: 41 bytes, lines 336-337
336', { groups: 'iwe_analytics' }); 337
337</script>
vendor: 1 bytes, line 337
337
338<script> 339window.dataLayer = window.dataLayer || []; 340window.gtag = window.gtag || function(){window.dataLayer.push(arguments);}; 341 342gtag('config', 'AW-978480151', { 343 groups: 'iwe_ads', send_page_view: false, 344 allow_ad_personalization_signals: false, 345 page_location: location.origin + location.pathname, 346 page_referrer: '', page_title: 'iwant2eat' 347}); 348</script>
348<script> 349 (function(c,l,a,r,i,t,y){ 350 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 351 t=l.createElement(r);t.async=1;t.crossOrigin="anonymous";t.src="https://www.clarity.ms/tag/"+i; 352 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 353 })(window, document, "clarity", "script", "wizxuxye7q"); 354 </script>
354<script> 355 !function(f,b,e,v,n,t,s) 356 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 357 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 358 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 359 n.queue=[];t=b.createElement(e);t.async=!0;t.crossOrigin="anonymous"; 360 t.src=v;s=b.getElementsByTagName(e)[0]; 361 s.parentNode.insertBefore(t,s)}(window, document,'script', 362 'https://connect.facebook.net/en_US/fbevents.js'); 363 fbq('init', '1589492488828826'); 364 fbq('track', 'PageView'); 365 366 // Now that the pixel has read fbclid, take it out of the address 367 // bar. fbq() above has already captured it into the _fbc cookie, 368 // so removing it costs no attribution â and the visitor stops 369 // looking at (and copying, and re-sharing) a hundred characters of 370 // Facebook tracking. 371 // 372 // This is the counterpart to the server-side strip in Program.cs, 373 // which deliberately only runs while NO pixel is configured. Doing 374 // it there once a pixel exists would redirect before any JS ran and 375 // silently kill ad attribution; doing it here cannot, because it 376 // runs after init on the same tick. 377 // 378 // replaceState rather than a redirect: no extra request, no history 379 // entry to trap the back button, and nothing for the service worker 380 // to mistake for an opaque redirect. 381 (function () { 382 try { 383 var u = new URL(window.location.href); 384 if (!u.searchParams.has('fbclid')) return; 385 u.searchParams.delete('fbclid'); 386 history.replaceState(null, '', u.pathname + u.search + u.hash); 387 } catch (e) { /* older browser â leave the URL alone */ } 388 })(); 389 </script>
389 390 <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1589492488828826&ev=PageView&noscript=1" alt /></noscript>
390<script> 391 !function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0,t.crossOrigin="anonymous";var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document); 392 rdt('init', 'a2_iyhn1yz6pugm'); 393 rdt('track', 'PageVisit'); 394 </script>
394</head> 395 396<body data-theme="market"><div id="iwe-net-banner" hidden><strong>Offline â read only.</strong> 397 Edits will work again when you're back on the network. 398 </div> 399 <div class="page" b-c4d6obr8sz><div id="ext-promo-banner" class="ext-promo-banner ext-promo-hidden" b-c4d6obr8sz><span b-c4d6obr8sz> 400 ð¡ <strong b-c4d6obr8sz>Save recipes from any site in one click.</strong> 401 Install the <a class="ext-promo-link" href="https://chromewebstore.google.com/detail/iwant2eat-save-recipe/coeccnldalnnbaghjpinimenecgfaipn" target="_blank" rel="noopener" b-c4d6obr8sz>iwant2eat Chrome Extension</a>. 402 </span> 403 <button type="button" class="ext-promo-close" aria-label="Dismiss" onclick="window.iwe2ExtBanner && window.iwe2ExtBanner.dismiss()" b-c4d6obr8sz>Ã</button></div> 404 <header class="topbar" b-c4d6obr8sz><a class="brand" href="/" title="Main Page" b-c4d6obr8sz><img src="/brand/icon-192.png" alt="iwant2eat" height="42" b-c4d6obr8sz></a><nav b-c4d6obr8sz><a href="/Account/Login" b-c4d6obr8sz>Sign in</a> 405 <a href="/Account/Register" b-c4d6obr8sz>Sign up</a> 406 <a href="/help" class="help-link" title="Help" aria-label="Help" b-c4d6obr8sz>?</a></nav></header><main b-c4d6obr8sz> 407 408 409 410<div class="guides-index"><header class="guides-head"><h1>Recipe guides</h1> 411 <p class="guides-sub"> 412 Practical, no-nonsense guides to getting every recipe you care about 413 into one place you can actually search. 414 </p></header> 415 416 <ul class="guides-list"><li class="guides-card"><a class="guides-card-link" href="/guides/how-to-organize-recipe-screenshots"><h2 class="guides-card-title">How to Organize the Recipe Screenshots Piling Up on Your Phone</h2> 417 <p class="guides-card-desc">Hundreds of recipe screenshots you can never find again? Here's a simple system to organize them once — and actually cook from them.</p> 418 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/save-recipes-from-email"><h2 class="guides-card-title">How to Save Recipes from Email Without Losing Them Again</h2> 419 <p class="guides-card-desc">Recipes buried in your inbox from newsletters, friends, and family? Here's how to get every emailed recipe into one searchable place.</p> 420 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/digitize-handwritten-recipe-cards"><h2 class="guides-card-title">How to Digitize Handwritten Recipe Cards (Before You Lose Them)</h2> 421 <p class="guides-card-desc">Grandma's recipe box won't last forever. Here's how to digitize handwritten recipe cards so they're searchable, shareable, and safe.</p> 422 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/organize-family-recipes"><h2 class="guides-card-title">How to Organize and Preserve Your Family Recipes</h2> 423 <p class="guides-card-desc">Turn a shoebox of cards and scattered files into a lasting family cookbook that everyone can access and cook from. A practical guide.</p> 424 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/save-recipes-from-youtube"><h2 class="guides-card-title">How to Save a Recipe from a YouTube Cooking Video</h2> 425 <p class="guides-card-desc">Love a YouTube recipe but hate scrubbing back through a 12-minute video? Here's how to turn cooking videos into clean, cookable recipe cards.</p> 426 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/translate-a-recipe"><h2 class="guides-card-title">How to Translate a Recipe into Any Language</h2> 427 <p class="guides-card-desc">Cooking from a recipe in another language? Here's how to translate ingredients, steps, and even oven temperatures accurately — not just word-for-word.</p>
428 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/convert-recipe-measurements"><h2 class="guides-card-title">How to Convert Recipe Measurements (Cups, Grams, °F, °C)</h2> 429 <p class="guides-card-desc">Cups to grams, ounces to milliliters, Fahrenheit to Celsius — a plain-English guide to converting recipe measurements without ruining the dish.</p> 430 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/best-way-to-store-recipes"><h2 class="guides-card-title">The Best Way to Store the Recipes You Actually Cook</h2> 431 <p class="guides-card-desc">Bookmarks, screenshots, and five different apps? Here's how to store your recipes in one private, searchable place you'll actually use.</p> 432 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/recipe-app"><h2 class="guides-card-title">Choosing a Recipe App for the Recipes You Already Cook (2026)</h2> 433 <p class="guides-card-desc">Recipe apps come in two kinds and only one keeps YOUR recipes. What to look for in a recipe app, the questions to ask before committing, and how to avoid losing everything.</p> 434 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/recipe-collection"><h2 class="guides-card-title">How to Build a Recipe Collection You'll Actually Cook From</h2> 435 <p class="guides-card-desc">Turn scattered bookmarks, screenshots and cards into one recipe collection you actually use — what to organize, what not to bother with, and where to start.</p> 436 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/recipe-vault"><h2 class="guides-card-title">What a Recipe Vault Is — and Why Yours Should Be Private</h2> 437 <p class="guides-card-desc">A recipe vault is a private, permanent, portable home for your recipes. What separates a vault from a saved list, and why it matters when apps shut down.</p> 438 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/how-to-save-recipes"><h2 class="guides-card-title">How to Save Recipes from Anywhere (Web, Email, Photos, Video)</h2> 439 <p class="guides-card-desc">Every way to save a recipe — websites, email, screenshots, cookbooks, TikTok and YouTube videos, and family — and how to get them all into one searchable place.</p> 440 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/digital-recipe-box"><h2 class="guides-card-title">Digital Recipe Box: Keeping the Index Cards Without Losing Them</h2> 441 <p class="guides-card-desc">How to turn a box of index cards into a digital recipe box — searchable, scalable, shareable with family, and with the original handwriting kept intact.</p> 442 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/grocery-price-tracking"><h2 class="guides-card-title">How to Actually Know if a Grocery Price Is Good</h2> 443 <p class="guides-card-desc">Price-comparison apps go stale fast. Here's the grocery price tracking that works: unit prices, your own history, and reading the label while you're in the aisle.</p> 444 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/yummly-alternative"><h2 class="guides-card-title">The Best Yummly Alternatives in 2026 (Now That It's Gone)</h2> 445 <p class="guides-card-desc">Yummly shut down in December 2024. The best Yummly alternatives in 2026 for saving recipes, meal planning, and shopping lists — honestly compared.</p>
446 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/paprika-app-alternative"><h2 class="guides-card-title">Paprika App Alternatives in 2026 (If You Need a Web App or AI)</h2> 447 <p class="guides-card-desc">Paprika 3 is a great one-time-purchase recipe manager — but there's no web app and no AI. The best Paprika alternatives in 2026, honestly compared.</p> 448 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/copy-me-that-alternative"><h2 class="guides-card-title">Copy Me That Alternatives Now That Free Caps at 40 Recipes</h2> 449 <p class="guides-card-desc">Copy Me That capped its free plan at 40 recipes. The best alternatives in 2026 — including unlimited options — honestly compared, with current prices.</p> 450 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/anylist-alternative"><h2 class="guides-card-title">AnyList Alternatives in 2026 (Recipes + Lists, No Web Paywall)</h2> 451 <p class="guides-card-desc">AnyList is excellent — but web access costs extra, and there's no photo scan, AI, or translation. The best AnyList alternatives in 2026, honestly compared.</p> 452 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/mealime-alternative"><h2 class="guides-card-title">Mealime Alternatives That Plan from Your Own Recipes (2026)</h2> 453 <p class="guides-card-desc">Mealime plans meals from its recipe library — not yours — and has no web app. The best Mealime alternatives in 2026 for planning from your own collection.</p> 454 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/plan-to-eat-alternative"><h2 class="guides-card-title">Plan to Eat Alternatives in 2026 (Same Idea, Less Money or More AI)</h2> 455 <p class="guides-card-desc">Plan to Eat plans meals from your own recipes for $49/yr. Alternatives in 2026 that do it for less, add AI, or skip the subscription — honestly compared.</p> 456 <span class="guides-card-more">Read the guide â</span></a></li><li class="guides-card"><a class="guides-card-link" href="/guides/organize-meal-kit-recipe-cards"><h2 class="guides-card-title">How to Keep Your HelloFresh Recipe Cards (Even After You Cancel)</h2> 457 <p class="guides-card-desc">Canceled HelloFresh, Goodfood, or Chef's Plate? Don't lose the recipe cards you loved. How to digitize meal-kit cards into a searchable collection.</p> 458 <span class="guides-card-more">Read the guide â</span></a></li></ul> 459 460 <aside class="guides-cta"><h2>One private, searchable vault for all of it</h2> 461 <p>iwant2eat saves recipes from a paste, a photo, a URL, or an email â then lets you ask, in plain language, what to cook.</p> 462 <a class="btn btn-primary btn-lg" href="/Account/Register">Start free trial</a> 463 <p class="guides-cta-fine">14 days free, no card. Or <a href="/try">take a look first</a>.</p></aside></div> 464 465<style> 466 .guides-index { max-width: 820px; margin: 1.5rem auto 3rem; padding: 0 1rem; } 467 .guides-head { text-align: center; margin-bottom: 2rem; } 468 .guides-head h1 { 469 font-family: "Lora", Georgia, "Times New Roman", serif; 470 font-size: clamp(1.9rem, 3.6vw, 2.5rem); font-weight: 700; margin: 0 0 0.5rem; color: var(--text); 471 } 472 .guides-sub { color: var(--muted); font-size: 1.1rem; max-width: 52ch; margin: 0 auto; } 473 .guides-list { 474 list-style: none; padding: 0; margin: 0; 475 display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; 476 } 477 .guides-card { 478 background: var(--surface); border: 1px solid var(--border); border-radius: 12px; 479 box-shadow: var(--shadow); overflow: hidden; transition: transform 0.12s, box-shadow 0.12s; 480 } 481 .guides-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.08); } 482 .guides-card-link { display: block; padding: 1.25rem 1.35rem; text-decoration: none; color: inherit; height: 100%; } 483 .guides-card-title { font-family: "Lora", Georgia, serif; font-size: 1.15rem; font-weight: 600; margin: 0 0 0.45rem; color: var(--text); line-height: 1.3; } 484 .guides-card-desc { color: var(--muted); font-size: 0.92rem; margin: 0 0 0.75rem; line-height: 1.5; } 485 .guides-card-more { color: var(--primary); font-weight: 600; font-size: 0.9rem; } 486 .guides-cta { 487 margin-top: 2.5rem; padding: 1.75rem 1.5rem; text-align: center; 488 background: linear-gradient(180deg, #eaf7e6 0%, #d8eecd 100%); 489 border: 1px solid #b8e1ae; border-radius: 14px; 490 } 491 .guides-cta h2 { font-family: "Lora", Georgia, serif; font-size: 1.35rem; margin: 0 0 0.5rem; color: #1f4d1c; } 492 .guides-cta p { color: #2e6a28; max-width: 46ch; margin: 0 auto 1.1rem; } 493 .guides-cta-fine { font-size: 0.88rem; color: #3b6c33; margin-top: 0.9rem; } 494 .guides-cta-fine a { color: #1f4d1c; } 495</style></main> 496 <footer class="site-footer" b-c4d6obr8sz><a href="/help" b-c4d6obr8sz>Help</a>
497 <span b-c4d6obr8sz>·</span> 498 <a href="/guides" b-c4d6obr8sz>Guides</a> 499 <span b-c4d6obr8sz>·</span> 500 <a href="/get-extension" b-c4d6obr8sz>Get the extension</a> 501 <span b-c4d6obr8sz>·</span> 502 <a href="/privacy" b-c4d6obr8sz>Privacy</a> 503 <span b-c4d6obr8sz>·</span> 504 <a href="/terms" b-c4d6obr8sz>Terms</a> 505 <span b-c4d6obr8sz>·</span> 506 <a href="/dmca" b-c4d6obr8sz>DMCA</a> 507 <span b-c4d6obr8sz>·</span> 508 <a href="/data-deletion" b-c4d6obr8sz>Data deletion</a> 509 <span class="site-footer-sep" b-c4d6obr8sz>·</span> 510 <span class="lang-picker-form" b-c4d6obr8sz><select class="lang-picker" aria-label="Language" onchange="if(this.value)window.location.href='/set-lang?code='+encodeURIComponent(this.value)+'&returnUrl='+encodeURIComponent(window.location.pathname+window.location.search)" b-c4d6obr8sz><option value="ar" b-c4d6obr8sz>العربية</option><option value="bn" b-c4d6obr8sz>বাংলা</option><option value="de" b-c4d6obr8sz>Deutsch</option><option value="en" selected b-c4d6obr8sz>English</option><option value="es" b-c4d6obr8sz>Español</option><option value="fr" b-c4d6obr8sz>Français</option><option value="gu" b-c4d6obr8sz>ગુજરાતી</option><option value="he" b-c4d6obr8sz>עברית</option><option value="hi" b-c4d6obr8sz>हिन्दी</option><option value="id" b-c4d6obr8sz>Bahasa Indonesia</option><option value="it" b-c4d6obr8sz>Italiano</option><option value="ja" b-c4d6obr8sz>日本語</option><option value="kn" b-c4d6obr8sz>ಕನ್ನಡ</option><option value="ko" b-c4d6obr8sz>한국어</option><option value="ml" b-c4d6obr8sz>മലയാളം</option><option value="mr" b-c4d6obr8sz>मराठी</option><option value="nl" b-c4d6obr8sz>Nederlands</option><option value="pa" b-c4d6obr8sz>ਪੰਜਾਬੀ</option><option value="pl" b-c4d6obr8sz>Polski</option><option value="pt" b-c4d6obr8sz>Português</option><option value="pt-BR" b-c4d6obr8sz>Português (Brasil)</option><option value="ru" b-c4d6obr8sz>Русский</option><option value="sv" b-c4d6obr8sz>Svenska</option><option value="ta" b-c4d6obr8sz>தமிழ்</option><option value="te" b-c4d6obr8sz>తెలుగు</option><option value="th" b-c4d6obr8sz>ไทย</option><option value="tr" b-c4d6obr8sz>Türkçe</option><option value="uk" b-c4d6obr8sz>Українська</option><option value="ur" b-c4d6obr8sz>اردو</option><option value="vi" b-c4d6obr8sz>Tiếng Việt</option><option value="zh" b-c4d6obr8sz>中文</option></select> 511 <noscript b-c4d6obr8sz><form method="get" action="/set-lang" style="display:inline;" b-c4d6obr8sz><input type="hidden" name="returnUrl" value="/guides" b-c4d6obr8sz /> 512 <select name="code" class="lang-picker" aria-label="Language" b-c4d6obr8sz><option value="ar" b-c4d6obr8sz>العربية</option><option value="bn" b-c4d6obr8sz>বাংলা</option><option value="de" b-c4d6obr8sz>Deutsch</option><option value="en" selected b-c4d6obr8sz>English</option><option value="es" b-c4d6obr8sz>Español</option><option value="fr" b-c4d6obr8sz>Français</option><option value="gu" b-c4d6obr8sz>ગુજરાતી</option><option value="he" b-c4d6obr8sz>עברית</option><option value="hi" b-c4d6obr8sz>हिन्दी</option><option value="id" b-c4d6obr8sz>Bahasa Indonesia</option><option value="it" b-c4d6obr8sz>Italiano</option><option value="ja" b-c4d6obr8sz>日本語</option><option value="kn" b-c4d6obr8sz>ಕನ್ನಡ</option><option value="ko" b-c4d6obr8sz>한국어</option><option value="ml" b-c4d6obr8sz>മലയാളം</option><option value="mr" b-c4d6obr8sz>मराठी</option><option value="nl" b-c4d6obr8sz>Nederlands</option><option value="pa" b-c4d6obr8sz>ਪੰਜਾਬੀ</option><option value="pl" b-c4d6obr8sz>Polski</option><option value="pt" b-c4d6obr8sz>Português</option><option value="pt-BR" b-c4d6obr8sz>Português (Brasil)</option><option value="ru" b-c4d6obr8sz>Русский</option><option value="sv" b-c4d6obr8sz>Svenska</option><option value="ta" b-c4d6obr8sz>தமிழ்</option><option value="te" b-c4d6obr8sz>తెలుగు</option><option value="th" b-c4d6obr8sz>ไทย</option><option value="tr" b-c4d6obr8sz>Türkç
512e</option><option value="uk" b-c4d6obr8sz>Українська</option><option value="ur" b-c4d6obr8sz>اردو</option><option value="vi" b-c4d6obr8sz>Tiếng Việt</option><option value="zh" b-c4d6obr8sz>中文</option></select> 513 <button type="submit" class="lang-picker-go" b-c4d6obr8sz>Go</button></form></noscript></span> 514 <span class="site-footer-sep" b-c4d6obr8sz>·</span> 515 <span class="site-footer-copy" b-c4d6obr8sz> 516 © 2025–2026 VolicSoftware Inc. 517 </span></footer></div> 518 519<div id="blazor-error-ui" data-nosnippet b-c4d6obr8sz> 520 An unhandled error has occurred. 521 <a href="." class="reload" b-c4d6obr8sz>Reload</a> 522 <span class="dismiss" b-c4d6obr8sz>ð</span></div> 523 <blazor-focus-on-navigate selector="h1"></blazor-focus-on-navigate> 524
524<script type="module" src="Components/Layout/ReconnectModal.5iaswfb9pn.razor.js" b-vxtzfwoeql></script>
524 525 526<dialog id="components-reconnect-modal" data-nosnippet b-vxtzfwoeql><div class="components-reconnect-container" b-vxtzfwoeql><div class="components-rejoining-animation" aria-hidden="true" b-vxtzfwoeql><div b-vxtzfwoeql></div> 527 <div b-vxtzfwoeql></div></div> 528 <p class="components-reconnect-first-attempt-visible" b-vxtzfwoeql> 529 Rejoining the server... 530 </p> 531 <p class="components-reconnect-repeated-attempt-visible" b-vxtzfwoeql> 532 Rejoin failed... trying again in <span id="components-seconds-to-next-attempt" b-vxtzfwoeql></span> seconds. 533 </p> 534 <p class="components-reconnect-failed-visible" b-vxtzfwoeql> 535 Failed to rejoin.<br b-vxtzfwoeql>Please retry or reload the page. 536 </p> 537 <button id="components-reconnect-button" class="components-reconnect-failed-visible" b-vxtzfwoeql> 538 Retry 539 </button> 540 <p class="components-pause-visible" b-vxtzfwoeql> 541 The session has been paused by the server. 542 </p> 543 <p class="components-resume-failed-visible" b-vxtzfwoeql> 544 Failed to resume the session.<br b-vxtzfwoeql>Please retry or reload the page. 545 </p> 546 <button id="components-resume-button" class="components-pause-visible components-resume-failed-visible" b-vxtzfwoeql> 547 Resume 548 </button></div></dialog> 549
549<script> 550 (function () { 551 // SW-driven URL rewrite. When the SW serves cached 552 // /offline/recipes content under a different URL (e.g. 553 // /recipes/{guid} that we couldn't redirect to without 554 // iOS Safari PWA dropping the response), it stamps the 555 // canonical /offline/* path onto <body data-iwe-rewrite- 556 // to>. We do the replaceState here, BEFORE Blazor reads 557 // location.pathname during boot, so the WASM router lands 558 // on the right route (WasmRecipe instead of NotFound). 559 try { 560 if (document.body && document.body.dataset 561 && document.body.dataset.iweRewriteTo 562 && document.body.dataset.iweRewriteTo.charAt(0) === '/') { 563 var rw = document.body.dataset.iweRewriteTo; 564 if (rw !== location.pathname) { 565 history.replaceState(null, '', rw + location.search + location.hash); 566 } 567 delete document.body.dataset.iweRewriteTo; 568 } 569 } catch (_) { /* swallow */ } 570 571 if (window.__iweWasmAnchorInstalled) return; 572 window.__iweWasmAnchorInstalled = true; 573 574 document.addEventListener('click', function (e) { 575 try { 576 if (!document.body) return; 577 var bc = document.body.classList; 578 var isWasm = bc.contains('iwe-wasm-page'); 579 var isOff = !navigator.onLine || bc.contains('iwe-net-offline'); 580 if (!isWasm && !isOff) { 581 // Online server page â pass through to Blazor 582 // enhanced-nav. 583 return; 584 } 585 var t = e.target; 586 var a = t && t.closest && t.closest('a[href]'); 587 if (!a) return; 588 var h = a.getAttribute('href'); 589 if (!h || h.charAt(0) === '#' || /^javascript:/i.test(h)) return; 590 if (a.target && a.target !== '' && a.target !== '_self') return; 591 try { 592 var u = new URL(h, location.origin); 593 if (u.origin !== location.origin) return; 594 } catch (_) { return; } 595 e.preventDefault(); 596 e.stopImmediatePropagation(); 597 window.location.href = h; 598 } catch (_) { /* swallow */ } 599 }, true); 600 })(); 601 </script>
601 602
602<script src="_framework/blazor.web.9hsif5t8mt.js"></script>
602 603
603<script src="js/error-reporter.lpaon3icqs.js" defer></script>
603 604
604<script src="js/native-bridge.h1wov55x50.js" defer></script>
604 605
605<script src="js/nav-scroll.z7inkc8n82.js" defer></script>
605 606
606<script src="js/card-nav-fallback.2ghcdzqrhw.js" defer></script>
606 607
607<script src="js/nav-watchdog.fupe1nn511.js" defer></script>
607 608
608<script src="js/step-check.i9fw7teo44.js" defer></script>
608 609
609<script src="js/tap-haptics.5cxr9u3gw4.js" defer></script>
609 610
610<script src="js/account-deleted.wa3gmw54bc.js" defer></script>
610 611
611<script src="js/recipe-format.ug9289yphx.js" defer></script>
611 612
612<script src="js/prevent-drop.vbs19cu0tp.js" defer></script>
612 613
613<script src="js/password-toggle.plun6cicut.js" defer></script>
613 614
614<script src="js/ai-alerts.yam1hxr0k5.js" defer></script>
614 615
615<script src="js/html2pdf.bundle.min.pvdha3938a.js" defer></script>
615 616
616<script src="js/iwe-print.8nqc6k623e.js" defer></script>
616 617
617<script src="js/ing-edit-delay.d4786nf75t.js" defer></script>
617 618
618<script src="js/geo-store.bymqbj5izk.js" defer></script>
618 619
619<script src="js/col-resize.7axw9mih4z.js" defer></script>
619 620
620<script src="js/sw-reload.d7wpcgaail.js" defer></script>
620 621
621<script src="js/social-share.y68texoyml.js" defer></script>
621 622
622<script src="js/recipe-video.iy7pc2asts.js" defer></script>
622 623
623<script src="js/keep-awake-ui.srn3wmx03d.js" defer></script>
623 624
624<script src="js/contact-picker.u4n4v0bzi5.js" defer></script>
624 625
625<script src="js/paprika-drop.dl11mqpt3k.js" defer></script>
625 626
626<script src="js/prefs.k3ir0fkg2u.js" defer></script>
626 627
627<script src="js/sync.nsxs4o9i6h.js" defer></script>
627 628
628<script src="js/sync-ui.nqft9xrfni.js" defer></script>
628 629
629<script src="js/sync-auto.9djpypdbu7.js" defer></script>
629 630
630<script src="js/install-prompt.tumv8yl31y.js" defer></script>
630 631
631<script src="js/extension-banner.6r9rsgt4sg.js" defer></script>
631 632
632<script src="js/analytics.dbdjnyqt7e.js" defer></script>
632 633
633<script src="js/footer-buildstamp.p0kwebuj2g.js" defer></script>
633 634
634<script src="js/iwe-offline.b9eni71xu6.js" defer></script>
634<script src="js/theme.amjygw6y4u.js"></script>
634</body></html><!--Blazor-Server-Component-State:CfDJ8J5J2KokqVZPu1ELipQeem/sWhKiGd5KAnj2FLnPEXzdszdtoCd+8zvXMdSIXhTFV90/NOyPO5VqErhyekHtm7LP3/vE1K5LnwHWJkoUoZ6r4zfGr0jDajgJu6L7BNhve1FwsVEeOJlSCsH7LGBFdy50y8t9Pm62+dyzOQzcPkp7C/5M1zLnb2nuKkpLQK7+anrn8D+GrEvogzM0q4ZzSl/nRAEY7iWN3nY73stg4T/7vFXQaVCNRiSU1dnoS/7rWleFDwKiorn8uD/I5u5hmZq80pry8/iQJJ7D2nQrVdl+VeFsf9SpsrR2cS7NjqmXILKrTqHJT33Bk41MBrXa69gcHme4MKzuzMc1TfOnQCob5ePLOy7kvrxb14iugB/RJmtVfYk8awn9oRK0N95Kg2HRl7lou+uYOKhhyUGJW9nfeCKZAfDQrMu6ABFEyQctXPNoRpABrI7gWFViB4OcaqMygQqM2u+BRIxQaFF0WBlIV0uSM6YsxYofu3HM8EVHfEZmhrkXlCnClcRMKsUR5i0VDLvbJPH9jSuXjRizU9vabOSB9pOyjHyxa4csBFhvxnqWUQLnGEXvBwU9MmPc7MdTJEK/Rtf0EYexBU/RcqparK4PvbMauEM9ocmAvt5XHPFEOP4mPSZWVOhykb8LCK2OWXj1D8s5Qvl8OaObJF7BGKQqaLxLWtxGLPFmNLrUUw6NTkLud2lvsAZnpdaCNVPbJB5q87HYpTIyVhDXVOrAaOksNc7Iow678XDdC/Gh/f9A4HOgHK5HmPLiYR2FELSghR8UkkaH+MF8Z3fMfeQLfymWIe5RTrLDHgWXUREVjKSH5e9t/r/zTPnSiDK2baZv6gnFv2jsX7w0qcS8mot1D4h1aPExGP8CUWQ61t0sMhkpflWAGEUhO43j3cIdE/jKC3xeKSbCPFhmegd7n5t10EP9aJmlk2vHe5f7/Q+fXeyibDb3r6Q5akjH7ghrug3yTVHKHCi0x5XQiw7ysoAev0oGhjgfYDsnLCQkI5XifTzyGBZBa5Yk3cUUFLvhu+EzI/M+/Y8lDXFmDZgExwr4DYDGQndexFEpsfXKrgRUTUllhNC26yT0T2uvZITeN0O8uvwHRjIMaesTSKIfo+9aIHHVRskODSObwf1FxXewbA==--><!--Blazor-WebAssembly-Component-State:eyJLOVRlM0xEYlx1MDAyQjZ4ZkpDLzBSVDBCR0xRT3ZwWGlQNEtJU2dBa096RG5za0E9IjoiSWk0dlgyWnlZVzFsZDI5eWF5OXlaWE52ZFhKalpTMWpiMnhzWldOMGFXOXVMbVZPZUZKVkxtcHpJZz09IiwiTWljcm9zb2Z0LkFzcE5ldENvcmUuQ29tcG9uZW50cy5JbmZyYXN0cnVjdHVyZS5QZXJzaXN0ZW50U2VydmljZXNSZWdpc3RyeSI6Ilczc2lZWE56WlcxaWJIa2lPaUpOYVdOeWIzTnZablF1UVhOd1RtVjBRMjl5WlM1RGIyMXdiMjVsYm5SekxrVnVaSEJ2YVc1MGN5SXNJbVoxYkd4VWVYQmxUbUZ0WlNJNklrMXBZM0p2YzI5bWRDNUJjM0JPWlhSRGIzSmxMa052YlhCdmJtVnVkSE11VW1WemIzVnlZMlZEYjJ4c1pXTjBhVzl1VUhKdmRtbGtaWElpZlN4N0ltRnpjMlZ0WW14NUlqb2lUV2xqY205emIyWjBMa0Z6Y0U1bGRFTnZjbVV1UTI5dGNHOXVaVzUwY3k1WFpXSWlMQ0ptZFd4c1ZIbHdaVTVoYldVaU9pSk5hV055YjNOdlpuUXVRWE53VG1WMFEyOXlaUzVEYjIxd2IyNWxiblJ6TGtadmNtMXpMa0Z1ZEdsbWIzSm5aWEo1VTNSaGRHVlFjbTkyYVdSbGNpSjlYUT09IiwiS1N6dFQ4NGdBaVYwSU8vVUJSUnBPbThLNGpxRWZcdTAwMkIxSnp2Vk9DTUJsc2lVPSI6ImV5SjJZV3gxWlNJNklrTm1SRW80U2pWS01rdHZhM0ZXV2xCMU1VVk1hWEJSWldWdFgwODRhVWxmU0ZJemRWZHNibTVrVTB0cVZtcDBWM0p2UTJaUmJFNVJlbVppWlZwWVZtZEZPR0V6VDI5Q2JFcG1jVm96YW5waFoxQXRiMHhVVUd0UmRHWlJhWEZ1UldaVkxUaFlZMWRoU1haSmVXNTZVRkV6UTJkR1F6ZENTV0ZTVERCYU1rRmlkM1J5TjNaQlptWnNjR1ZuYUc0elUwTnJWVVowZUVJM1lubHJJaXdpWm05eWJVWnBaV3hrVG1GdFpTSTZJbDlmVW1WeGRXVnpkRlpsY21sbWFXTmhkR2x2YmxSdmEyVnVJbjA9In0=-->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.