1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 5
5<script>(function(){var t=localStorage.getItem('theme')||(window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light');document.documentElement.setAttribute('data-theme',t);})()</script>
5 6 7
7<script>(function(){var a=document.cookie.split(';').some(function(c){return c.trim().startsWith('grm_admin=');});if(a)document.documentElement.setAttribute('data-admin','1');})()</script>
7 8 <meta charset="UTF-8" /> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 10 <title>About Get Raw Milk</title> 11 <meta name="description" content="GetRawMilk.com â the world's largest raw milk directory." /> 12 13 14 15 <meta property="og:title" content="About Get Raw Milk" /> 16 <meta property="og:description" content="" /> 17 <meta property="og:type" content="website" /> 18 19 <meta property="og:url" content="https://getrawmilk.com/about" /> 20 <meta property="og:image" content="https://getrawmilk.com/img/get-raw-milk-meta.jpg" /> 21 <meta name="twitter:card" content="summary_large_image" /> 22 <meta name="twitter:title" content="About Get Raw Milk" /> 23 <meta name="twitter:description" content="" /> 24 <meta name="twitter:image" content="https://getrawmilk.com/img/get-raw-milk-meta.jpg" /> 25 <meta name="twitter:creator" content="@getrawmilk" /> 26 <meta property="og:site_name" content="GetRawMilk" /> 27 28 29 30 <meta name="robots" content="index, follow" /> 31 <meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" /> 32 <meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" /> 33 34 35 36 <meta name="theme-color" content="#F5F3F0" media="(prefers-color-scheme: light)" id="meta-theme-color-light" /> 37 <meta name="theme-color" content="#101828" media="(prefers-color-scheme: dark)" id="meta-theme-color-dark" /> 38 <meta name="format-detection" content="telephone=no" /> 39 <meta name="mobile-web-app-capable" content="yes" /> 40 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 41 42 43 <meta name="yandex-verification" content="b2731b5c8d44cdbe" /> 44 <meta name="fediverse:creator" content="@[email protected]" /> 45 46 47 <link rel="canonical" href="https://getrawmilk.com/about" /> 48 49 50 51 52 <link rel="icon" href="/favicon.ico" /> 53 <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch/apple-touch-icon-iphone-60x60.png" /> 54 <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch/apple-touch-icon-iphone-retina-120x120.png" /> 55 <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch/apple-touch-icon-ipad-76x76.png" /> 56 <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch/apple-touch-icon-ipad-retina-152x152.png" /> 57 <link rel="apple-touch-icon" href="/apple-touch/apple-touch-icon.png" /> 58 <link rel="manifest" href="/manifest.json" /> 59 60 61 62 <link rel="stylesheet" href="/vendor/wp-block-styles/index.min.css" media="print" onload="this.media='all'" /> 63 <noscript><link rel="stylesheet" href="/vendor/wp-block-styles/index.min.css" /></noscript> 64 <link rel="stylesheet" href="/css/main.css" /> 65 66 67 <link rel="preconnect" href="https://fonts.googleapis.com" /> 68 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 69 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,100..900;1,100..900&display=swap" media="print" onload="this.media='all'" /> 70 <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,100..900;1,100..900&display=swap" /></noscript> 71 72 73 74 <link rel="stylesheet" href="/vendor/jodit/jodit.min.css" media="print" onload="this.media='all'" /> 75 <noscript><link rel="stylesheet" href="/vendor/jodit/jodit.min.css" /></noscript> 76 77 78 79
79<script> 80 window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) } 81 window.plausible.o = { endpoint: '/api/event' } 82 </script>
82 83
83<script defer data-domain="getrawmilk.com" src="/js/script.js"></script>
83 84 85 86 87</head> 88<body> 89 90 91<div hidden aria-hidden="true"><!-- Icon sprite â getrawmilk-express 92 All icons: Tabler Icons v3.41.1 (https://tabler.io/icons) â MIT licence 93 94 HOW TO ADD A NEW ICON 95 âââââââââââââââââââââ 96 1. Find the icon at https://tabler.io/icons 97 2. Download its outline SVG: 98 https://cdn.jsdelivr.net/npm/@tabler/[email protected]/icons/outline/ICON-NAME.svg 99 Brand icons follow the same pattern, e.g. brand-facebook.svg 100 3. Open the downloaded SVG and copy everything BETWEEN the outer <svg> tags 101 (just the inner <path> / <circle> / <polyline> elements). 102 4. Add a new <symbol> block here: 103 <symbol id="ti-ICON-NAME" viewBox="0 0 24 24">...inner elements...</symbol> 104 5. Use in any template: 105 With additional CSS classes: <svg class="icon extra-class">...</svg> 106--> 107<svg xmlns="http://www.w3.org/2000/svg" style="display:none"> 108 <symbol id="ti-brand-apple" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M8.286 7.008c-3.216 0 -4.286 3.23 -4.286 5.92c0 3.229 2.143 8.072 4.286 8.072c1.165 -.05 1.799 -.538 3.214 -.538c1.406 0 1.607 .538 3.214 .538s4.286 -3.229 4.286 -5.381c-.03 -.011 -2.649 -.434 -2.679 -3.23c-.02 -2.335 2.589 -3.179 2.679 -3.228c-1.096 -1.606 -3.162 -2.113 -3.75 -2.153c-1.535 -.12 -3.032 1.077 -3.75 1.077c-.729 0 -2.036 -1.077 -3.214 -1.077" /> <path d="M12 4a2 2 0 0 0 2 -2a2 2 0 0 0 -2 2" /></symbol> 109 <symbol id="ti-brand-cashapp" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M17.1 8.648a.568 .568 0 0 1 -.761 .011a5.682 5.682 0 0 0 -3.659 -1.34c-1.102 0 -2.205 .363 -2.205 1.374c0 1.023 1.182 1.364 2.546 1.875c2.386 .796 4.363 1.796 4.363 4.137c0 2.545 -1.977 4.295 -5.204 4.488l-.295 1.364a.557 .557 0 0 1 -.546 .443h-2.034l-.102 -.011a.568 .568 0 0 1 -.432 -.67l.318 -1.444a7.432 7.432 0 0 1 -3.273 -1.784v-.011a.545 .545 0 0 1 0 -.773l1.137 -1.102c.214 -.2 .547 -.2 .761 0a5.495 5.495 0 0 0 3.852 1.5c1.478 0 2.466 -.625 2.466 -1.614c0 -.989 -1 -1.25 -2.886 -1.954c-2 -.716 -3.898 -1.728 -3.898 -4.091c0 -2.75 2.284 -4.091 4.989 -4.216l.284 -1.398a.545 .545 0 0 1 .545 -.432h2.023l.114 .012a.544 .544 0 0 1 .42 .647l-.307 1.557a8.528 8.528 0 0 1 2.818 1.58l.023 .022c.216 .228 .216 .569 0 .773l-1.057 1.057" /></symbol> 110 <symbol id="ti-brand-facebook" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3" /></symbol> 111 <symbol id="ti-brand-instagram" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M4 8a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4l0 -8" /> <path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" /> <path d="M16.5 7.5v.01" /></symbol> 112 <symbol id="ti-brand-paypal" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 13l2.5 0c2.5 0 5 -2.5 5 -5c0 -3 -1.9 -5 -5 -5h-5.5c-.5 0 -1 .5 -1 1l-2 14c0 .5 .5 1 1 1h2.8l1.2 -5c.
1121 -.6 .4 -1 1 -1m7.5 -5.8c1.7 1 2.5 2.8 2.5 4.8c0 2.5 -2.5 4.5 -5 4.5h-2.6l-.6 3.6a1 1 0 0 1 -1 .8l-2.7 0a.5 .5 0 0 1 -.5 -.6l.2 -1.4" /></symbol> 113 <symbol id="ti-brand-tiktok" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M21 7.917v4.034a9.948 9.948 0 0 1 -5 -1.951v4.5a6.5 6.5 0 1 1 -8 -6.326v4.326a2.5 2.5 0 1 0 4 2v-11.5h4.083a6.005 6.005 0 0 0 4.917 4.917" /></symbol> 114 <symbol id="ti-brand-youtube" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8" /> <path d="M10 9l5 3l-5 3l0 -6" /></symbol> 115 <symbol id="ti-copy" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666" /> <path d="M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1" /></symbol> 116 <symbol id="ti-credit-card" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3l0 -8" /> <path d="M3 10l18 0" /> <path d="M7 15l.01 0" /> <path d="M11 15l2 0" /></symbol> 117 <symbol id="ti-currency-bitcoin" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6 6h8a3 3 0 0 1 0 6a3 3 0 0 1 0 6h-8" /> <path d="M8 6l0 12" /> <path d="M8 12l6 0" /> <path d="M9 3l0 3" /> <path d="M13 3l0 3" /> <path d="M9 18l0 3" /> <path d="M13 18l0 3" /></symbol> 118 <symbol id="ti-currency-dollar" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2" /> <path d="M12 3v3m0 12v3" /></symbol> 119 <symbol id="ti-currency-ethereum" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6 12l6 -9l6 9l-6 9l-6 -9" /> <path d="M6 12l6 -3l6 3l-6 2l-6 -2" /></symbol> 120 <symbol id="ti-eye" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /> <path d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" /></symbol> 121 <symbol id="ti-eye-off" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10.585 10.587a2 2 0 0 0 2.829 2.828" /> <path d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87" /> <path d="M3 3l18 18" /></symbol> 122 <symbol id="ti-heart" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572" /></symbol> 123 <symbol id="ti-heart-handshake" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572" /> <path d="M12 6l-3.293 3.293a1 1 0 0 0 0 1.414l.543 .543c.69 .69 1.81 .69 2.5 0l1 -1a3.182 3.182 0 0 1 4.5 0l2.25 2.25" /> <path d="M12.5 15.5l2 2" /> <path d="M15 13l2 2" /></symbol> 124 <symbol id="ti-layout-dashboard" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1" /> <path d="M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1" /> <path d="M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1" /> <path d="M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1" /></symbol> 125 <symbol id="ti-leaf" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M5 21c.5 -4.5 2.5 -8 7 -10" /> <path d="M9 18c6.218 0 10.5 -3.288 11 -12v-2h-4.014c-9 0 -11.986 4 -12 9c0 1 0 3 2 5h3l.014 0" /></symbol> 126 <symbol id="ti-link" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M9 15l6 -6" /> <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464" /> <path d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463" /></symbol>
127 <symbol id="ti-link-filled" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M15.707 8.293a1 1 0 0 1 0 1.414l-6 6a1 1 0 1 1 -1.414 -1.414l6 -6a1 1 0 0 1 1.414 0" /><path d="M19.242 4.757c2.343 2.344 2.342 6.143 -.052 8.534l-.534 .464a1 1 0 1 1 -1.312 -1.51l.483 -.416a4 4 0 0 0 0 -5.657c-1.562 -1.563 -4.095 -1.563 -5.607 -.054l-.463 .536a1 1 0 1 1 -1.514 -1.308l.513 -.59a6 6 0 0 1 8.486 .001" /><path d="M6.75 10.338a1 1 0 0 1 -.088 1.411l-.483 .425a3.97 3.97 0 0 0 0 5.649a4.064 4.064 0 0 0 5.678 .038l.34 -.458a1 1 0 1 1 1.606 1.194l-.397 .534l-.1 .114a6.07 6.07 0 0 1 -8.533 0a5.97 5.97 0 0 1 -1.773 -4.247c0 -1.595 .638 -3.124 1.814 -4.284l.524 -.463a1 1 0 0 1 1.411 .087" /></symbol> 128 <symbol id="ti-loader-2" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3a9 9 0 1 0 9 9" /></symbol> 129 <symbol id="ti-logout" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2" /> <path d="M9 12h12l-3 -3" /> <path d="M18 15l3 -3" /></symbol> 130 <symbol id="ti-mail" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10" /> <path d="M3 7l9 6l9 -6" /></symbol> 131 <symbol id="ti-map" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 7l6 -3l6 3l6 -3v13l-6 3l-6 -3l-6 3v-13" /> <path d="M9 4v13" /> <path d="M15 7v13" /></symbol> 132 <symbol id="ti-map-pin" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" /> <path d="M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0" /></symbol> 133 <symbol id="ti-map-pin-filled" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M18.364 4.636a9 9 0 0 1 .203 12.519l-.203 .21l-4.243 4.242a3 3 0 0 1 -4.097 .135l-.144 -.135l-4.244 -4.243a9 9 0 0 1 12.728 -12.728zm-6.364 3.364a3 3 0 1 0 0 6a3 3 0 0 0 0 -6" /></symbol> 134 <symbol id="ti-maximize" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M4 8v-2a2 2 0 0 1 2 -2h2" /> <path d="M4 16v2a2 2 0 0 0 2 2h2" /> <path d="M16 4h2a2 2 0 0 1 2 2v2" /> <path d="M16 20h2a2 2 0 0 0 2 -2v-2" /></symbol> 135 <symbol id="ti-menu-deep" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M4 6h16" /> <path d="M7 12h13" /> <path d="M10 18h10" /></symbol> 136 <symbol id="ti-microscope" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M5 21h14" /> <path d="M6 18h2" /> <path d="M7 18v3" /> <path d="M9 11l3 3l6 -6l-3 -3l-6 6" /> <path d="M10.5 12.5l-1.5 1.5" /> <path d="M17 3l3 3" /> <path d="M12 21a6 6 0 0 0 3.715 -10.712" /></symbol> 137 <symbol id="ti-minimize" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M15 19v-2a2 2 0 0 1 2 -2h2" /> <path d="M15 5v2a2 2 0 0 0 2 2h2" /> <path d="M5 15h2a2 2 0 0 1 2 2v2" /> <path d="M5 9h2a2 2 0 0 0 2 -2v-2" /></symbol> 138 <symbol id="ti-moon" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454l0 .008" /></symbol> 139 <symbol id="ti-plus" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 5l0 14" /> <path d="M5 12l14 0" /></symbol> 140 <symbol id="ti-rss" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M4 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /> <path d="M4 4a16 16 0 0 1 16 16" /> <path d="M4 11a9 9 0 0 1 9 9" /></symbol> 141 <symbol id="ti-section-sign" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M9.172 19a3 3 0 1 0 2.828 -4" /> <path d="M14.83 5a3 3 0 1 0 -2.83 4" /> <path d="M9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /></symbol> 142 <symbol id="ti-share" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M15 6a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M15 18a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M8.7 10.7l6.6 -3.4" /> <path d="M8.7 13.3l6.6 3.4" /></symbol> 143 <symbol id="ti-share-3" viewBox="0 0 24 24">
143<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M13 4v4c-6.575 1.028 -9.02 6.788 -10 12c-.037 .206 5.384 -5.962 10 -6v4l8 -7l-8 -7" /></symbol> 144 <symbol id="ti-shopping-bag" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6.331 8h11.339a2 2 0 0 1 1.977 2.304l-1.255 8.152a3 3 0 0 1 -2.966 2.544h-6.852a3 3 0 0 1 -2.965 -2.544l-1.255 -8.152a2 2 0 0 1 1.977 -2.304" /> <path d="M9 11v-5a3 3 0 0 1 6 0v5" /></symbol> 145 <symbol id="ti-sun" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" /> <path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7" /></symbol> 146 <symbol id="ti-tip-jar" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M14 10h-2.5a1.5 1.5 0 0 0 0 3h1a1.5 1.5 0 0 1 0 3h-2.5" /> <path d="M12 9v1" /> <path d="M12 16v1" /> <path d="M17 4v1.882c0 .685 .387 1.312 1 1.618s1 .933 1 1.618v8.882a3 3 0 0 1 -3 3h-8a3 3 0 0 1 -3 -3v-8.882c0 -.685 .387 -1.312 1 -1.618s1 -.933 1 -1.618v-1.882" /> <path d="M6 4h12l-12 0" /></symbol> 147 <symbol id="ti-world" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M3.6 9h16.8" /> <path d="M3.6 15h16.8" /> <path d="M11.5 3a17 17 0 0 0 0 18" /> <path d="M12.5 3a17 17 0 0 1 0 18" /></symbol> 148 <symbol id="ti-x" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M18 6l-12 12" /> <path d="M6 6l12 12" /></symbol> 149 <symbol id="ti-filled-brand-facebook" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path fill="currentColor" d="M18 2a1 1 0 0 1 .993 .883l.007 .117v4a1 1 0 0 1 -.883 .993l-.117 .007h-3v1h3a1 1 0 0 1 .991 1.131l-.02 .112l-1 4a1 1 0 0 1 -.858 .75l-.113 .007h-2v6a1 1 0 0 1 -.883 .993l-.117 .007h-4a1 1 0 0 1 -.993 -.883l-.007 -.117v-6h-2a1 1 0 0 1 -.883 -.993l-.007 -.117v-4a1 1 0 0 1 .883 -.993l.117 -.007h2v-1a6 6 0 0 1 5.775 -5.996l.225 -.004h3z" /></symbol> 150 <symbol id="ti-filled-brand-instagram" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path fill="currentColor" d="M16 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-8a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-4 5a4 4 0 0 0 -3.995 3.8l-.005 .2a4 4 0 1 0 4 -4m4.5 -1.5a1 1 0 0 0 -.993 .883l-.007 .127a1 1 0 0 0 1.993 .117l.007 -.127a1 1 0 0 0 -1 -1" /></symbol> 151 <symbol id="ti-filled-brand-youtube" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path fill="currentColor" d="M18 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-12a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-9 6v6a1 1 0 0 0 1.514 .857l5 -3a1 1 0 0 0 0 -1.714l-5 -3a1 1 0 0 0 -1.514 .857z" /></symbol> 152 <symbol id="ti-filled-brand-tiktok" viewBox="0 0 24 24"><path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path fill="currentColor" d="M16.083 2h-4.083a1 1 0 0 0 -1 1v11.5a1.5 1.5 0 1 1 -2.519 -1.1l.12 -.1a1 1 0 0 0 .399 -.8v-4.326a1 1 0 0 0 -1.23 -.974a7.5 7.5 0 0 0 1.73 14.8l.243 -.005a7.5 7.5 0 0 0 7.257 -7.495v-2.7l.311 .153c1.122 .53 2.333 .868 3.59 .993a1 1 0 0 0 1.099 -.996v-4.033a1 1 0 0 0 -.834 -.986a5.005 5.005 0 0 1 -4.097 -4.096a1 1 0 0 0 -.986 -.835z" /></symbol> 153</svg> 154</div> 155 156<header class="site-header"> 157 158 <div class="nav-spacer"></div> 159 <div class="nav-bar"> 160 161 162 <a href="/" class="nav-logo" title="Home"> 163 <img src="/aurochs-stamp-black.png" 164 alt="GetRawMilk" 165 class="nav-aurochs bucking" 166 width="30" height="56" /> 167 <span class="nav-brand">GetRawMilk.com</span> 168 </a> 169 170 171 <nav class="nav-links" aria-label="Main navigation"> 172 <a href="/search" class="nav-link"><svg class="icon" aria-hidden="true"><use href="#ti-map-pin-filled"></use></svg> Find Raw Milk</a> 173 <a href="/map" class="nav-link">World Map</a> 174 <a href="/species" class="nav-link">Species</a> 175 <a href="/products" class="nav-link">Products</a> 176 <a href="/social" class="nav-link">Social</a> 177 <a href="/raw-milk-laws" class="nav-link">Laws</a> 178 <a href="/content" class="nav-link">Blog</a> 179 <a href="/about" class="nav-link">About</a> 180 <a href="/tip" class="nav-link">ð¥ Buy me a milk</a> 181 </nav> 182 183 184 <div class="nav-right">
185 <span class="nav-icons nav-icons--admin"> 186 <a href="/admin/new" class="nav-icon-btn" title="Add listing" aria-label="Add listing"> 187 <svg class="icon" aria-hidden="true"><use href="#ti-plus"></use></svg> 188 </a> 189 <a href="/admin" class="nav-icon-btn" title="Dashboard" aria-label="Dashboard"> 190 <svg class="icon" aria-hidden="true"><use href="#ti-layout-dashboard"></use></svg> 191 </a> 192 </span> 193 <span class="nav-icons nav-icons--guest"> 194 <a href="/globe" class="nav-icon-btn" title="3D Globe" aria-label="3D Globe"> 195 <svg class="icon" aria-hidden="true"><use href="#ti-world"></use></svg> 196 </a> 197 <a href="/tip" class="nav-icon-btn nav-icon-btn--tip" title="Support this project" aria-label="Support this project"> 198 <svg class="icon" aria-hidden="true"><use href="#ti-tip-jar"></use></svg> 199 </a> 200 </span> 201 <div class="theme-switcher" id="theme-switcher"> 202 <button class="theme-btn theme-btn--left" data-theme="dark" title="Dark mode" aria-label="Dark mode"><svg class="icon" aria-hidden="true"><use href="#ti-moon"></use></svg></button> 203<button class="theme-btn theme-btn--mid" data-theme="jungle" title="Choco mode" aria-label="Choco mode"><svg class="icon" aria-hidden="true"><use href="#ti-leaf"></use></svg></button> 204<button class="theme-btn theme-btn--right" data-theme="light" title="Light mode" aria-label="Light mode"><svg class="icon" aria-hidden="true"><use href="#ti-sun"></use></svg></button> 205 206 </div> 207 <button class="nav-hamburger" id="nav-hamburger" aria-expanded="false" aria-controls="nav-drawer" aria-label="Open menu" title="Open menu" type="button"> 208 <svg class="icon" aria-hidden="true"><use href="#ti-menu-deep"></use></svg> 209 </button> 210 </div> 211 212 </div> 213 214 215 <div class="nav-drawer" id="nav-drawer" aria-hidden="true"> 216 <div class="nav-drawer-backdrop" id="nav-drawer-backdrop"></div> 217 <div class="nav-drawer-panel" inert> 218 219 <div class="nav-drawer-header"> 220 <a href="/" class="nav-drawer-logo-img"> 221 <img src="/aurochs-stamp-black.png" alt="GetRawMilk" width="36" height="67" class="nav-aurochs bucking" /> 222 </a> 223 <div class="nav-drawer-logo-text"> 224 <a href="/" class="nav-drawer-brand">GetRawMilk.com</a> 225 <a href="mailto:[email protected]" class="nav-drawer-email">[email protected]</a> 226 </div> 227 <button class="nav-drawer-close" id="nav-drawer-close" aria-label="Close menu" type="button"> 228 <svg class="icon" aria-hidden="true"><use href="#ti-x"></use></svg> 229 </button> 230 </div> 231 232 233 <nav class="nav-drawer-links" aria-label="Mobile navigation"> 234 <a href="/search" class="drawer-link"><svg class="icon" aria-hidden="true"><use href="#ti-map-pin"></use></svg> Find Raw Milk Near You</a> 235 <a href="/map" class="drawer-link"><svg class="icon" aria-hidden="true"><use href="#ti-map"></use></svg> Raw Milk World Map</a> 236 <a href="/globe" class="drawer-link"><svg class="icon" aria-hidden="true"><use href="#ti-world"></use></svg> Raw Milk 3D Globe</a> 237 </nav> 238 239 240 241 242 243<ul class="species-tags-links "> 244 245 <li><a href="/cow" title="View all raw cow milk listings" class="species-tag">Cow Milk</a></li> 246 <li><a href="/a2/cow" title="View all A2 raw cow milk listings" class="species-tag">A2 Cow Milk</a></li> 247 <li><a href="/goat" title="View all raw goat milk listings" class="species-tag">Goat Milk</a></li> 248 <li><a href="/sheep" title="View all raw sheep milk listings" class="species-tag">Sheep Milk</a></li> 249 <li><a href="/donkey" title="View all raw donkey milk listings" class="species-tag">Donkey Milk</a></li> 250 <li><a href="/camel" title="View all raw camel milk listings" class="species-tag">Camel Milk</a></li> 251 <li><a href="/buffalo" title="View all raw buffalo milk listings" class="species-tag">Buffalo Milk</a></li> 252 <li><a href="/a2" title="View all A2 protein raw milk listings" class="species-tag">A2</a></li> 253 <li><a href="/butter" title="View all raw milk butter listings" class="species-tag">Butter</a></li> 254 <li><a href="/cream" title="View all raw milk cream listings" class="species-tag">Cream</a></li> 255 <li><a href="/cheese" title="View all raw milk cheese listings" class="species-tag">Cheese</a></li> 256 <li><a href="/kefir" title="View all raw milk kefir listings" class="species-tag">Kefir</a></li> 257 <li><a href="/icecream" title="View all raw milk ice cream listings" class="species-tag">Ice Cream</a></li> 258 <li><a href="/eggs" title="View all farm fresh eggs" class="species-tag">Eggs</a></li> 259 260 <li><a href="/beef" title="View all farm-direct beef listings" class="species-tag">
260Beef</a></li> 261 <li><a href="/pork" title="View all farm-direct pork listings" class="species-tag">Pork</a></li> 262 <li><a href="/chicken" title="View all farm-direct chicken listings" class="species-tag">Chicken</a></li> 263 264 265 266 <li> 267 <a href="/rawmi" title="View all Raw Milk Institute listings" class="tag-link tag-link--rawmi"> 268 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-microscope"></use></svg> 269 <span>RAWMI</span> 270 </a> 271 </li> 272 <li> 273 <a href="/raw-milk-laws" title="Raw Milk Laws" class="tag-link tag-link--laws"> 274 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-section-sign"></use></svg> 275 <span>Laws</span> 276 </a> 277 </li> 278 <li class="tag-link--social-start" aria-hidden="true"></li> 279 <li> 280 <a href="/social/facebook" title="View farms on Facebook" class="tag-link tag-link--facebook"> 281 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-facebook"></use></svg> 282 </a> 283 </li> 284 <li> 285 <a href="/social/instagram" title="View farms on Instagram" class="tag-link tag-link--instagram"> 286 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-brand-instagram"></use></svg> 287 </a> 288 </li> 289 <li> 290 <a href="/social/youtube" title="View farms on YouTube" class="tag-link tag-link--youtube"> 291 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-youtube"></use></svg> 292 </a> 293 </li> 294 <li> 295 <a href="/social/twitter" title="View farms on X" class="tag-link tag-link--twitter"> 296 <svg class="tag-link__icon tag-link__icon--x" width="0.75rem" height="0.75rem" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg"><path d="M 714.163 519.284 L 1160.89 0 L 1055.6 0 L 667.137 450.541 L 357.328 0 L 0 0 L 468.492 681.821 L 0 1200 L 105.289 1200 L 521.898 735.218 L 823.975 1200 L 1200 1200 L 714.163 519.284 Z" fill="currentColor"/></svg> 297 </a> 298 </li> 299 <li> 300 <a href="/social/tiktok" title="View farms on TikTok" class="tag-link tag-link--tiktok"> 301 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-tiktok"></use></svg> 302 </a> 303 </li> 304</ul> 305 306 307 308 <div class="nav-drawer-links"> 309 <a href="/submit" class="drawer-link"><svg class="icon" aria-hidden="true"><use href="#ti-plus"></use></svg> Submit a Listing</a> 310 <a href="/tip" class="drawer-link drawer-link--highlight" title="Support this project" aria-label="Support this project"> 311 <svg class="icon" aria-hidden="true"><use href="#ti-tip-jar"></use></svg> 312 <span>Buy me a milk</span> 313 </a> 314 </div> 315 316 317 <div class="drawer-section-label">Explore</div> 318 <div class="nav-drawer-links"> 319 <a href="/browse" class="drawer-link drawer-link--sm">Browse by Country</a> 320 <a href="/products" class="drawer-link drawer-link--sm">Products</a> 321 <a href="/species" class="drawer-link drawer-link--sm">Species</a> 322 <a href="/social" class="drawer-link drawer-link--sm">Social Media</a> 323 <a href="/raw-milk-laws" class="drawer-link drawer-link--sm">Raw Milk Laws</a> 324 </div> 325 326 327 <div class="drawer-section-label">Learn</div> 328 <div class="nav-drawer-links"> 329 <a href="/why" class="drawer-link drawer-link--sm">Why Raw Milk?</a> 330 <a href="/about" class="drawer-link drawer-link--sm">About GetRawMilk</a> 331 <a href="/support" class="drawer-link drawer-link--sm">How to Support GRM</a> 332 <a href="/content" class="drawer-link drawer-link--sm">Blog / News Feed</a> 333 <a href="/content/category" class="drawer-link drawer-link--sm">Blog Categories</a> 334 <a href="/faq" class="drawer-link drawer-link--sm">FAQ</a> 335 </div> 336 337 338 <div class="drawer-section-label">Connect</div> 339 <div class="nav-drawer-links"> 340 <a href="/contact" class="drawer-link drawer-link--sm"><svg class="icon" aria-hidden="true"><use href="#ti-mail"></use></svg> Contact Admin</a>
341 <a href="/subscribe" class="drawer-link drawer-link--sm"><svg class="icon" aria-hidden="true"><use href="#ti-mail"></use></svg> Subscribe to Emails</a> 342 <a href="/feed.xml" class="drawer-link drawer-link--sm"><svg class="icon nav-rss-icon" aria-hidden="true"><use href="#ti-rss"></use></svg> RSS Feed</a> 343 <a href="/shop" class="drawer-link drawer-link--sm">Raw Milk Merch</a> 344 </div> 345 346 347 <div class="nav-drawer-admin"> 348 <div class="drawer-section-label">Admin</div> 349 <div class="nav-drawer-links"> 350 <a href="/admin/new" class="drawer-link drawer-link--sm"><svg class="icon" aria-hidden="true"><use href="#ti-plus"></use></svg> Add Listing</a> 351 <a href="/admin" class="drawer-link drawer-link--sm"><svg class="icon" aria-hidden="true"><use href="#ti-layout-dashboard"></use></svg> Dashboard</a> 352 <a href="/map/latest" class="drawer-link drawer-link--sm">Latest Listings</a> 353 <form method="POST" action="/locktose/logout" style="margin: 0;"> 354 <button type="submit" class="drawer-link drawer-link--sm drawer-link--logout"> 355 <svg class="icon" aria-hidden="true"><use href="#ti-logout"></use></svg> Log out 356 </button> 357 </form> 358 </div> 359 </div> 360 361 362 <div class="drawer-theme-row"> 363 <div class="theme-switcher theme-switcher--drawer" id="theme-switcher-drawer"> 364 <button class="theme-btn theme-btn--left" data-theme="dark" title="Dark mode" aria-label="Dark mode"><svg class="icon" aria-hidden="true"><use href="#ti-moon"></use></svg></button> 365<button class="theme-btn theme-btn--mid" data-theme="jungle" title="Choco mode" aria-label="Choco mode"><svg class="icon" aria-hidden="true"><use href="#ti-leaf"></use></svg></button> 366<button class="theme-btn theme-btn--right" data-theme="light" title="Light mode" aria-label="Light mode"><svg class="icon" aria-hidden="true"><use href="#ti-sun"></use></svg></button> 367 368 </div> 369 </div> 370 371 </div> 372 </div> 373 374</header> 375
376<script> 377(function () { 378 // ââ Drawer ââââââââââââââââââââââââââââââââââââââââââââââââââ 379 const hamburger = document.getElementById('nav-hamburger'); 380 const drawer = document.getElementById('nav-drawer'); 381 const backdrop = document.getElementById('nav-drawer-backdrop'); 382 const closeBtn = document.getElementById('nav-drawer-close'); 383 384 const panel = drawer.querySelector('.nav-drawer-panel'); 385 386 function openDrawer() { 387 drawer.classList.add('is-open'); 388 drawer.setAttribute('aria-hidden', 'false'); 389 hamburger.setAttribute('aria-expanded', 'true'); 390 panel.removeAttribute('inert'); 391 document.body.style.overflow = 'hidden'; 392 document.documentElement.style.overflow = 'hidden'; 393 } 394 function closeDrawer() { 395 drawer.classList.remove('is-open'); 396 drawer.setAttribute('aria-hidden', 'true'); 397 hamburger.setAttribute('aria-expanded', 'false'); 398 panel.setAttribute('inert', ''); 399 document.body.style.overflow = ''; 400 document.documentElement.style.overflow = ''; 401 } 402 403 hamburger.addEventListener('click', openDrawer); 404 closeBtn.addEventListener('click', closeDrawer); 405 backdrop.addEventListener('click', closeDrawer); 406 // Close on any link click inside the drawer 407 drawer.querySelectorAll('a').forEach(a => a.addEventListener('click', closeDrawer)); 408 document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeDrawer(); }); 409 410 // ââ Theme switcher ââââââââââââââââââââââââââââââââââââââââââ 411 const root = document.documentElement; 412 const STORAGE = 'theme'; 413 414 function syncButtons(theme) { 415 document.querySelectorAll('.theme-btn').forEach(b => 416 b.classList.toggle('theme-btn--active', b.dataset.theme === theme) 417 ); 418 } 419 420 function applyTheme(theme) { 421 root.setAttribute('data-theme', theme); 422 localStorage.setItem(STORAGE, theme); 423 syncButtons(theme); 424 } 425 426 // Determine initial theme: stored value â system preference â light 427 // Do NOT write to localStorage here â only persist on explicit user choice 428 const stored = localStorage.getItem(STORAGE); 429 const initial = stored || (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); 430 root.setAttribute('data-theme', initial); 431 syncButtons(initial); 432 433 // Wire click handlers + re-sync after full DOM (covers footer buttons too) 434 document.addEventListener('DOMContentLoaded', () => { 435 document.querySelectorAll('.theme-btn').forEach(btn => 436 btn.addEventListener('click', () => applyTheme(btn.dataset.theme)) 437 ); 438 syncButtons(initial); 439 }); 440})(); 441</script>
441 442 443 444 445<main id="main-content"> 446 447 448 449 450<main class="about-page"> 451 452 <header class="about-page__header"> 453 <h1 class="about-page__title">About Get Raw Milk</h1> 454 <p class="about-page__intro">GetRawMilk.com is the world's largest raw milk database and interactive global map, connecting consumers and producers of unpasteurized dairy across 60+ countries.</p> 455 </header> 456 457 <section class="about-page__stats"> 458 <h2 class="about-page__section-title">By The Numbers</h2> 459 <div class="about-page__stat-line about-page__stat-line--first"> 460 <span class="about-page__stat-num">8,170</span> places to find raw milk 461 </div> 462 <div class="about-page__stat-line"> 463 in <span class="about-page__stat-num">5,117</span> towns 464 </div> 465 <div class="about-page__stat-line about-page__stat-line--last"> 466 and <span class="about-page__stat-num">65</span> countries 467 </div> 468 <div class="about-page__time-accumulated"> 469 <span class="about-page__time-num">7</span><span class="about-page__time-unit"> years, </span><span class="about-page__time-num">11</span><span class="about-page__time-unit"> months</span><br> 470 <span class="about-page__time-label">since the milk map launched</span> 471 </div> 472 </section> 473 474 475 <article class="about-page__content wp-content"> 476<p class="wp-block-paragraph"></p> 477 478 479 480<h2 class="wp-block-heading">Objective</h2> 481 482 483 484<p class="wp-block-paragraph">When I was seeking out my local raw milk farmer for the first time, I could’ve used a website like <a href="https://getrawmilk.com">GetRawMilk.com</a>.</p> 485 486 487 488<p class="wp-block-paragraph">Useful tooling is the central focus of this project. I’m not your doctor, coach, or therapist, I’m your tech and acquisitions (milk) guy. Get Raw Milk’s objective is to streamline the process of consumers becoming raw milk enjoyers by creating tech that facilitates this connection. This is done by making data available and easy to access.</p> 489 490 491 492<h2 class="wp-block-heading">Commitment</h2> 493 494 495 496<p class="wp-block-paragraph">1.) Listing a source will always be free.</p> 497 498 499 500<p class="wp-block-paragraph">2.) Finding a source will always be free.</p> 501 502 503 504<p class="wp-block-paragraph">Get Raw Milk’s map represents every place to get raw milk that has come to my attention. The vast majority of this information was offered to me by the community, freely, with the understanding that I would share it freely.</p> 505 506 507 508<h2 class="wp-block-heading">Brief history of GetRawMilk.com</h2> 509 510 511 512<p class="wp-block-paragraph">GetRawMilk.com is a bootstrapped web app that connects raw milk consumers with raw milk farmers, retailers, and buyers clubs worldwide.</p> 513 514 515 516<p class="wp-block-paragraph">Before expanding nationally, then globally, the project started in 2018 as Washington Raw Milk and displayed a map of Washington. This seminal map was my own, because I hadn’t thought to share it, plotted with farms and retailers selling raw milk so that I could always find a source while exploring the Northwest. I wrapped it into a website, WashingtonRawMilk.com, and shared it with the community.</p> 517 518 519 520<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="601" height="379" src="https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk-601x379.jpg" alt="" class="wp-image-5580" srcset="https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk-601x379.jpg 601w, https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk-300x189.jpg 300w, https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk-150x95.jpg 150w, https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk-768x484.jpg 768w, https://cms.getrawmilk.com/wp-content/uploads/washington-raw-milk.jpg 1000w" sizes="auto, (max-width: 601px) 100vw, 601px" /></figure> 521 522 523 524<p class="wp-block-paragraph">Washington Raw Milk dot com was the first visual map dedicated to finding places to buy raw milk online. RealMilk <a href="https://web.archive.org/web/20210604184825/realmilk.com">had</a> a phone book type of directory to find raw milk at the time, but not a map you could interact with.</p> 525 526 527 528<p class="wp-block-paragraph">2019, Washington Raw Milk expanded nationwide into Get Raw Milk. Allies in other states were asking for a visual map of their own, so I started including them and seeking out listings across the country. I crawled (by hand, not-automated) all over Facebook and Google to find any and all verified-to-still-exist sources nationwide.</p> 529 530 531 532<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="601" height="386" src="https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website-601x386.jpg" alt="" class="wp-image-5587" srcset="https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website-601x386.jpg 601w, https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website-300x193.jpg 300w, https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website-150x96.jpg 150w, https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website-768x494.jpg 768w, https://cms.getrawmilk.com/wp-content/uploads/get-raw-milk-finder-original-website.jpg 1000w" sizes="auto, (max-width: 601px) 100v
532w, 601px" /></figure> 533 534 535 536<p class="wp-block-paragraph">2020, GetRawMilk.com went worldwide and was updated to support <a href="https://getrawmilk.com/search">searching for raw milk</a> quick results to display your nearest sources. This was the biggest update. I took the ol’ Google MyMap and poured that data into a web app I coded myself to offer some new features.</p> 537 538 539 540<p class="wp-block-paragraph">2022, over 2400 farm and retail sources are plotted in 40 countries worldwide. More people are searching, and it’s never been easier to find raw milk.</p> 541 542 543 544<p class="wp-block-paragraph">2023, added support for light and dark modes. I’ve also created separate filtered maps for cow, goat, sheep, donkey, camel, buffalo, and raw A2 milk covering 47 countries worldwide.</p> 545 546 547 548<figure class="wp-block-image size-large"><img decoding="async" src="https://getrawmilk.com/get-raw-milk-meta.jpg" alt=""/></figure> 549 550 551 552<p class="wp-block-paragraph">2024, raw milk farm and off-farm listings (retail, grocery, drop locations, buyers clubs, etc) can now <a href="https://getrawmilk.com/content/raw-milk-farm-and-retail-connections">reference each other</a>. If a farmer has off-farm locations, you can see where they deliver their milk. In the reverse, when viewing off-farm listings, you can see which farms are bringing milk to that listing. 50 countries are now represented on the map with over 4000 listings worldwide.</p> 553 554 555 556<p class="wp-block-paragraph">2025, big focus on expanding the map in Europe, the directory now contains more than 6000 listings worldwide thanks to help from friends in France, Netherlands, Germany, Australia, and more. <a href="https://getrawmilk.com/kefir">Raw milk kefir</a> now has its own map, including ‘kefir’ indicators on farm and retail listings.</p> 557 558 559 560<p class="wp-block-paragraph">Website usage continues to rise. Project updates and relevant screen caps go to <a href="https://instagram.com/getrawmilk">Instagram</a>.</p> 561 562 563 564<p class="wp-block-paragraph">Best way to reach me is email: <a data-type="mailto" data-id="mailto:[email protected]" href="mailto:[email protected]">[email protected]</a></p> 565 566 567 568<p class="wp-block-paragraph">Best way to get updates about the project is <a href="https://getrawmilk.com/subscribe">the newsletter</a>.</p> 569 570 571 572<p class="wp-block-paragraph">GetRawMilk.com will be here to onboard future raw milk consumers as they come.</p> 573 574 575 576<p class="wp-block-paragraph"></p> 577 578 579 580<h2 class="wp-block-heading">Extracurriculars</h2> 581 582 583 584<p class="wp-block-paragraph">The <a href="https://getrawmilk.com/raw-milk-laws">Raw Milk Law Library</a> is a directory of jurisdictions containing links to raw milk relevant laws, news, articles, and historical information to help us understand where each state stands. The goal was to find links to the letter of the law in each state, so we could read them ourselves, and also report on policy improvements.</p> 585 586 587 588<p class="wp-block-paragraph"><a href="https://localfats.com">LocalFats.com</a> was built in January 2022. Find restaurants, bakeries, breweries, cafes, hot bars, cold bars, and other eateries who prepare food using minimally processed fats instead of seed oils. LF was born during the anti- seed oil wave, the crowd coaxed me into creating the website with a copy-paste of GRM’s code. While dieting isn’t an emphasis in my life, I agree that other cooking oils provide more nutrition, and I always wanted a map of restaurants who select nutrient dense food sources. Cooking oil choice presented a fair-enough data point to structure a restaurant map around, plus the more avid seed oil avoiders were willing to help fill the database, so it just worked.</p> 589 590 591 592<p class="wp-block-paragraph"><a href="https://findwool.com" data-type="URL" data-id="https://findwool.com">FindWool.com</a> was built in May 2022. Find makers and manufacturers who produce products made from wool. Haven’t done much with this one, but it’s there.</p> 593 594 595 596<p class="wp-block-paragraph"></p> 597 598 599 600<h2 class="wp-block-heading">Behind the keyboard</h2> 601 602 603 604<p class="wp-block-paragraph">Connor, est 1990, San Diego â PHX â Washington ðºð¸</p> 605 606 607 608<p class="wp-block-paragraph">Web and mobile app developer with 10 years experience building software solutions for lean enterprises, small business, and bootstrapped startups. This project was a tool I built for myself, before I knew it would have a life of its own.</p> 609 610 611 612<p class="wp-block-paragraph">My first job was in commercial steel framing (20-gauge steel stud office skeletons in Arizona). I’ve also been a welder (certified ss/alum TIG), custom shower installer, pizza delivery guy, wanderer, and farmworker. Dad was into steel framing, so that was the best summer job I could easily get and I enjoyed it. He also put me in front of his MS-DOS desktop when I was five, and helped me build an XP desktop out of cheap parts from Fry’
612s Electronics later on, so the possibility of upskilling into app development was deeply rooted.</p> 613 614 615 616<p class="wp-block-paragraph">Food enjoyer. Big fan of dairy foods, independent farmers, and direct-to-consumer sales.</p> 617 618 619 620<p class="wp-block-paragraph"><strong>Why I built GetRawMilk.com</strong></p> 621 622 623 624<p class="wp-block-paragraph">Get Raw Milk started as a map for my own use, since no visual maps for finding raw milk existed at the time. I shared it with the state, then the country, then the world, and it grew. There is no business plan here, and I’ve automated away most of the time it takes to run the project and keep it up to date.</p> 625 626 627 628<p class="wp-block-paragraph">Just a few decades ago, America’s reputation for beer was terrible. Europe had the quality beers, not us. America’s craft brewery scene has gone from sparse to rich in that time. I want that same eruption of culture to happen with cheese, butter, and raw milk. We should have the same or better cheese selection than the English and French. We should have the choice of Jersey, Guernsey, Brown Swiss, Saanen, La Mancha, Nubian and more when selecting milk wherever we go.</p> 629 630 631 632<p class="wp-block-paragraph">I also use this web app while traveling, which must be the most common utility for users who come here multiple times per year. Get Raw Milk is dedicated to just that essential part of your journey: finding your local sources of raw dairy products, worldwide.</p> 633 634 635 636<p class="wp-block-paragraph">This sphere of the Web has no shortage of coaches, personal trainers, chefs, and more who might help you decide if raw milk is right for you. I’m here to make it easy to find raw milk.</p> 637 638 639 640<p class="wp-block-paragraph"><strong>What I eat</strong></p> 641 642 643 644<p class="wp-block-paragraph">Normal food, just better ingredientsânot a dieter or health guru. So how did I get here?</p> 645 646 647 648<p class="wp-block-paragraph">2010, began my dieting/ biohacking exploration. Vegan for 5 months. 2 months good, 3 months bad (stubborn). Raw Primal Diet (<a href="https://getrawmilk.com/content/aajonus-vonderplanitz-fatal-fall">Vonderplanitz</a> era) for 18 months, strict, felt great, zero complaints. Volunteered for cream, gravity separated in buckets at <a href="https://getrawmilk.com/content/final-photos-save-your-dairy-queen-creek-az">Save Your Dairy</a> in Gilbert, AZ. At a potluck in 2012, “am I too good for these beans?” I’m not. By 2014, any desire to rigidly moderate what’s on my plate was gone.</p> 649 650 651 652<p class="wp-block-paragraph">I don’t do dieting. Iâll eat just about anything that anyone else eats and enjoys. I don’t have it in me to be a picky eater, or take part in any sort of self-improvement, without some clear and measurable goal. What remains is the basic imperative to source the best quality food available. Being able to find raw milk, or farms and cheese makers, facilitates that necessity.</p> 653 654 655 656<p class="wp-block-paragraph">Raw milk came with me out of that era. Eventually, I wandered off to find my career in stainless steel and aluminum welding, then web and mobile app development.</p> 657 658 659 660<p class="wp-block-paragraph">Favorite food: rotini with creamy pesto, mushrooms, chicken, plenty of cheese</p> 661 662 663 664<p class="wp-block-paragraph"><strong>Got a podcast? Do interviews?</strong></p> 665 666 667 668<p class="wp-block-paragraph">I do my best to field or refer questions that come through email (<a href="mailto:[email protected]">[email protected]</a>) or the <a href="https://getrawmilk.com/contact">contact form</a>. A lot falls through the cracks, and I am genuinely sorry for that.</p> 669 670 671 672<p class="wp-block-paragraph">Running the podcast circuit sounds to me like a repetitious nightmare. Debate’s role in shaping history is overstated, and our contemporary emphasis on this medium is folly. I will post opinions and context in the <a href="https://getrawmilk.com/content">blog feed</a>, depending on what strikes my interest or appears to be relevant in the greater discourse.</p> 673 674 675 676<p class="wp-block-paragraph">This is a one-guy tech passion project and not “organized” in any traditional sense. The objective is to build and maintain a tool to ensure the availability of raw milk wherever we go, not to build a personal brand or legacy organization. This project contributes code and functionality for this cause.</p> 677 678 679 680<p class="wp-block-paragraph"><strong>
680Got wares? How is this project funded?</strong></p> 681 682 683 684<p class="wp-block-paragraph">I am not above or below hawking some wares, just haven’t spent much time thinking about it. I sell code and technical expertise, anything physical would require more complexity than I have a desire to deal with at the moment.</p> 685 686 687 688<p class="wp-block-paragraph">Shirts are an exception, because they’re printed on-demand by TeeSpring and I touch nothing except the few bucks I get at default pricing. <a href="https://getrawmilk.com/shop">Buy a raw milk shirt</a> to wear the message and send me a few bucks.</p> 689 690 691 692<p class="wp-block-paragraph">Someday I might come up with some value-added product, or custom contraption, or most likely a web or mobile app that I’m willing to sell. Until then, I’m stoked to be running this community-driven project for tips from the <a href="https://getrawmilk.com/tip">milk money page</a>.</p> 693 694 695 696<p class="wp-block-paragraph">Custom web and mobile <a href="https://connorontheweb.com/apps">app development services</a> are also available. If you want to elevate your digital infrastructure, I can provide the experience that built this project to help decide, plan, engineer, and deploy custom apps for your initiative or business.</p> 697 698 699 700<p class="wp-block-paragraph">There are no funding or crypto campaigns associated with this project, but you can send me bitcoin: <a href="https://getrawmilk.com/tip">Leave a tip</a>.</p> 701 702 703 704<p class="wp-block-paragraph"><strong>Email Newsletter</strong></p> 705 706 707 708<p class="wp-block-paragraph">My preferred medium for sharing occasional raw milk and other project-related updates is the newsletter (<a href="https://getrawmilk.com/subscribe">sign up for emails</a>) and more casually <a href="https://instagram.com/getrawmilk">Instagram</a>.</p> 709 710 711 712<h2 class="wp-block-heading">General policy opinion</h2> 713 714 715 716<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"> 717<p class="wp-block-paragraph">France generally has the most permissive raw milk regulatory model, view <a href="https://getrawmilk.com/raw-milk-laws/france">Raw Milk Laws in France</a>. The place where Louis Pasteur discovered germs, then developed heat-treatments and vaccines, never mandated pasteurization.</p> 718</blockquote> 719 720 721 722<p class="wp-block-paragraph"><strong>Standards for commerce</strong></p> 723 724 725 726<p class="wp-block-paragraph">Raw milk farmers should be able to sell raw milk and raw dairy products to mass distributors under effective and reasonable cleanliness standards.</p> 727 728 729 730<p class="wp-block-paragraph">Labeling should inform customers that this milk, cheese, or butter is an unpasteurized product and that it has not been treated with heat, pressure, or radiation to sanitize microbial life.</p> 731 732 733 734<p class="wp-block-paragraph">Consumers also want to buy raw dairy products through grocery stores and delivery services. This adds points of failure to the distribution process, and consumers want to know their milk is safe. The Raw Milk Institute (<a href="https://rawmilkinstitute.org">RAWMI</a>, not affiliated) provides education to farmers, outlines production and testing standards to make sure raw milk is safe for consumers.</p> 735 736 737 738<p class="wp-block-paragraph">View the map of <a href="https://getrawmilk.com/rawmi">farms applying the Raw Milk Institute’s methods</a>.</p> 739 740 741 742<p class="wp-block-paragraph"><strong>Cottage access to market</strong></p> 743 744 745 746<p class="wp-block-paragraph">Small/ micro/ backyard farmers should be free to produce raw milk and raw dairy products to consumers with no restrictions, beyond basic neighborly considerations.</p> 747 748 749 750<p class="wp-block-paragraph">If your neighbor owns a few cows, a few goats, a few sheep, etc, you should not be prohibited from trading a few bucks for food on a regular basis. No cost-prohibitive regulations should stop an informed transaction of food.</p> 751 752 753 754<p class="wp-block-paragraph">See <a href="https://getrawmilk.com/raw-milk-laws/montana">Montana</a> and <a href="https://getrawmilk.com/raw-milk-laws/wyoming">Wyoming</a></p> 755 756 757 758<p class="wp-block-paragraph"><strong>Private Membership Associations</strong></p> 759 760 761 762<p class="wp-block-paragraph">Private Membership Associations should be respected as non-commercial, autonomous, and acting within their rights to determine and grow their foods of choice.</p> 763 764 765 766<p class="wp-block-paragraph">By far, the most diverse farm shop shelves I’ve ever seen have been unregulated and members-only Amish or post-Amish farms. This isn’t going to work at the grocery store, but small-scale deregulation can have some<a href="https://getrawmilk.com/content/raw-milk-wisconsin-farm-after-legal-battle"> great results</a>.</p> 767 768 769 770<p class="wp-block-paragraph"><strong>Bonus</strong></p> 771 772 773 774<p class="wp-block-paragraph">State and local governments, possibly through academia, should provide material and educational support to facilitate safe raw milk production for small-scale producers.</p> 775 776 777 778<p class="wp-block-paragraph"></p> 779 780 781 782 783</article> 784 785 786 <section class="about-page__get-involved"> 787 <h2 class="about-page__section-title">Get Involved</h2> 788 <p class="about-page__get-involved-intro">Help me build and maintain the world's most comprehensive raw milk database:</p> 789 <ul class="about-page__involved-list"> 790 <li><strong>Submit a listing:</strong> <a href="/submit" class="link-primary">Add a raw milk source to the database</a></li> 791 <li><strong>Report updates or corrections:</strong> <a href="/contact" class="link-primary">Contact me with changes</a></li> 792 <li><strong>Support the project:</strong> <a href="/tip" class="link-primary">Contribute financially to keep the map running</a></li> 793 <li><strong>Stay informed:</strong> <a href="/subscribe" class="link-primary">Subscribe to the newsletter</a></li> 794 </ul> 795 </section> 796 797 <div class="about-page__rotator"> 798 <h2 class="about-page__rotator-heading">How to say raw milk in different languages</h2> 799 800 801<section class="rotator-section"> 802 <button 803 type="button" 804 class="rotator-toggle" 805 aria-expanded="false" 806 aria-description="Toggle to show all translations" 807 > 808 <div class="rotator-display"> 809 <p class="rotator-current-phrase">Raw milk</p> 810 <p class="rotator-current-lang">English</p> 811 </div> 812 </button> 813 814 815 <div class="rotator-list"> 816 817 <div class="rotator-item">
818 <span class="rotator-phrase">Raw milk</span> 819 820 <a href="/browse/US" class="rotator-lang" title="Browse in English">English</a> 821 822 </div> 823 824 <div class="rotator-item"> 825 <span class="rotator-phrase">Meolc</span> 826 827 <a href="/browse/UK" class="rotator-lang" title="Browse in Olde English">Olde English</a> 828 829 </div> 830 831 <div class="rotator-item"> 832 <span class="rotator-phrase">Leche cruda</span> 833 834 <a href="/browse/Spain" class="rotator-lang" title="Browse in Spanish">Spanish</a> 835 836 </div> 837 838 <div class="rotator-item"> 839 <span class="rotator-phrase">Leche bronca</span> 840 841 <a href="/browse/Mexico" class="rotator-lang" title="Browse in Mexican Slang">Mexican Slang</a> 842 843 </div> 844 845 <div class="rotator-item"> 846 <span class="rotator-phrase">Lait cru</span> 847 848 <a href="/browse/France" class="rotator-lang" title="Browse in French">French</a> 849 850 </div> 851 852 <div class="rotator-item"> 853 <span class="rotator-phrase">Rohmilch</span> 854 855 <a href="/browse/Germany" class="rotator-lang" title="Browse in German">German</a> 856 857 </div> 858 859 <div class="rotator-item"> 860 <span class="rotator-phrase">Bainne</span> 861 862 <a href="/browse/Ireland" class="rotator-lang" title="Browse in Gaelic">Gaelic</a> 863 864 </div> 865 866 <div class="rotator-item"> 867 <span class="rotator-phrase">Llaeth Amrwd</span> 868 869 <a href="/browse/UK/Wales" class="rotator-lang" title="Browse in Welsh">Welsh</a> 870 871 </div> 872 873 <div class="rotator-item"> 874 <span class="rotator-phrase">Latte crudo</span> 875 876 <a href="/browse/Italy" class="rotator-lang" title="Browse in Italian">Italian</a> 877 878 </div> 879 880 <div class="rotator-item"> 881 <span class="rotator-phrase">Svaigpiens</span> 882 883 <a href="/browse/Latvia" class="rotator-lang" title="Browse in Latvian">Latvian</a> 884 885 </div> 886 887 <div class="rotator-item"> 888 <span class="rotator-phrase">Leite cru</span> 889 890 <a href="/browse/Portugal" class="rotator-lang" title="Browse in Portuguese">Portuguese</a> 891 892 </div> 893 894 <div class="rotator-item"> 895 <span class="rotator-phrase">Rauwe melk</span> 896 897 <a href="/browse/Netherlands" class="rotator-lang" title="Browse in Dutch">Dutch</a> 898 899 </div> 900 901 <div class="rotator-item"> 902 <span class="rotator-phrase">RÃ¥ mjölk</span> 903 904 <a href="/browse/Sweden" class="rotator-lang" title="Browse in Swedish">Swedish</a> 905 906 </div> 907 908 <div class="rotator-item"> 909 <span class="rotator-phrase">RÃ¥ melk</span> 910 911 <a href="/browse/Norway" class="rotator-lang" title="Browse in Norwegian">Norwegian</a> 912 913 </div> 914 915 <div class="rotator-item"> 916 <span class="rotator-phrase">RÃ¥ mælk</span> 917 918 <a href="/browse/Denmark" class="rotator-lang" title="Browse in Danish">Danish</a> 919 920 </div> 921 922 <div class="rotator-item"> 923 <span class="rotator-phrase">Mleko surowe</span> 924 925 <a href="/browse/Poland" class="rotator-lang" title="Browse in Polish">Polish</a> 926 927 </div> 928 929 <div class="rotator-item"> 930 <span class="rotator-phrase">СиÑе молоко</span> 931 932 <a href="/browse/Ukraine" class="rotator-lang" title="Browse in Ukrainian">Ukrainian</a> 933 934 </div> 935 936 <div class="rotator-item"> 937 <span class="rotator-phrase">СÑÑое молоко</span> 938 939 <a href="/browse/Russia" class="rotator-lang" title="Browse in Russian">Russian</a> 940 941 </div> 942 943 <div class="rotator-item"> 944 <span class="rotator-phrase">Sirovo mleko</span> 945 946 <a href="/browse/Serbia" class="rotator-lang" title="Browse in Serbian">Serbian</a> 947 948 </div> 949 950 <div class="rotator-item"> 951 <span class="rotator-phrase">Sirovo mlijeko</span> 952 953 <a href="/browse/Croatia" class="rotator-lang" title="Browse in Croatian">Croatian</a> 954 955 </div> 956 957 <div class="rotator-item">
958 <span class="rotator-phrase">СиÑово млÑко</span> 959 960 <a href="/browse/Bulgaria" class="rotator-lang" title="Browse in Bulgarian">Bulgarian</a> 961 962 </div> 963 964 <div class="rotator-item"> 965 <span class="rotator-phrase">Qumësh i papërpunuar</span> 966 967 <a href="/browse/Albania" class="rotator-lang" title="Browse in Albanian">Albanian</a> 968 969 </div> 970 971 <div class="rotator-item"> 972 <span class="rotator-phrase">Surovo mleko</span> 973 974 <a href="/browse/Slovenia" class="rotator-lang" title="Browse in Slovenian">Slovenian</a> 975 976 </div> 977 978 <div class="rotator-item"> 979 <span class="rotator-phrase">ÎÎ³ÎµÎ»Î±Î´Î¹Î½Ï Î³Î¬Î»Î±</span> 980 981 <a href="/browse/Greece" class="rotator-lang" title="Browse in Greek">Greek</a> 982 983 </div> 984 985 <div class="rotator-item"> 986 <span class="rotator-phrase">ÃiÄ süt</span> 987 988 <a href="/browse/Turkey" class="rotator-lang" title="Browse in Turkish">Turkish</a> 989 990 </div> 991 992 <div class="rotator-item"> 993 <span class="rotator-phrase">Lapte crud</span> 994 995 <a href="/browse/Romania" class="rotator-lang" title="Browse in Romanian">Romanian</a> 996 997 </div> 998 999 <div class="rotator-item"> 1000 <span class="rotator-phrase">Surové mléko</span> 1001 1002 <a href="/browse/Czech%20Republic" class="rotator-lang" title="Browse in Czech">Czech</a> 1003 1004 </div> 1005 1006 <div class="rotator-item"> 1007 <span class="rotator-phrase">Toorpiim</span> 1008 1009 <a href="/browse/Estonia" class="rotator-lang" title="Browse in Estonian">Estonian</a> 1010 1011 </div> 1012 1013 <div class="rotator-item"> 1014 <span class="rotator-phrase">Halib Krudu</span> 1015 1016 <a href="/browse/Malta" class="rotator-lang" title="Browse in Maltese">Maltese</a> 1017 1018 </div> 1019 1020 <div class="rotator-item"> 1021 <span class="rotator-phrase">Nyers tej</span> 1022 1023 <a href="/browse/Hungary" class="rotator-lang" title="Browse in Hungarian">Hungarian</a> 1024 1025 </div> 1026 1027 <div class="rotator-item"> 1028 <span class="rotator-phrase">Raakamaitó</span> 1029 1030 <a href="/browse/Finland" class="rotator-lang" title="Browse in Finnish">Finnish</a> 1031 1032 </div> 1033 1034 <div class="rotator-item"> 1035 <span class="rotator-phrase">Hrátt mjólk</span> 1036 1037 <span class="rotator-lang">Icelandic</span> 1038 1039 </div> 1040 1041 <div class="rotator-item"> 1042 <span class="rotator-phrase">××× ×××××</span> 1043 1044 <span class="rotator-lang">Hebrew</span> 1045 1046 </div> 1047 1048 <div class="rotator-item"> 1049 <span class="rotator-phrase">××× × ×</span> 1050 1051 <span class="rotator-lang">Hebrew Slang</span> 1052 1053 </div> 1054 1055 <div class="rotator-item"> 1056 <span class="rotator-phrase">ØÙÙØ¨ خا٠</span> 1057 1058 <a href="/browse/United%20Arab%20Emirates" class="rotator-lang" title="Browse in Arabic">Arabic</a> 1059 1060 </div> 1061 1062 <div class="rotator-item"> 1063 <span class="rotator-phrase">à¤à¤à¥à¤à¤¾ दà¥à¤§</span> 1064 1065 <a href="/browse/Nepal" class="rotator-lang" title="Browse in Nepali">Nepali</a> 1066 1067 </div> 1068 1069 <div class="rotator-item"> 1070 <span class="rotator-phrase">Ø®Ø§Ù Ø¯ÙØ¯Ú¾</span> 1071 1072 <a href="/browse/Pakistan" class="rotator-lang" title="Browse in Urdu">Urdu</a> 1073 1074 </div> 1075 1076 <div class="rotator-item"> 1077 <span class="rotator-phrase">à¤à¤à¥à¤à¤¾ दà¥à¤§</span> 1078 1079 <a href="/browse/India" class="rotator-lang" title="Browse in Hindi">Hindi</a> 1080 1081 </div> 1082 1083 <div class="rotator-item"> 1084 <span class="rotator-phrase">çä¹³</span> 1085 1086 <a href="/browse/Japan" class="rotator-lang" title="Browse in Japanese">Japanese</a> 1087 1088 </div> 1089 1090 <div class="rotator-item"> 1091 <span class="rotator-phrase">çç奶</span> 1092 1093 <a href="/browse/China" class="rotator-lang" title="Browse in Chinese (Mandarin)">Chinese (Mandarin)</a> 1094 1095 </div> 1096 1097 <div class="rotator-item">
1098 <span class="rotator-phrase">ìì°ì </span> 1099 1100 <span class="rotator-lang">Korean</span> 1101 1102 </div> 1103 1104 <div class="rotator-item"> 1105 <span class="rotator-phrase">à¸à¸¡à¸à¸´à¸</span> 1106 1107 <a href="/browse/Thailand" class="rotator-lang" title="Browse in Thai">Thai</a> 1108 1109 </div> 1110 1111 <div class="rotator-item"> 1112 <span class="rotator-phrase">Susu mentah</span> 1113 1114 <a href="/browse/Indonesia" class="rotator-lang" title="Browse in Indonesian">Indonesian</a> 1115 1116 </div> 1117 1118 <div class="rotator-item"> 1119 <span class="rotator-phrase">Simpleng gatas</span> 1120 1121 <a href="/browse/Philippines" class="rotator-lang" title="Browse in Tagalog">Tagalog</a> 1122 1123 </div> 1124 1125 <div class="rotator-item"> 1126 <span class="rotator-phrase">Susu mentah</span> 1127 1128 <a href="/browse/Malaysia" class="rotator-lang" title="Browse in Malay">Malay</a> 1129 1130 </div> 1131 1132 <div class="rotator-item"> 1133 <span class="rotator-phrase">Rou melk</span> 1134 1135 <a href="/browse/South%20Africa" class="rotator-lang" title="Browse in Afrikaans">Afrikaans</a> 1136 1137 </div> 1138 1139 <div class="rotator-item"> 1140 <span class="rotator-phrase">Maziwa ghafi</span> 1141 1142 <a href="/browse/Tanzania" class="rotator-lang" title="Browse in Swahili">Swahili</a> 1143 1144 </div> 1145 1146 </div> 1147 1148
1148<script> 1149 (function () { 1150 var section = document.currentScript.closest('.rotator-section'); 1151 if (!section) return; 1152 var phrases = [{"language":"English","phrase":"Raw milk","browseUrl":"/browse/US"},{"language":"Olde English","phrase":"Meolc","browseUrl":"/browse/UK"},{"language":"Spanish","phrase":"Leche cruda","browseUrl":"/browse/Spain"},{"language":"Mexican Slang","phrase":"Leche bronca","browseUrl":"/browse/Mexico"},{"language":"French","phrase":"Lait cru","browseUrl":"/browse/France"},{"language":"German","phrase":"Rohmilch","browseUrl":"/browse/Germany"},{"language":"Gaelic","phrase":"Bainne","browseUrl":"/browse/Ireland"},{"language":"Welsh","phrase":"Llaeth Amrwd","browseUrl":"/browse/UK/Wales"},{"language":"Italian","phrase":"Latte crudo","browseUrl":"/browse/Italy"},{"language":"Latvian","phrase":"Svaigpiens","browseUrl":"/browse/Latvia"},{"language":"Portuguese","phrase":"Leite cru","browseUrl":"/browse/Portugal"},{"language":"Dutch","phrase":"Rauwe melk","browseUrl":"/browse/Netherlands"},{"language":"Swedish","phrase":"RÃ¥ mjölk","browseUrl":"/browse/Sweden"},{"language":"Norwegian","phrase":"RÃ¥ melk","browseUrl":"/browse/Norway"},{"language":"Danish","phrase":"RÃ¥ mælk","browseUrl":"/browse/Denmark"},{"language":"Polish","phrase":"Mleko surowe","browseUrl":"/browse/Poland"},{"language":"Ukrainian","phrase":"СиÑе молоко","browseUrl":"/browse/Ukraine"},{"language":"Russian","phrase":"СÑÑое молоко","browseUrl":"/browse/Russia"},{"language":"Serbian","phrase":"Sirovo mleko","browseUrl":"/browse/Serbia"},{"language":"Croatian","phrase":"Sirovo mlijeko","browseUrl":"/browse/Croatia"},{"language":"Bulgarian","phrase":"СиÑово млÑко","browseUrl":"/browse/Bulgaria"},{"language":"Albanian","phrase":"Qumësh i papërpunuar","browseUrl":"/browse/Albania"},{"language":"Slovenian","phrase":"Surovo mleko","browseUrl":"/browse/Slovenia"},{"language":"Greek","phrase":"ÎÎ³ÎµÎ»Î±Î´Î¹Î½Ï Î³Î¬Î»Î±","browseUrl":"/browse/Greece"},{"language":"Turkish","phrase":"ÃiÄ süt","browseUrl":"/browse/Turkey"},{"language":"Romanian","phrase":"Lapte crud","browseUrl":"/browse/Romania"},{"language":"Czech","phrase":"Surové mléko","browseUrl":"/browse/Czech%20Republic"},{"language":"Estonian","phrase":"Toorpiim","browseUrl":"/browse/Estonia"},{"language":"Maltese","phrase":"Halib Krudu","browseUrl":"/browse/Malta"},{"language":"Hungarian","phrase":"Nyers tej","browseUrl":"/browse/Hungary"},{"language":"Finnish","phrase":"Raakamaitó","browseUrl":"/browse/Finland"},{"language":"Icelandic","phrase":"Hrátt mjólk","browseUrl":null},{"language":"Hebrew","phrase":"××× ×××××","browseUrl":null},{"language":"Hebrew Slang","phrase":"××× × ×","browseUrl":null},{"language":"Arabic","phrase":"ØÙÙØ¨ خا٠","browseUrl":"/browse/United%20Arab%20Emirates"},{"language":"Nepali","phrase":"à¤à¤à¥à¤à¤¾ दà¥à¤§","browseUrl":"/browse/Nepal"},{"language":"Urdu","phrase":"Ø®Ø§Ù Ø¯ÙØ¯Ú¾","browseUrl":"/browse/Pakistan"},{"language":"Hindi","phrase":"à¤à¤à¥à¤à¤¾ दà¥à¤§","browseUrl":"/browse/India"},{"language":"Japanese","phrase":"çä¹³","browseUrl":"/browse/Japan"},{"language":"Chinese (Mandarin)","phrase":"çç奶","browseUrl":"/browse/China"},{"language":"Korean","phrase":"ìì°ì ","browseUrl":null},{"language":"Thai","phrase":"à¸à¸¡à¸à¸´à¸","browseUrl":"/browse/Thailand"},{"language":"Indonesian","phrase":"Susu mentah","browseUrl":"/browse/Indonesia"},{"language":"Tagalog","phrase":"Simpleng gatas","browseUrl":"/browse/Philippines"},{"language":"Malay","phrase":"Susu mentah","browseUrl":"/browse/Malaysia"},{"language":"Afrikaans","phrase":"Rou melk","browseUrl":"/browse/South%20Africa"},{"language":"Swahili","phrase":"Maziwa ghafi","browseUrl":"/browse/Tanzania"}]; 1153 if (!phrases.length) return; 1154 1155 var phraseEl = section.querySelector('.rotator-current-phrase'); 1156 var langEl = section.querySelector('.rotator-current-lang'); 1157 var btn = section.querySelector('.rotator-toggle'); 1158 var list = section.querySelector('.rotator-list'); 1159 1160 var idx = 0; 1161 var expanded = false;
1162 var timer = null; 1163 1164 function fade(newPhrase, newLang) { 1165 var swapped = false; 1166 function doSwap() { 1167 if (swapped) return; 1168 swapped = true; 1169 phraseEl.textContent = newPhrase; 1170 langEl.textContent = newLang; 1171 phraseEl.style.opacity = '1'; 1172 langEl.style.opacity = '1'; 1173 } 1174 phraseEl.addEventListener('transitionend', doSwap, { once: true }); 1175 setTimeout(doSwap, 400); 1176 phraseEl.style.opacity = '0'; 1177 langEl.style.opacity = '0'; 1178 } 1179 1180 function startCycle() { 1181 timer = setInterval(function () { 1182 idx = (idx + 1) % phrases.length; 1183 fade(phrases[idx].phrase, phrases[idx].language); 1184 }, 4000); 1185 } 1186 1187 function stopCycle() { 1188 clearInterval(timer); 1189 timer = null; 1190 } 1191 1192 startCycle(); 1193 1194 btn.addEventListener('click', function () { 1195 expanded = !expanded; 1196 btn.setAttribute('aria-expanded', expanded); 1197 if (expanded) { 1198 stopCycle(); 1199 var targetH = list.scrollHeight + 'px'; 1200 list.style.transition = 'none'; 1201 list.style.maxHeight = '0px'; 1202 requestAnimationFrame(function () { 1203 requestAnimationFrame(function () { 1204 list.style.transition = 'max-height 0.4s ease-in-out'; 1205 list.style.maxHeight = targetH; 1206 }); 1207 }); 1208 } else { 1209 list.style.transition = 'max-height 0.15s ease-in'; 1210 list.style.maxHeight = '0px'; 1211 startCycle(); 1212 } 1213 }); 1214 })(); 1215 </script>
1215 1216</section> 1217 1218 1219 </div> 1220 1221 <div class="about-page__select-maps"> 1222 1223<div class="select-maps select-maps--center"> 1224 1225 <div class="select-maps__section"> 1226 <h2 class="select-maps__heading">Find raw milk by species</h2> 1227 <ul class="select-maps__list"> 1228 <li><a href="/cow" title="View all raw cow milk listings" class="species-tag">Cow Milk</a></li> 1229 <li><a href="/a2/cow" title="View all A2 raw cow milk listings" class="species-tag">A2 Cow Milk</a></li> 1230 <li><a href="/goat" title="View all raw goat milk listings" class="species-tag">Goat Milk</a></li> 1231 <li><a href="/sheep" title="View all raw sheep milk listings" class="species-tag">Sheep Milk</a></li> 1232 <li><a href="/donkey" title="View all raw donkey milk listings" class="species-tag">Donkey Milk</a></li> 1233 <li><a href="/camel" title="View all raw camel milk listings" class="species-tag">Camel Milk</a></li> 1234 <li><a href="/buffalo" title="View all raw buffalo milk listings" class="species-tag">Buffalo Milk</a></li> 1235 <li><a href="/mare" title="View all raw mare milk listings" class="species-tag">Mare / Horse Milk</a></li> 1236 <li><a href="/a2" title="View all A2 protein raw milk listings" class="species-tag">A2 Protein</a></li> 1237 </ul> 1238 </div> 1239 1240 <div class="select-maps__section"> 1241 <h2 class="select-maps__heading">Find other raw milk products</h2> 1242 <ul class="select-maps__list"> 1243 <li><a href="/butter" title="View all raw milk butter listings" class="species-tag">Butter</a></li> 1244 <li><a href="/cream" title="View all raw milk cream listings" class="species-tag">Cream</a></li> 1245 <li><a href="/cheese" title="View all raw milk cheese listings" class="species-tag">Cheese</a></li> 1246 <li><a href="/kefir" title="View all raw milk kefir listings" class="species-tag">Kefir</a></li> 1247 <li><a href="/cow/kefir" title="View all raw cow milk kefir listings" class="species-tag">Cow Kefir</a></li> 1248 <li><a href="/goat/kefir" title="View all raw goat milk kefir listings" class="species-tag">Goat Kefir</a></li> 1249 <li><a href="/icecream" title="View all raw milk ice cream listings" class="species-tag">Ice Cream</a></li> 1250 <li><a href="/colostrum" title="View all raw milk colostrum listings" class="species-tag">Colostrum</a></li> 1251 <li><a href="/products" title="View all product maps" class="species-tag">View All Products</a></li> 1252 </ul> 1253 </div> 1254 1255 <div class="select-maps__section"> 1256 <h2 class="select-maps__heading">Find farm meat & eggs</h2> 1257 <ul class="select-maps__list"> 1258 <li><a href="/eggs" title="View all farm fresh egg listings" class="species-tag">Farm Fresh Eggs</a></li> 1259 <li><a href="/beef" title="View all farm-direct beef listings" class="species-tag">Beef</a></li> 1260 <li><a href="/pork" title="View all farm-direct pork listings" class="species-tag">Pork</a></li> 1261 <li><a href="/chicken" title="View all farm-direct chicken listings" class="species-tag">Chicken</a></li> 1262 </ul> 1263 </div> 1264 1265 <div class="select-maps__section"> 1266 <h2 class="select-maps__heading">Follow farms on social media</h2> 1267 <ul class="select-maps__list"> 1268 <li> 1269 <a href="/social/facebook" title="View all farms on Facebook" class="tag-link tag-link--facebook"> 1270 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-facebook"></use></svg> 1271 </a> 1272 </li> 1273 <li> 1274 <a href="/social/instagram" title="View all farms on Instagram" class="tag-link tag-link--instagram"> 1275 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-brand-instagram"></use></svg> 1276 </a> 1277 </li> 1278 <li> 1279 <a href="/social/youtube" title="View all farms on YouTube" class="tag-link tag-link--youtube"> 1280 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-youtube"></use></svg> 1281 </a> 1282 </li> 1283 <li> 1284 <a href="/social/twitter" title="View all farms on X" class="tag-link tag-link--twitter"> 1285 <svg class="tag-link__icon tag-link__icon--x" width="0.75rem" height="0.75rem" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg"><path d="M 714.163 519.284 L 1160.89 0 L 1055.6 0 L 667.137 450.541 L 357.328 0 L 0 0 L 468.492 681.821 L 0 1200 L 105.289 1200 L 521.898 735.218 L 823.975 1200
1285L 1200 1200 L 714.163 519.284 Z" fill="currentColor"/></svg> 1286 </a> 1287 </li> 1288 <li> 1289 <a href="/social/tiktok" title="View all farms on TikTok" class="tag-link tag-link--tiktok"> 1290 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-tiktok"></use></svg> 1291 </a> 1292 </li> 1293 </ul> 1294 </div> 1295 1296 <div class="select-maps__section"> 1297 <h2 class="select-maps__heading">Other ways to find raw milk</h2> 1298 <ul class="select-maps__list"> 1299 <li><a href="/search" title="Search raw milk listings by location" class="species-tag">Search by location</a></li> 1300 <li><a href="/map" title="View all farms using the Global Raw Milk Map" class="species-tag">Raw Milk Global Map</a></li> 1301 <li><a href="/globe" title="View all farms on the 3D Globe" class="species-tag">3D Globe</a></li> 1302 <li><a href="/bitcoin" title="View all farms that accept Bitcoin" class="species-tag">Bitcoin</a></li> 1303 <li><a href="/rawmi" title="View all Raw Milk Institute Farms" class="species-tag">RAWMI</a></li> 1304 <li><a href="/raw-milk-laws" title="View all raw milk laws" class="species-tag">Raw Milk Law Map</a></li> 1305 <li> 1306 <button id="near-me-btn" class="species-tag select-maps__near-me" type="button" 1307 title="Use device location to find raw milk near you" 1308 onclick="selectMapsNearMe(this)"> 1309 <svg class="icon" aria-hidden="true"><use href="#ti-map-pin"></use></svg> Use device location 1310 </button> 1311 </li> 1312 </ul> 1313 </div> 1314 1315</div>
1316<script> 1317function selectMapsNearMe(btn) { 1318 if (!navigator.geolocation) { alert('Geolocation is not supported by your browser.'); return; } 1319 btn.disabled = true; 1320 btn.innerHTML = '<svg class="icon select-maps__spin" aria-hidden="true"><use href="#ti-loader-2"></use></svg> Locating\u2026'; 1321 navigator.geolocation.getCurrentPosition( 1322 function(pos) { window.location.href = '/near/' + pos.coords.latitude.toFixed(5) + '/' + pos.coords.longitude.toFixed(5); }, 1323 function() { 1324 btn.disabled = false; 1325 btn.innerHTML = '<svg class="icon" aria-hidden="true"><use href="#ti-map-pin"></use></svg> Use device location'; 1326 alert('Unable to retrieve your location.'); 1327 } 1328 ); 1329} 1330</script>
1330 1331 1332 </div> 1333 1334</main> 1335 1336<div class="about-page__bottom"> 1337 <div class="about-page__contribute"> 1338 1339<section class="contribute-section"> 1340 <div class="contribute-inner"> 1341 <h2 class="contribute-heading">Contribute</h2> 1342 <p class="contribute-sub">Your support covers hosting, development, and the daily work of keeping listings updated.</p> 1343 1344 <ul class="contribute-list"> 1345 <li class="contribute-card"> 1346 <a href="/submit" class="contribute-card-link"> 1347 <div class="contribute-card-label">Submit a new listing ï¼</div> 1348 <div class="contribute-card-cta">Add a farm to the database</div> 1349 </a> 1350 </li> 1351 <li class="contribute-card"> 1352 <a href="/sponsors" class="contribute-card-link"> 1353 <div class="contribute-card-label">Sponsorships</div> 1354 <div class="contribute-card-cta">Ongoing support with visibility</div> 1355 </a> 1356 </li> 1357 <li class="contribute-card"> 1358 <a href="/tip" class="contribute-card-link"> 1359 <div class="contribute-card-label">Buy me a milk ð¥</div> 1360 <div class="contribute-card-cta">Leave a one-time tip</div> 1361 </a> 1362 </li> 1363 </ul> 1364 1365 <div class="contribute-dancing-cow"> 1366 <img src="/img/dancing-cow.gif" alt="dancing cow" width="148" height="148" /> 1367 </div> 1368 </div> 1369</section> 1370 1371 </div> 1372 <div class="about-page__tip"> 1373 <div class="tip-form-header"> 1374 <h2 class="tip-form-header-title">Support GetRawMilk.com</h2> 1375 <p class="tip-form-header-sub">Mapping raw milk sources by hand since 2018.</p> 1376 <p class="tip-form-header-note muted">Tips keep it free and updated daily.</p> 1377</div> 1378 1379 1380 1381<div 1382 x-data='tipFormFn({"options":[5,10,25,50],"pathname":"/about"})' 1383 x-init="init()" 1384 class="tip-form" 1385> 1386 1387 1388 <h3 class="tip-form__heading">Select a tip amount</h3> 1389 <div class="tip-form__grid"> 1390 1391 <button type="button" 1392 class="amount-btn" 1393 :class="amount === 5 ? 'amount-btn-active' : ''" 1394 @click="amount = 5"> 1395 <span class="tip-form__amount">$5</span> 1396 </button> 1397 1398 <button type="button" 1399 class="amount-btn" 1400 :class="amount === 10 ? 'amount-btn-active' : ''" 1401 @click="amount = 10"> 1402 <span class="tip-form__amount">$10</span> 1403 </button> 1404 1405 <button type="button" 1406 class="amount-btn" 1407 :class="amount === 25 ? 'amount-btn-active' : ''" 1408 @click="amount = 25"> 1409 <span class="tip-form__amount">$25</span> 1410 </button> 1411 1412 <button type="button" 1413 class="amount-btn" 1414 :class="amount === 50 ? 'amount-btn-active' : ''" 1415 @click="amount = 50"> 1416 <span class="tip-form__amount">$50</span> 1417 </button> 1418 1419 </div> 1420 1421 <div class="tip-form__custom-input-wrap"> 1422 <label class="form-label">* Tip amount ($)</label> 1423 <div class="tip-form__input-icon-wrap"> 1424 <span class="tip-form__input-icon">$</span> 1425 <input type="number" min="1" step="1" 1426 x-model.number="amount" 1427 class="input-text tip-form__input-large" 1428 placeholder="Amount" /> 1429 </div> 1430 <p x-show="!amountValid" x-transition class="tip-form__amount-error">Enter an amount of $1 or more.</p> 1431 </div> 1432 1433 1434 <div class="tip-form__email-wrap"> 1435 <label for="tip-email" class="form-label">* Your email</label> 1436 <input id="tip-email" aria-label="Your email address" type="email" x-model="email" autocomplete="email" 1437 class="input-text" 1438 placeholder="" 1439 @input="onEmailInput" /> 1440 </div> 1441 1442 1443 <div x-show="!emailValid" class="tip-form__pre-email"> 1444 <p class="tip-form__pre-email-text" x-text="email ? GRM.emailIssue(email) : 'Please enter a valid email address to generate a secure payment form.'"></p> 1445 <div class="tip-form__pre-email-icons"> 1446 <svg class="icon ti-credit-card tip-form__pre-icon--green tip-form__pre-icon--lg" aria-hidden="true"><use href="#ti-credit-card"></use></svg> 1447 <svg class="icon tip-form__pre-icon--green tip-form__pre-icon--lg" aria-hidden="true"><use href="#ti-brand-apple"></use></svg> 1448 <a href="/tip#alternative-tips" class="tip-form__pre-email-alt" aria-label="See alternative payment options"> 1449 <svg class="icon tip-form__pre-icon--green-sm" aria-hidden="true"><use href="#ti-currency-dollar"></use></svg> 1450 <svg class="icon tip-form__pre-icon--accent tip-form__pre-icon--sm" aria-hidden="true"><use href="#ti-brand-paypal"></use></svg> 1451 <svg class="icon tip-form__pre-icon--orange tip-form__pre-icon--sm" aria-hidden="true"><use href="#ti-currency-bitcoin"></use></svg> 1452 </a> 1453 </div> 1454 </div> 1455 1456
1457 <div x-show="emailValid && !showDetails" class="tip-form__note-toggle-wrap"> 1458 <button type="button" class="add-note-btn" 1459 @click="showDetails = true; $nextTick(() => $el.closest('.tip-form').querySelector('input[x-model=\'name\']').focus())">+ Add note</button> 1460 </div> 1461 1462 1463 <div x-show="emailValid && showDetails" x-transition class="tip-form__details" 1464 x-init="$watch('showDetails', function(v){ if(v) $nextTick(function(){ window.initRteEditors && window.initRteEditors(); }); })"> 1465 <div class="tip-form__detail-row"> 1466 <label class="form-label">Name</label> 1467 <input type="text" x-model="name" autocomplete="name" class="input-text" placeholder="" /> 1468 </div> 1469 <div class="tip-form__detail-row"> 1470 <label class="form-label">Note</label> 1471 <textarea data-rte="tipNote"></textarea> 1472 </div> 1473 </div> 1474 1475 1476 <p x-show="emailValid && amountValid" x-transition class="tip-form__confirmation"> 1477 â You're supporting a free community resource. This is a tip/donation, not a purchase of milk or products. 1478 </p> 1479 1480 1481 <p x-show="errorMsg" x-text="errorMsg" class="tip-form__error"></p> 1482 1483 1484 <div x-show="emailValid && amountValid" x-transition> 1485 1486 <h3 class="quick-pay-heading">Quick checkout</h3> 1487 <div class="quick-pay-row"> 1488 1489 <apple-pay-button id="tip-apple-pay-btn" buttonstyle="black" type="donate" locale="en-US" 1490 style="display:none;width:100%;height:48px;--apple-pay-button-width:100%;--apple-pay-button-height:48px;" 1491 @click="payWithApplePay()"></apple-pay-button> 1492 1493 <div id="tip-google-pay-btn" style="display:none"></div> 1494 1495 1496 <button type="button" id="tip-paypal-btn" class="quick-pay-paypal" hidden> 1497 <svg xmlns="http://www.w3.org/2000/svg" width="60" height="20" viewBox="0 0 101 32" preserveAspectRatio="xMinYMin meet" aria-label="PayPal"><path fill="#003087" d="M 12.237 2.8 L 4.437 2.8 C 3.937 2.8 3.437 3.2 3.337 3.7 L 0.237 23.7 C 0.137 24.1 0.437 24.4 0.837 24.4 L 4.537 24.4 C 5.037 24.4 5.537 24 5.637 23.5 L 6.437 18.1 C 6.537 17.6 6.937 17.2 7.537 17.2 L 10.037 17.2 C 15.137 17.2 18.137 14.7 18.937 9.8 C 19.237 7.7 18.937 6 17.937 4.8 C 16.837 3.5 14.837 2.8 12.237 2.8 Z M 13.137 10.1 C 12.737 12.9 10.537 12.9 8.537 12.9 L 7.337 12.9 L 8.137 7.7 C 8.137 7.4 8.437 7.2 8.737 7.2 L 9.237 7.2 C 10.637 7.2 11.937 7.2 12.637 8 C 13.137 8.4 13.337 9.1 13.137 10.1 Z"/><path fill="#003087" d="M 35.437 10 L 31.737 10 C 31.437 10 31.137 10.2 31.137 10.5 L 30.937 11.5 L 30.637 11.1 C 29.837 9.9 28.037 9.5 26.237 9.5 C 22.137 9.5 18.637 12.6 17.937 17 C 17.537 19.2 18.037 21.3 19.337 22.7 C 20.437 24 22.137 24.6 24.037 24.6 C 27.337 24.6 29.237 22.5 29.237 22.5 L 29.037 23.5 C 28.937 23.9 29.237 24.3 29.637 24.3 L 33.037 24.3 C 33.537 24.3 34.037 23.9 34.137 23.4 L 36.137 10.6 C 36.237 10.4 35.837 10 35.437 10 Z M 30.337 17.2 C 29.937 19.3 28.337 20.8 26.137 20.8 C 25.037 20.8 24.237 20.5 23.637 19.8 C 23.037 19.1 22.837 18.2 23.037 17.2 C 23.337 15.1 25.137 13.6 27.237 13.6 C 28.337 13.6 29.137 14 29.737 14.6 C 30.237 15.3 30.437 16.2 30.337 17.2 Z"/><path fill="#003087" d="M 55.337 10 L 51.637 10 C 51.237 10 50.937 10.2 50.737 10.5 L 45.537 18.1 L 43.337 10.8 C 43.237 10.3 42.737 10 42.337 10 L 38.637 10 C 38.237 10 37.837 10.4 38.037 10.9 L 42.137 23 L 38.237 28.4 C 37.937 28.8 38.237 29.4 38.737 29.4 L 42.437 29.4 C 42.837 29.4 43.137 29.2 43.337 28.9 L 55.837 10.9 C 56.137 10.6 55.837 10 55.337 10 Z"/><path fill="#009cde" d="M 67.737 2.8 L 59.937 2.8 C 59.437 2.8 58.937 3.2 58.837 3.7 L 55.737 23.6 C 55.637 24 55.937 24.3 56.337 24.3 L 60.337 24.3 C 60.737 24.3 61.037 24 61.037 23.7 L 61.937 18 C 62.037 17.5 62.437 17.1 63.037 17.1 L 65.537 17.1 C 70.637 17.1 73.637 14.6 74.437 9.7 C 74.737 7.6 74.437 5.9 73.437 4.7 C 72.237 3.5 70.337 2.8 67.737 2.8 Z M 68.637 10.1 C 68.237 12.9 66.037 12.9 64.037 12.9 L 62.837 12.9 L 63.637 7.7 C 63.637 7.4 63.937 7.2 64.237 7.2 L 64.737 7.2 C 66.137 7.2 67.437 7.2 68.137 8 C 68.637 8.4 68.737 9.1 68.637 10.1 Z"/><path fill="#009cde" d="M 90.937 10 L 87.237 10 C 86.937 10 86.637 10.2 86.637 10.5 L 86.437 11.5 L 86.137 11.1 C 85.337 9.9 83.537 9.5 81.737 9.5 C 77.637 9.5 74.137 12.6 73.437 17 C 73.037 19.2 73.537 21.3 74.837 22.7 C 75.937 24 77.637 24.6 79.537 24.6 C 82.837 24.6 84.737 22.5 84.737 22.5 L 84.537 23.5 C 84.437 23.9 84.737 24.3 85.137 24.3 L 88.537 24.3 C 89.037 24.3 89.537 23.9 89.637 23.4 L 91.637 10.6 C 91.637 10.4 91.337 10 90.937 10 Z M 85.737 17.2 C 85.337 19.3 83.737 20.8 81.537 20.8 C 80.437 20.8 79.637 20.5 79.037 19.8 C 78.437 19.1 78.237 18.2 78.437 17.2 C 78.737 15.1 80.537 13.6 82.637 13.6 C 83.737 13.6 84.537 14 85.137 14.6 C 85.737 15.3 85.937 16.2 85.737 17.2 Z"/><path fill="#009cde" d="M 95.337 3.3 L 92.137 23.6 C 92.037 24 92.337 24.3 92.737 24.3 L 95.937 24.3 C 96.437 24.3 96.937 23.9 97.037 23.4 L 100.237 3.5 C 100.337 3.1 100.037 2.8 99.637 2.8 L 96.037 2.8 C 95.637 2.8 95.437 3 95.337 3.3 Z"/></svg> 1498 </button> 1499 1500 1501 <a href="/tip#alternative-tips" class="quick-pay-link-btn" aria-label="See alternative payment options">
1502 <span class="quick-pay__brand tip-form__brand--cashapp">$</span> 1503 <span class="quick-pay__text tip-form__brand-text--cashapp">Cash App</span> 1504 <span class="quick-pay__sep">|</span> 1505 <span class="quick-pay__text tip-form__brand-text--zelle">Zelle</span> 1506 </a> 1507 1508 1509 </div> 1510 1511 <h3 class="quick-pay-heading">or use a card</h3> 1512 <div id="tip-card-container" class="tip-form__card-container"></div> 1513 <button type="button" 1514 class="btn-primary tip-form__pay-btn" 1515 x-show="cardReady" 1516 :disabled="loading || !amountValid" 1517 @click="payWithCard"> 1518 <span x-show="!loading" x-text="'Pay $' + amount + ' with Card'"></span> 1519 <span x-show="loading" class="tip-form__loading"> 1520 <svg class="tip-form__spinner" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v8z"></path></svg> 1521 Processing... 1522 </span> 1523 </button> 1524 </div> 1525 1526 1527 1528 <p class="tip-form__view-other-ways" x-show="!emailValid" x-transition> 1529 <a href="/tip#alternative-tips" class="text--accent-prominent">View other ways to tip</a> 1530 </p> 1531 1532 1533</div> 1534
1535<script> 1536 (function () { 1537 const __tipAppId = 'sq0idp-nPiqHtBqpVNP7zqGO7JOdA'; 1538 const __tipLocId = 'K4P8F7JQG8448'; 1539 const __tipPaypalClientId = 'ATa-rJ1M-VwW6t8Tn6LCzS4LKwVCPbDQQBqSXe3GHpnzR_GK20m-tyQfFsjhcrPgc04IID26B2sdDc5A'; 1540 1541 function tipFormFn(cfg) { 1542 return { 1543 options: cfg.options || [5, 10, 25, 50], 1544 pathname: cfg.pathname || '/', 1545 amount: 10, 1546 email: '', 1547 name: '', 1548 note: '', 1549 showDetails: false, 1550 loading: false, 1551 cardReady: false, 1552 emailValid: false, 1553 errorMsg: '', 1554 _squareCard: null, 1555 _squareInit: false, 1556 _applePay: null, 1557 _applePayReq: null, 1558 _googlePay: null, 1559 _googlePayReq: null, 1560 _paypalInited: false, 1561 1562 // Server rejects anything under $1 (routes/tip.js), but only after the 1563 // card details are in â so gate the payment UI on it up front. 1564 get amountValid() { 1565 return Number(this.amount) >= 1; 1566 }, 1567 1568 init() { 1569 this.$watch('emailValid', async (valid) => { 1570 if (valid && !this._squareCard && !this._squareInit) { 1571 this._squareInit = true; 1572 await this.$nextTick(); 1573 await this.initSquare(); 1574 } 1575 if (valid && !this._paypalInited && __tipPaypalClientId) { 1576 this._paypalInited = true; 1577 await this.$nextTick(); 1578 await this.initPayPal(); 1579 } 1580 }); 1581 this.$watch('amount', (val) => { 1582 const update = { total: { amount: String(val), label: 'Tip GetRawMilk.com' } }; 1583 if (this._applePayReq) this._applePayReq.update(update).catch(() => {}); 1584 if (this._googlePayReq) this._googlePayReq.update(update).catch(() => {}); 1585 }); 1586 }, 1587 1588 onEmailInput() { 1589 this.emailValid = GRM.isValidEmail(this.email); 1590 }, 1591 1592 async initPayPal() { 1593 if (!__tipPaypalClientId) return; 1594 try { 1595 // Load PayPal v6 SDK 1596 if (!window.paypal) { 1597 await new Promise((resolve, reject) => { 1598 const s = document.createElement('script'); 1599 s.src = 'production' === 'sandbox' 1600 ? 'https://www.sandbox.paypal.com/web-sdk/v6/core' 1601 : 'https://www.paypal.com/web-sdk/v6/core'; 1602 s.onload = resolve; 1603 s.onerror = reject; 1604 document.head.appendChild(s); 1605 }); 1606 } 1607 const sdkInstance = await window.paypal.createInstance({ 1608 clientId: __tipPaypalClientId, 1609 components: ['paypal-payments'], 1610 pageType: 'checkout', 1611 }); 1612 1613 const paymentMethods = await sdkInstance.findEligibleMethods({ currencyCode: 'USD' }); 1614 if (!paymentMethods.isEligible('paypal')) { 1615 console.warn('[PayPal] not eligible for this account/environment'); 1616 return; 1617 } 1618 1619 const self = this; 1620 1621 const session = sdkInstance.createPayPalOneTimePaymentSession({ 1622 async onApprove(data) { 1623 try { 1624 const r = await fetch('/tip/paypal/capture-order', { 1625 method: 'POST', 1626 headers: { 'Content-Type': 'application/json' }, 1627 body: JSON.stringify({ 1628 orderId: data.orderId, 1629 email: self.email, 1630 name: self.name, 1631 note: self.note, 1632 pathname: self.pathname, 1633 }), 1634 }); 1635 if (r.ok) { 1636 window.location.href = '/tip/success'; 1637 } else { 1638 const d = await r.json().catch(() => ({})); 1639 self.errorMsg = d.error || 'PayPal payment failed. Please try again.'; 1640 self.loading = false; 1641 } 1642 } catch (err) { 1643 self.errorMsg = 'Network error. Please try again.'; 1644 self.loading = false;
1645 } 1646 }, 1647 onCancel(data) { 1648 self.loading = false; 1649 }, 1650 onError(err) { 1651 console.error('[PayPal] onError code:', err.code, 'message:', err.message, err); 1652 self.errorMsg = `PayPal error (${err.code || 'unknown'}): ${err.message || 'Please try another payment method.'}`; 1653 self.loading = false; 1654 }, 1655 }); 1656 1657 // Normal flow â set up button 1658 const btn = document.getElementById('tip-paypal-btn'); 1659 if (btn) { 1660 btn.removeAttribute('hidden'); 1661 btn.addEventListener('click', async () => { 1662 self.errorMsg = ''; 1663 const createOrderPromise = (async () => { 1664 const r = await fetch('/tip/paypal/create-order', { 1665 method: 'POST', 1666 headers: { 'Content-Type': 'application/json' }, 1667 body: JSON.stringify({ amount: self.amount }), 1668 }); 1669 const d = await r.json(); 1670 if (!r.ok || !d.orderId) throw new Error(d.error || 'Order creation failed'); 1671 return { orderId: d.orderId }; 1672 })(); 1673 self.loading = true; 1674 try { 1675 await session.start({ presentationMode: 'auto' }, createOrderPromise); 1676 } catch (err) { 1677 console.error('[PayPal] session.start error:', err); 1678 self.errorMsg = err.message || 'PayPal error. Please try again.'; 1679 self.loading = false; 1680 } 1681 }); 1682 } 1683 } catch (err) { 1684 console.error('[PayPal] init failed:', err.message || err); 1685 } 1686 }, 1687 1688 async initSquare() { 1689 if (!window.Square) { 1690 this.errorMsg = 'Payment library unavailable. Please refresh.'; 1691 return; 1692 } 1693 try { 1694 const payments = Square.payments(__tipAppId, __tipLocId); 1695 const card = await payments.card(); 1696 await card.attach('#tip-card-container'); 1697 this._squareCard = card; 1698 this.cardReady = true; 1699 1700 // Apple Pay â use tokenize() directly, no attach() (matches react-square-web-payments-sdk v3) 1701 try { 1702 const appleReq = payments.paymentRequest({ 1703 countryCode: 'US', 1704 currencyCode: 'USD', 1705 total: { amount: String(this.amount), label: 'Tip GetRawMilk.com' }, 1706 }); 1707 const applePay = await payments.applePay(appleReq); 1708 this._applePay = applePay; 1709 this._applePayReq = appleReq; 1710 document.getElementById('tip-apple-pay-btn').style.display = 'block'; 1711 } catch (applePayErr) { console.warn('[Square] Apple Pay unavailable:', applePayErr?.message || applePayErr); } 1712 1713 // Google Pay â attach() renders the button; we call tokenize() on click 1714 try { 1715 const googleReq = payments.paymentRequest({ 1716 countryCode: 'US', 1717 currencyCode: 'USD', 1718 total: { amount: parseFloat(this.amount).toFixed(2), label: 'Tip GetRawMilk.com' }, 1719 }); 1720 const googlePay = await payments.googlePay(googleReq); 1721 await googlePay.attach('#tip-google-pay-btn'); 1722 this._googlePay = googlePay; 1723 this._googlePayReq = googleReq; 1724 // Call tokenize() FIRST (synchronously in the click handler) to keep the user gesture intact. 1725 // Setting Alpine state before tokenize() causes Chrome to lose the gesture context. 1726 const gpContainer = document.getElementById('tip-google-pay-btn'); 1727 gpContainer.addEventListener('click', () => { 1728 const tokenizePromise = googlePay.tokenize(); 1729 this.loading = true; 1730 this.errorMsg = ''; 1731 tokenizePromise.then(async (result) => { 1732 if (result.status === 'OK') { 1733 await this.submitPayment(result.token); 1734 } else { 1735 this.errorMsg = result.errors?.[0]?.message || 'Google Pay failed.'; 1736 this.loading = false;
1737 } 1738 }).catch(() => { 1739 this.errorMsg = 'Google Pay error. Please try again.'; 1740 this.loading = false; 1741 }); 1742 }); 1743 document.getElementById('tip-google-pay-btn').style.display = 'block'; 1744 } catch (googlePayErr) { console.warn('[Square] Google Pay unavailable:', googlePayErr?.message || googlePayErr); } 1745 1746 } catch (err) { 1747 this._squareInit = false; 1748 this.errorMsg = 'Failed to initialize payment form. Please refresh.'; 1749 console.error(err); 1750 } 1751 }, 1752 1753 async payWithApplePay() { 1754 if (!this._applePay) return; 1755 this.loading = true; 1756 this.errorMsg = ''; 1757 try { 1758 const result = await this._applePay.tokenize(); 1759 if (result.status === 'OK') { 1760 await this.submitPayment(result.token); 1761 } else { 1762 this.errorMsg = result.errors?.[0]?.message || 'Apple Pay failed.'; 1763 this.loading = false; 1764 } 1765 } catch (err) { 1766 this.errorMsg = 'Apple Pay error. Please try again.'; 1767 this.loading = false; 1768 } 1769 }, 1770 1771 async payWithCard() { 1772 if (!this._squareCard) return; 1773 this.loading = true; 1774 this.errorMsg = ''; 1775 try { 1776 const result = await this._squareCard.tokenize(); 1777 if (result.status === 'OK') { 1778 await this.submitPayment(result.token); 1779 } else { 1780 this.errorMsg = result.errors?.[0]?.message || 'Card tokenization failed.'; 1781 this.loading = false; 1782 } 1783 } catch (err) { 1784 this.errorMsg = 'Payment error. Please try again.'; 1785 this.loading = false; 1786 } 1787 }, 1788 1789 async submitPayment(sourceId) { 1790 this.loading = true; 1791 this.errorMsg = ''; 1792 try { 1793 this.note = document.querySelector('[data-rte="tipNote"]')?.value || ''; 1794 const res = await fetch('/tip/pay', { 1795 method: 'POST', 1796 headers: { 'Content-Type': 'application/json' }, 1797 body: JSON.stringify({ 1798 sourceId, 1799 amount: this.amount, 1800 email: this.email, 1801 name: this.name, 1802 note: this.note, 1803 pathname: this.pathname, 1804 }), 1805 }); 1806 if (res.ok) { 1807 window.location.href = '/tip/success'; 1808 } else { 1809 const data = await res.json().catch(() => ({})); 1810 this.errorMsg = data.error || 'Payment failed. Please try again.'; 1811 this.loading = false; 1812 } 1813 } catch (err) { 1814 this.errorMsg = 'Network error. Please try again.'; 1815 this.loading = false; 1816 } 1817 }, 1818 }; 1819 } 1820 1821 // Register on window â idempotent (pages may include only one tip form) 1822 window.tipFormFn = tipFormFn; 1823 })(); 1824</script>
1824 1825 1826
1827<script src="https://web.squarecdn.com/v1/square.js"></script>
1827 1828
1829<script src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js" crossorigin="anonymous"></script>
1829 1830 1831 </div> 1832 1833 <div class="about-page__blog"> 1834 1835 1836<section class="blog-preview-section"> 1837 <div class="blog-preview-header"> 1838 <h2>Latest Blog Posts</h2> 1839 </div> 1840 <ul class="blog-preview-grid"> 1841 1842 1843<li class="blog-card"> 1844 <a href="/content/is-raw-cheese-really-raw" class="blog-card-link"> 1845 <div class="blog-card-inner"> 1846 1847 <div class="blog-card-img-wrap"> 1848 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/raw-milk-cheese-labels-evergreen-creamery.jpg" alt="Vacuum-sealed blocks of Evergreen Creamery raw milk cheese from Trout Lake, Washington, labeled handmade with organic raw milk, salt, cultures and enzymes" loading="lazy" decoding="async" /> 1849 </div> 1850 1851 <div class="blog-card-body"> 1852 <h3 class="blog-card-title">Is Raw Cheese Really Raw? The Heat the Label May Not Mention</h3> 1853 1854 <div class="blog-card-excerpt"><p>Milk for some raw cheese is heated to 135 to 155°F. How US and EU rules differ, what labels skip, and how to tell if raw cheese is really raw.</p> 1855</div> 1856 1857 </div> 1858 <div class="blog-card-meta"> 1859 1860 <span class="blog-card-category">Guide</span> 1861 1862 1863 <span aria-hidden="true">·</span> 1864 <time class="blog-card-date" datetime="2026-09-27T00:41:25">Sep 27, 2026</time> 1865 1866 1867 <span aria-hidden="true">·</span> 1868 <span class="blog-card-reading-time">8 min read</span> 1869 1870 </div> 1871 </div> 1872 </a> 1873</li> 1874 1875 1876 1877<li class="blog-card"> 1878 <a href="/content/graziers-raw-milk-cheese-recall-e-coli-heated-milk" class="blog-card-link"> 1879 <div class="blog-card-inner"> 1880 1881 <div class="blog-card-img-wrap"> 1882 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/graziers-raw-milk-cheese-recall-e-coli-2026.jpg" alt="Packages of the four recalled Sierra Nevada Graziers Grass-Fed raw milk cheeses: raw medium cheddar, raw sharp cheddar, raw Monterey jack and raw jalapeño jack" loading="lazy" decoding="async" /> 1883 </div> 1884 1885 <div class="blog-card-body"> 1886 <h3 class="blog-card-title">Graziers Raw Milk Cheese Recall: E. coli Outbreak, Milk Reportedly Heated to 135°F</h3> 1887 1888 <div class="blog-card-excerpt"><p>Sierra Nevada recalled all Graziers raw milk cheese after E. coli O26 sickened 13 in nine states. A retailer listing says the milk is heated to 135°F.</p> 1889</div> 1890 1891 </div> 1892 <div class="blog-card-meta"> 1893 1894 <span class="blog-card-category">Action</span> 1895 1896 1897 <span aria-hidden="true">·</span> 1898 <time class="blog-card-date" datetime="2026-09-26T23:24:21">Sep 26, 2026</time> 1899 1900 1901 <span aria-hidden="true">·</span> 1902 <span class="blog-card-reading-time">6 min read</span> 1903 1904 </div> 1905 </div> 1906 </a> 1907</li> 1908 1909 1910 1911<li class="blog-card"> 1912 <a href="/content/kenya-milk-shortage-raw-milk-crackdown-2026" class="blog-card-link"> 1913 <div class="blog-card-inner"> 1914 1915 <div class="blog-card-img-wrap"> 1916 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/kenya-men-carrying-milk-cans-rural-road.jpg" alt="Two men walk along a misty rural road in Kenya carrying aluminium milk cans, beside a motorcycle taxi rider in a yellow vest." loading="lazy" decoding="async" /> 1917 </div> 1918 1919 <div class="blog-card-body"> 1920 <h3 class="blog-card-title">Kenya’s 2026 Milk Shortage and the Raw Milk Hawking Crackdown</h3> 1921 1922 <div class="blog-card-excerpt"><p>Kenya began a milk hawking crackdown in May 2026. By September, supermarket milk ran short. What the law allows, the penalties and the arrest claims.</p> 1923</div> 1924 1925 </div> 1926 <div class="blog-card-meta"> 1927 1928 <span class="blog-card-category">Policy</span> 1929 1930 1931 <span aria-hidden="true">·</span> 1932 <time class="blog-card-date" datetime="2026-09-22T00:32:22">Sep 22, 2026</time> 1933 1934 1935 <span aria-hidden="true">·</span>
1936 <span class="blog-card-reading-time">17 min read</span> 1937 1938 </div> 1939 </div> 1940 </a> 1941</li> 1942 1943 1944 1945<li class="blog-card"> 1946 <a href="/content/pasteur-1857-lactic-fermentation-memoir" class="blog-card-link"> 1947 <div class="blog-card-inner"> 1948 1949 <div class="blog-card-img-wrap"> 1950 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/pasteur-lactic-fermentation-memoir-1857.jpg" alt="Title page of Pasteur's 1857 memoir on lactic fermentation, reading Mémoire sur la fermentation appelée lactique, par M. L. Pasteur, Membre résidant, Séance du 3 août 1857." loading="lazy" decoding="async" /> 1951 </div> 1952 1953 <div class="blog-card-body"> 1954 <h3 class="blog-card-title">What Pasteur Wrote About Milk: The 1857 Memoir on Lactic Fermentation</h3> 1955 1956 <div class="blog-card-excerpt"><p>Pasteur’s 1857 memoir identified the living organism that sours milk. He named it lactic yeast, then spent his career on wine and beer instead.</p> 1957</div> 1958 1959 </div> 1960 <div class="blog-card-meta"> 1961 1962 <span class="blog-card-category">History</span> 1963 1964 1965 <span aria-hidden="true">·</span> 1966 <time class="blog-card-date" datetime="2026-09-12T12:53:25">Sep 12, 2026</time> 1967 1968 1969 <span aria-hidden="true">·</span> 1970 <span class="blog-card-reading-time">12 min read</span> 1971 1972 </div> 1973 </div> 1974 </a> 1975</li> 1976 1977 1978 1979<li class="blog-card"> 1980 <a href="/content/can-ranchers-sell-beef-without-usda-inspection" class="blog-card-link"> 1981 <div class="blog-card-inner"> 1982 1983 <div class="blog-card-img-wrap"> 1984 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/paper-wrapped-frozen-beef-packages-general-store.jpg" alt="Paper-wrapped packages of beef stacked on a worn wooden table in a small general store" loading="lazy" decoding="async" /> 1985 </div> 1986 1987 <div class="blog-card-body"> 1988 <h3 class="blog-card-title">Can Ranchers Now Sell Beef Without USDA Inspection?</h3> 1989 1990 <div class="blog-card-excerpt"><p>Two executive orders signed September 4, 2026 do not let ranchers sell uninspected beef. What they actually direct, and the labeling review that matters more.</p> 1991</div> 1992 1993 </div> 1994 <div class="blog-card-meta"> 1995 1996 <span class="blog-card-category">Policy</span> 1997 1998 1999 <span aria-hidden="true">·</span> 2000 <time class="blog-card-date" datetime="2026-09-04T16:54:31">Sep 4, 2026</time> 2001 2002 2003 <span aria-hidden="true">·</span> 2004 <span class="blog-card-reading-time">12 min read</span> 2005 2006 </div> 2007 </div> 2008 </a> 2009</li> 2010 2011 2012 2013<li class="blog-card"> 2014 <a href="/content/where-does-american-ground-beef-come-from" class="blog-card-link"> 2015 <div class="blog-card-inner"> 2016 2017 <div class="blog-card-img-wrap"> 2018 <img class="blog-card-img" src="https://cms.getrawmilk.com/wp-content/uploads/beef-steer-farmyard-shed-cattle-origin.jpg" alt="A red and white faced beef steer looking around the corner of a metal farm shed in a yard" loading="lazy" decoding="async" /> 2019 </div> 2020 2021 <div class="blog-card-body"> 2022 <h3 class="blog-card-title">Where Does American Ground Beef Come From? What the Label Doesn’t Say</h3> 2023 2024 <div class="blog-card-excerpt"><p>Most US ground beef blends imported lean trim with domestic fat, and carries no origin label. How the rules work, and how to find beef you can trace.</p> 2025</div> 2026 2027 </div> 2028 <div class="blog-card-meta"> 2029 2030 <span class="blog-card-category">Guide</span> 2031 2032 2033 <span aria-hidden="true">·</span> 2034 <time class="blog-card-date" datetime="2026-09-04T12:21:05">Sep 4, 2026</time> 2035 2036 2037 <span aria-hidden="true">·</span> 2038 <span class="blog-card-reading-time">14 min read</span> 2039 2040 </div> 2041 </div> 2042 </a> 2043</li> 2044 2045 2046 </ul> 2047 <div class="blog-preview-footer">
2048 <a href="/content" class="btn-primary">View all posts</a> 2049 </div> 2050</section> 2051 2052 2053 </div> 2054 2055</div> 2056 2057 2058 2059
2059<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","name":"GetRawMilk.com","url":"https://getrawmilk.com","description":"GetRawMilk.com is the world's largest raw milk database and interactive global map, connecting consumers and producers of unpasteurized dairy across 61 countries."},{"@type":"Organization","name":"GetRawMilk.com","url":"https://getrawmilk.com","foundingDate":"2018","foundingLocation":{"@type":"Place","name":"Washington State, USA"},"description":"GetRawMilk.com is a bootstrapped, community-funded raw milk farm directory and interactive map serving 100,000+ monthly users across 61 countries. Listing and finding raw milk is always free.","logo":{"@type":"ImageObject","url":"https://getrawmilk.com/aurochs-stamp-black.png"},"image":["https://getrawmilk.com/logos/share-get-raw-milk-black-on-white.jpg","https://getrawmilk.com/get-raw-milk-meta.jpg"],"email":"[email protected]","contactPoint":{"@type":"ContactPoint","email":"[email protected]","contactType":"customer support","areaServed":"Worldwide","availableLanguage":"English"},"sameAs":["https://instagram.com/getrawmilk"],"founder":{"@type":"Person","name":"Connor","url":"https://connorontheweb.com"},"numberOfEmployees":{"@type":"QuantitativeValue","value":1}},{"@type":"Person","name":"Connor","url":"https://connorontheweb.com","jobTitle":"Full Stack Web and Mobile App Developer","description":"Connor is a Washington-based software developer and the founder of GetRawMilk.com, the world's largest raw milk farm directory. He has been building software solutions for lean enterprises and bootstrapped startups since 2018.","worksFor":{"@type":"Organization","name":"ConnorOnTheWeb","url":"https://connorontheweb.com"},"owns":{"@type":"WebSite","name":"GetRawMilk.com","url":"https://getrawmilk.com"},"knowsAbout":["Raw milk","Dairy farming","Food freedom","React","React Native","Full stack web development","Mobile app development"],"address":{"@type":"PostalAddress","addressRegion":"Washington","addressCountry":"US"},"sameAs":["https://instagram.com/getrawmilk","https://connorontheweb.com"]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"GetRawMilk.com","item":"https://getrawmilk.com"},{"@type":"ListItem","position":2,"name":"About","item":"https://getrawmilk.com/about"}]},{"@type":"WebPage","name":"About GetRawMilk.com","headline":"About GetRawMilk.com | Raw Milk Database & Global Map","description":"Learn about GetRawMilk.com â the world's largest raw milk farm directory and interactive map with 7,000+ listings across 61 countries. Built and maintained by Connor, a Washington-based software developer.","url":"https://getrawmilk.com/about","inLanguage":"en","dateModified":"2026-03-19T00:00:00Z","author":{"@type":"Person","name":"Connor","url":"https://connorontheweb.com"},"publisher":{"@type":"Organization","name":"GetRawMilk.com","url":"https://getrawmilk.com","logo":{"@type":"ImageObject","url":"https://getrawmilk.com/aurochs-stamp-black.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://getrawmilk.com/about"},"about":{"@type":"Organization","name":"GetRawMilk.com","url":"https://getrawmilk.com"},"image":{"@type":"ImageObject","url":"https://getrawmilk.com/get-raw-milk-meta.jpg"},"keywords":"GetRawMilk.com, about, raw milk database, raw milk map, raw milk directory, who built GetRawMilk, raw milk finder"},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is GetRawMilk.com?","acceptedA
2059nswer":{"@type":"Answer","text":"GetRawMilk.com is the world's largest raw milk farm directory and interactive global map. It connects consumers with farms, retailers, buyers clubs, and herdshares selling raw and unpasteurized dairy products across 61 countries. The directory contains over 7,000 listings and is free to use."}},{"@type":"Question","name":"Who built GetRawMilk.com?","acceptedAnswer":{"@type":"Answer","text":"GetRawMilk.com was built and is maintained by Connor, a full stack web and mobile app developer based in Washington State. He started the project in 2018 as a personal map of Washington raw milk sources and expanded it nationally, then globally. It is an independent, bootstrapped project with no investors or outside funding."}},{"@type":"Question","name":"Is GetRawMilk.com free to use?","acceptedAnswer":{"@type":"Answer","text":"Yes. Listing a raw milk source on GetRawMilk.com is always free, and finding a raw milk source is always free. The project is funded entirely by voluntary tips and donations from the community."}},{"@type":"Question","name":"How is GetRawMilk.com funded?","acceptedA
2059nswer":{"@type":"Answer","text":"GetRawMilk.com is community-funded through voluntary tips and donations. There are no investors, no paywalls, no advertising, and no private equity involvement. Supporters can leave a tip at getrawmilk.com/tip via card, PayPal, Cash App, Zelle, or Bitcoin."}},{"@type":"Question","name":"How do I add a raw milk farm or source to the directory?","acceptedAnswer":{"@type":"Answer","text":"You can submit a new raw milk listing for free at getrawmilk.com/submit. The directory accepts farms, retailers, buyers clubs, herdshares, and other direct-to-consumer raw dairy sources worldwide."}},{"@type":"Question","name":"How do I report an update or correction to an existing listing?","acceptedAnswer":{"@type":"Answer","text":"Updates and corrections to existing listings can be submitted via the contact form at getrawmilk.com/contact or by emailing [email protected]."}},{"@type":"Question","name":"When did GetRawMilk.com launch?","acceptedAnswer":{"@type":"Answer","text":"GetRawMilk.com launched in 2018 as WashingtonRawMilk.com, a personal map of raw milk sources in Washington State. It expanded nationally in 2019 and went worldwide in 2020. As of 2026 it covers 61 countries with over 7,000 listings."}},{"@type":"Question","name":"What types of raw milk sources are listed on GetRawMilk.com?","acceptedA
2059nswer":{"@type":"Answer","text":"The directory includes on-farm direct sales, retail stores, grocery locations, drop points, buyers clubs, and herdshare arrangements. It covers cow, goat, sheep, donkey, camel, and buffalo milk, as well as raw dairy products including butter, cream, cheese, kefir, and ice cream."}},{"@type":"Question","name":"Does GetRawMilk.com cover countries outside the United States?","acceptedAnswer":{"@type":"Answer","text":"Yes. GetRawMilk.com is a global directory with listings in 61 countries. You can explore sources worldwide using the interactive map at getrawmilk.com/map or the 3D globe at getrawmilk.com/globe."}},{"@type":"Question","name":"Does GetRawMilk.com do podcast interviews or media appearances?","acceptedAnswer":{"@type":"Answer","text":"Questions and interview requests can be sent to [email protected] or via the contact form at getrawmilk.com/contact. The project's preferred medium for sharing updates and opinions is the blog at getrawmilk.com/content and the email newsletter."}},{"@type":"Question","name":"What other projects is GetRawMilk.com related to?","acceptedA
2059nswer":{"@type":"Answer","text":"GetRawMilk.com is part of a small family of related directories built by the same developer. LocalFats.com maps restaurants and eateries that cook with minimally processed fats instead of seed oils. FindWool.com maps makers and manufacturers who produce wool products."}}]},{"@type":"Dataset","name":"GetRawMilk.com Raw Milk Farm Directory","description":"A global database of raw milk farms, retailers, buyers clubs, and herdshares. Contains 7,000+ listings across 61 countries, covering cow, goat, sheep, camel, buffalo, and donkey milk as well as raw dairy products including butter, cream, cheese, and kefir.","url":"https://getrawmilk.com","creator":{"@type":"Person","name":"Connor","url":"https://connorontheweb.com"},"publisher":{"@type":"Organization","name":"GetRawMilk.com","url":"https://getrawmilk.com"},"license":"https://getrawmilk.com/privacy-policy","spatialCoverage":{"@type":"Place","name":"Worldwide"},"temporalCoverage":"2018/..","keywords":"raw milk, unpasteurized milk, dairy farms, raw milk directory, farm directory, food freedom","isAccessibleForFree":true,"about":{"@type":"Thing","name":"Raw milk","sameAs":"https://en.wikipedia.org/wiki/Raw_milk"}}]}</script>
2059 2060 2061 2062 2063</main> 2064 2065<footer class="site-footer"> 2066 <div class="footer-inner"> 2067 2068 2069 <div class="footer-newsletter"> 2070 <h2>Subscribe to the newsletter</h2> 2071 <p>Your info is never shared with data brokers.</p> 2072 <div x-data="{ 2073 email: '', 2074 firstName: '', 2075 lastName: '', 2076 showName: false, 2077 loading: false, 2078 errorMsg: '', 2079 isEmail(s) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s); }, 2080 async submit() { 2081 this.loading = true; this.errorMsg = ''; 2082 try { 2083 const res = await fetch('https://cms.getrawmilk.com/wp-json/newsletter/v2/subscriptions', { 2084 method: 'POST', 2085 headers: { 'Content-Type': 'application/json' }, 2086 body: JSON.stringify({ email: this.email, first_name: this.firstName, last_name: this.lastName }), 2087 }); 2088 if (res.ok) { window.location.href = '/subscribe/success'; } 2089 else { this.errorMsg = 'Subscription failed. Please try again.'; this.loading = false; } 2090 } catch { this.errorMsg = 'Network error. Please try again.'; this.loading = false; } 2091 } 2092}"> 2093 <div class="subscribe-stack"> 2094 <input type="email" x-model="email" class="input-text" placeholder="Enter your email" autocomplete="email" aria-label="Email address" /> 2095 <p class="field-hint-error" x-show="email && GRM.emailIssue(email)" x-text="GRM.emailIssue(email)"></p> 2096 2097 2098 <div class="subscribe-slide form-field--conditional" :class="{ 'active': isEmail(email) && !showName }"> 2099 <button type="button" class="subscribe-add-name" @click="showName = true">+ Add your name (optional)</button> 2100 </div> 2101 2102 2103 <div class="subscribe-slide form-field--conditional-lg" :class="{ 'active': showName }"> 2104 <div class="subscribe-name-row"> 2105 <div> 2106 <label class="form-label text--tiny">First name</label> 2107 <input type="text" x-model="firstName" class="input-text" autocomplete="given-name" /> 2108 </div> 2109 <div> 2110 <label class="form-label text--tiny">Last name</label> 2111 <input type="text" x-model="lastName" class="input-text" autocomplete="family-name" /> 2112 </div> 2113 </div> 2114 </div> 2115 2116 <p x-show="errorMsg" x-text="errorMsg" class="subscribe-error"></p> 2117 2118 2119 <div class="subscribe-slide form-field--conditional-md" :class="{ 'active': isEmail(email) }"> 2120 <div class="subscribe-submit-wrap"> 2121 <button type="button" class="btn-primary" :disabled="loading" @click="submit"> 2122 <span x-show="!loading">Subscribe</span> 2123 <span x-show="loading" class="subscribe-loading"> 2124 <svg class="animate-spin icon--md" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v8z"></path></svg> 2125 Subscribing... 2126 </span> 2127 </button> 2128 </div> 2129 </div> 2130 </div> 2131</div> 2132 2133 </div> 2134 2135 <div class="footer-columns"> 2136 2137 2138 <div class="footer-col"> 2139 <div class="footer-brand"> 2140 <img src="/aurochs-stamp-black.png" alt="GetRawMilk" class="footer-aurochs-img bucking" width="45" height="84" /> 2141 <div class="footer-brand-text"> 2142 <a href="/" class="footer-brand-name">GetRawMilk.com</a> 2143 <div class="footer-tagline">Find raw milk worldwide</div> 2144 </div> 2145 </div> 2146 <a href="mailto:[email protected]" class="footer-email">[email protected]</a> 2147 2148 <ul class="footer-list"> 2149 <li><a href="/tip" class="footer-tip-link" title="Contribute to the project"> 2150 <span class="footer-tip-label">Buy me a milk</span> 2151 <span class="footer-tip-payment-icons"> 2152 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg> 2153 <svg class="icon text-btn-icon__payment-paypal" aria-hidden="true"><use href="#ti-brand-paypal"></use></svg> 2154 <svg class="icon text-btn-icon__payment-apple" aria-hidden="true"><use href="#ti-brand-apple"></use></svg> 2155 <svg class="icon text-btn-icon__payment-cash" aria-hidden="true"><use href="#ti-currency-dollar"></use></svg> 2156 <svg class="icon text-btn-icon__payment-bitcoin" aria-hidden="true"><use href="#ti-currency-bitcoin"></use></svg> 2157 </span> 2158 </a></li> 2159 <li><a href="https://www.paypal.com/ncp/payment/8PVJBG68LN47N" target="_blank" rel="noopener"><svg class="icon" aria-hidden="true"><use href="#ti-brand-paypal"></use></svg> Donate via PayPal</a></li> 2160 <li><a href="https://cash.app/$connorontheweb" target="_blank" rel="noopener"><svg class="icon" aria-hidden="true"><use href="#ti-brand-cashapp"></use></svg> Donate via Cash App</a></li> 2161 <li><a href="https://enroll.zellepay.com/qr-codes?data=eyJ0b2tlbiI6ImluZm9AZ2V0cmF3bWlsay
21615jb20iLCJuYW1lIjoiQVJUSFVSIFRVUFBFUiIsImFjdGlvbiI6IlBheW1lbnQifQ==" target="_blank" rel="noopener"><svg class="icon" aria-hidden="true"><use href="#ti-currency-dollar"></use></svg> Donate via Zelle</a></li> 2162 <li> 2163 <button class="footer-copy-btn" onclick="navigator.clipboard.writeText('bc1qux7ehgyn7w2ze8n8gxxsq5xpnhk4uuzf5vaqljjh08wnhag92s9ssx6njx').then(() => this.textContent = 'â Copied!')" type="button"><svg class="icon" aria-hidden="true"><use href="#ti-currency-bitcoin"></use></svg> Copy BTC address</button> 2164 </li> 2165 <li><a href="/tip"><svg class="icon" aria-hidden="true"><use href="#ti-heart-handshake"></use></svg> See other ways to tip</a></li> 2166 <li><a href="https://shop.getrawmilk.com" target="_blank" rel="noopener"><svg class="icon" aria-hidden="true"><use href="#ti-shopping-bag"></use></svg> Buy raw milk shirts</a></li> 2167 </ul> 2168 2169 <ul class="footer-list"> 2170 <li><a href="/subscribe">Subscribe to emails</a></li> 2171 <li><a href="/content">Read the blog feed</a></li> 2172 <li><a href="/content/category">View blog categories</a></li> 2173 <li><a href="/feed.xml"><svg class="icon footer-rss-icon" aria-hidden="true"><use href="#ti-rss"></use></svg> getrawmilk.com/feed.xml</a></li> 2174 <li> 2175 <button class="footer-copy-btn" onclick="navigator.clipboard.writeText('https://getrawmilk.com').then(() => this.textContent = 'â Copied!')" type="button"><svg class="icon" aria-hidden="true"><use href="#ti-copy"></use></svg> Copy link to this website</button> 2176 </li> 2177 <li> 2178 <button class="footer-copy-btn" onclick="navigator.share ? navigator.share({ url: 'https://getrawmilk.com', title: 'Get Raw Milk', text: 'Find raw milk worldwide' }) : navigator.clipboard.writeText('https://getrawmilk.com')" type="button"><svg class="icon" aria-hidden="true"><use href="#ti-share-3"></use></svg> Share link to this website</button> 2179 </li> 2180 </ul> 2181 </div> 2182 2183 2184 <div class="footer-col footer-col--find"> 2185 <h2>Find raw milk</h2> 2186 <ul class="footer-list"> 2187 <li><a href="/map">Raw Milk Global Map</a></li> 2188 <li><a href="/globe">Raw Milk 3D Globe</a></li> 2189 <li><a href="/browse">Browse by country</a></li> 2190 <li><a href="/species">Raw milk by species</a></li> 2191 <li><a href="/products">Raw milk by product</a></li> 2192 <li><a href="/search">Search raw milk by location</a></li> 2193 <li><a href="/submit">Submit a new raw milk listing</a></li> 2194 </ul> 2195 2196 <div class="footer-tags"> 2197 2198 2199 2200<ul class="species-tags-links "> 2201 2202 <li><a href="/cow" title="View all raw cow milk listings" class="species-tag">Cow Milk</a></li> 2203 <li><a href="/a2/cow" title="View all A2 raw cow milk listings" class="species-tag">A2 Cow Milk</a></li> 2204 <li><a href="/goat" title="View all raw goat milk listings" class="species-tag">Goat Milk</a></li> 2205 <li><a href="/sheep" title="View all raw sheep milk listings" class="species-tag">Sheep Milk</a></li> 2206 <li><a href="/donkey" title="View all raw donkey milk listings" class="species-tag">Donkey Milk</a></li> 2207 <li><a href="/camel" title="View all raw camel milk listings" class="species-tag">Camel Milk</a></li> 2208 <li><a href="/buffalo" title="View all raw buffalo milk listings" class="species-tag">Buffalo Milk</a></li> 2209 <li><a href="/a2" title="View all A2 protein raw milk listings" class="species-tag">A2</a></li> 2210 <li><a href="/butter" title="View all raw milk butter listings" class="species-tag">Butter</a></li> 2211 <li><a href="/cream" title="View all raw milk cream listings" class="species-tag">Cream</a></li> 2212 <li><a href="/cheese" title="View all raw milk cheese listings" class="species-tag">Cheese</a></li> 2213 <li><a href="/kefir" title="View all raw milk kefir listings" class="species-tag">Kefir</a></li> 2214 <li><a href="/icecream" title="View all raw milk ice cream listings" class="species-tag">Ice Cream</a></li> 2215 <li><a href="/eggs" title="View all farm fresh eggs" class="species-tag">Eggs</a></li> 2216 2217 <li><a href="/beef" title="View all farm-direct beef listings" class="species-tag">
2217Beef</a></li> 2218 <li><a href="/pork" title="View all farm-direct pork listings" class="species-tag">Pork</a></li> 2219 <li><a href="/chicken" title="View all farm-direct chicken listings" class="species-tag">Chicken</a></li> 2220 2221 2222 2223 <li> 2224 <a href="/rawmi" title="View all Raw Milk Institute listings" class="tag-link tag-link--rawmi"> 2225 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-microscope"></use></svg> 2226 <span>RAWMI</span> 2227 </a> 2228 </li> 2229 <li> 2230 <a href="/raw-milk-laws" title="Raw Milk Laws" class="tag-link tag-link--laws"> 2231 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-section-sign"></use></svg> 2232 <span>Laws</span> 2233 </a> 2234 </li> 2235 <li class="tag-link--social-start" aria-hidden="true"></li> 2236 <li> 2237 <a href="/social/facebook" title="View farms on Facebook" class="tag-link tag-link--facebook"> 2238 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-facebook"></use></svg> 2239 </a> 2240 </li> 2241 <li> 2242 <a href="/social/instagram" title="View farms on Instagram" class="tag-link tag-link--instagram"> 2243 <svg class="tag-link__icon icon" aria-hidden="true"><use href="#ti-brand-instagram"></use></svg> 2244 </a> 2245 </li> 2246 <li> 2247 <a href="/social/youtube" title="View farms on YouTube" class="tag-link tag-link--youtube"> 2248 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-youtube"></use></svg> 2249 </a> 2250 </li> 2251 <li> 2252 <a href="/social/twitter" title="View farms on X" class="tag-link tag-link--twitter"> 2253 <svg class="tag-link__icon tag-link__icon--x" width="0.75rem" height="0.75rem" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg"><path d="M 714.163 519.284 L 1160.89 0 L 1055.6 0 L 667.137 450.541 L 357.328 0 L 0 0 L 468.492 681.821 L 0 1200 L 105.289 1200 L 521.898 735.218 L 823.975 1200 L 1200 1200 L 714.163 519.284 Z" fill="currentColor"/></svg> 2254 </a> 2255 </li> 2256 <li> 2257 <a href="/social/tiktok" title="View farms on TikTok" class="tag-link tag-link--tiktok"> 2258 <svg class="tag-link__icon icon icon--filled" aria-hidden="true"><use href="#ti-filled-brand-tiktok"></use></svg> 2259 </a> 2260 </li> 2261</ul> 2262 2263 </div> 2264 </div> 2265 2266 </div> 2267 2268 2269 <div class="footer-aurochs-section"> 2270 <div class="digital-aurochs"> 2271 <div class="digital-aurochs__scene"> 2272 <img src="/img/friends/grm-sanchezutrerase-bottle.png" alt="milk bottle" class="digital-aurochs__bottle digital-aurochs__bottle--left floating" width="131" height="264" aria-hidden="true" /> 2273 <img src="/img/friends/grm-sanchezutrerase-bottle.png" alt="milk bottle" class="digital-aurochs__bottle digital-aurochs__bottle--center floating" width="131" height="264" aria-hidden="true" /> 2274 <img src="/img/friends/grm-sanchezutrerase-bottle.png" alt="milk bottle" class="digital-aurochs__bottle digital-aurochs__bottle--right floating" width="131" height="264" aria-hidden="true" /> 2275 <img src="/img/friends/grm-sanchezutrerase-bull.png" alt="dancing bull" class="digital-aurochs__bull" width="168" height="209" aria-hidden="true" /> 2276 </div> 2277 <p class="digital-aurochs__credit"> 2278 Digital aurochs from <a href="/map/el-redil-de-mi-tio-carlos-san-cristobal">Jonhangel</a> 2279 </p> 2280</div> 2281 2282 </div> 2283 2284 2285 <div class="footer-legal"> 2286 <p>Website and data are community driven, offered as-is.</p> 2287 <p>Nothing here should be considered health/ legal advice.</p> 2288 <p>Need assistance accessing this website? <a href="/contact">Ask for help</a></p> 2289 <p>Copy and share the website link: 2290 <button class="footer-copy-btn" onclick="navigator.clipboard.writeText('https://getrawmilk.com').then(() => this.textContent = 'â getrawmilk.com')" type="button" aria-label="Copy link to this website">getrawmilk.com</button> 2291 </p> 2292 <p>Hire me to build <a href="https://connorontheweb.com/apps" target="_blank" rel="noopener">apps, websites, and more</a></p> 2293 <nav class="footer-legal-links" aria-label="Legal links"> 2294 <a href="/about">About</a> 2295 <a href="/contact">Contact</a> 2296 <a href="/tip">Donate</a> 2297 <a href="/faq">FAQ</a> 2298 <a href="/privacy-policy">Privacy</a> 2299 </nav> 2300 <div class="theme-switcher theme-switcher--footer" id="theme-switcher-footer"> 2301 <button class="theme-btn theme-btn--left" data-theme="dark" title="Dark mode" aria-label="Dark mode"><svg class="icon" aria-hidden="true"><use href="#ti-moon"></use></svg></button> 2302<button class="theme-btn theme-btn--mid" data-theme="jungle" title="Choco mode" aria-label="Choco mode"><svg class="icon" aria-hidden="true"><use href="#ti-leaf"></use></svg></button> 2303<button class="theme-btn theme-btn--right" data-theme="light" title="Light mode" aria-label="Light mode"><svg class="icon" aria-hidden="true"><use href="#ti-sun"></use></svg></button> 2304 2305 </div> 2306 <div class="footer-made">Made in Seattle ðºð¸</div> 2307 <div class="footer-copy">
2308 <span>2018-2026</span> 2309 <span>©</span> 2310 <a href="https://connorontheweb.com" target="_blank" rel="noopener" class="footer-copy-link">ConnorOnTheWeb</a> 2311 </div> 2312 </div> 2313 2314 </div> 2315</footer> 2316 2317 2318
2319<script defer src="/vendor/alpinejs/dist/cdn.min.js"></script>
2319 2320 2321
2322<script src="/vendor/jodit/jodit.min.js"></script>
2322 2323
2324<script src="/js/main.js"></script>
2324 2325 2326
2327<script>document.querySelectorAll('a[href]').forEach(function(a){if(!a.hasAttribute('tabindex'))a.setAttribute('tabindex','0');});</script>
2327 2328 2329 2330 2331 2332 2333 2334<div id="greeting-biscuit" class="greeting-biscuit greeting-biscuit--hidden" role="complementary" aria-label="Support GetRawMilk" aria-live="polite"> 2335 <div class="greeting-biscuit__body"> 2336 <div class="greeting-biscuit__top"> 2337 <a href="/about" class="greeting-biscuit__pfp-link" title="About GetRawMilk" onclick="trackEvent('Banner - Profile Tap', { page: '/about' })"> 2338 </a> 2339 <p class="greeting-biscuit__message">The original raw milk map, updated daily.<br>Free to use, kept going by tips like yours.</p> 2340 </div> 2341 <div class="greeting-biscuit__actions"> 2342 <a href="/submit" class="greeting-biscuit__action" title="Submit a listing"> 2343 <span class="greeting-biscuit__action-label">Add a listing</span> 2344 <span class="greeting-biscuit__action-sub"> 2345 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg> 2346 </span> 2347 </a> 2348 <a href="/tip" class="text-btn text-btn--support greeting-biscuit__btn-tip" title="Contribute to the project"> 2349 <span class="text-btn-label">Buy me a milk</span> 2350 <span class="text-btn-icon text-btn-icon--payments greeting-biscuit__payment-icons" aria-hidden="true"> 2351 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg> 2352 <svg class="icon text-btn-icon__payment-paypal" aria-hidden="true"><use href="#ti-brand-paypal"></use></svg> 2353 <svg class="icon text-btn-icon__payment-apple" aria-hidden="true"><use href="#ti-brand-apple"></use></svg> 2354 <svg class="icon text-btn-icon__payment-cash" aria-hidden="true"><use href="#ti-currency-dollar"></use></svg> 2355 <svg class="icon text-btn-icon__payment-bitcoin" aria-hidden="true"><use href="#ti-currency-bitcoin"></use></svg> 2356 </span> 2357 </a> 2358 </div> 2359 <div class="greeting-biscuit__bottom"> 2360 <p>Connecting farmers and consumers worldwide, est. 2018</p> 2361 </div> 2362 </div> 2363 <button class="greeting-biscuit__close" onclick="window.__dismissBiscuit()" type="button" title="Dismiss" aria-label="Dismiss">â</button> 2364</div> 2365
2366<script> 2367(function() { 2368 var today = new Date().toLocaleDateString(); 2369 var el = document.getElementById('greeting-biscuit'); 2370 if (!el) return; 2371 2372 var shown = false; 2373 var timer = null; 2374 2375 // Slide out. Used both by the â button and by the form guard below; only the 2376 // â records the daily dismissal. 2377 function retract() { 2378 el.classList.add('greeting-biscuit--out'); 2379 setTimeout(function() { 2380 el.classList.add('greeting-biscuit--hidden'); 2381 el.classList.remove('greeting-biscuit--out'); 2382 }, 500); 2383 } 2384 2385 window.__dismissBiscuit = function() { 2386 localStorage.setItem('biscuit', today); 2387 retract(); 2388 }; 2389 2390 // Form guard: the popup is fixed to the bottom-left, which is where the 2391 // subscribe and tip forms sit, so it can cover fields someone is filling in. 2392 // The first time any field on the page takes focus, cancel the pending popup 2393 // â or pull it back if it already slid in. Pageview-scoped on purpose: it 2394 // does not write the `biscuit` key, so the next page still gets one chance. 2395 // Sitewide search is exempt (top of the page, nothing to collide with, and a 2396 // search is transient in a way that filling in a form is not). 2397 document.addEventListener('focusin', function onFirstFieldFocus(e) { 2398 var t = e.target; 2399 if (!t || !t.closest) return; 2400 if (!t.closest('input, textarea, select, [contenteditable]')) return; 2401 if (t.closest('.search-input-wrap')) return; 2402 if (el.contains(t)) return; 2403 document.removeEventListener('focusin', onFirstFieldFocus, true); 2404 if (timer) { clearTimeout(timer); timer = null; } 2405 if (shown) retract(); 2406 }, true); 2407 2408 var last = localStorage.getItem('biscuit'); 2409 if (last === today) return; 2410 2411 timer = setTimeout(function() { 2412 timer = null; 2413 shown = true; 2414 el.classList.remove('greeting-biscuit--hidden'); 2415 el.classList.add('greeting-biscuit--in'); 2416 // Apply tabindex=0 to links now â the foot.ejs script ran before this 2417 // partial was in the DOM, so Safari wouldn't tab to them otherwise. 2418 el.querySelectorAll('a[href]').forEach(function(a) { 2419 if (!a.hasAttribute('tabindex')) a.setAttribute('tabindex', '0'); 2420 }); 2421 }, 12000); 2422})(); 2423</script>
2423 2424 2425 2426</body> 2427</html> 2428
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.