PageSourceSearch

https://getrawmilk.com/about

html getrawmilk.com collected 2026-10-02 06:28:42 UTC 135,647 bytes, 2,428 lines download raw bytes

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&#39;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&#8217;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&#8217;m not your doctor, coach, or therapist, I&#8217;m your tech and acquisitions (milk) guy. Get Raw Milk&#8217;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&#8217;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&#8217;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&#8217; 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&#8217;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&#8217;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 &#8216;kefir&#8217; 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&#8217;s code. While dieting isn&#8217;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&#8217;t done much with this one, but it&#8217;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&#8217;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&#8217;
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&#8217;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&#8217;s reputation for beer was terrible. Europe had the quality beers, not us. America&#8217;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&#8217;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, &#8220;am I too good for these beans?&#8221; I&#8217;m not. By 2014, any desire to rigidly moderate what&#8217;s on my plate was gone.</p>
649
650
651
652<p class="wp-block-paragraph">I don&#8217;t do dieting. I’ll eat just about anything that anyone else eats and enjoys. I don&#8217;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&#8217;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 &#8220;organized&#8221; 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&#8217;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&#8217;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&#8217;m willing to sell. Until then, I&#8217;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&#8217;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&#8217;ve ever seen have been unregulated and members-only Amish or post-Amish farms. This isn&#8217;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 &amp; 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&#8217;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&#39;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&#8217;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&#8217;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.