Three steps. That's it.
1
Grab It
Drag the yellow button above into your bookmarks bar.
3
Clip 'Em All
Click the bookmark. Sit back. Every coupon gets clipped automatically.
What's Happening Under the Hood
The script scrolls through your entire coupon list, loads every single one (even the ones Kroger hides behind "Load More"), then clicks each "Clip" button with a short delay so Kroger's servers don't freak out. Takes about 3–4 minutes instead of 20+ minutes of manual tapping.
💰 Saves ~15 min every trip- Right-click your bookmarks bar → "Add bookmark"
- Name it whatever you want
- Paste the code below into the URL field
- Save. Done.
javascript:(function(){console.log("Starting Auto Coupon Clipper...");let clipped=0;const delay=ms=>new Promise(r=>setTimeout(r,ms));const log=msg=>console.log(`[Clipper] ${msg}`);async function preloadAll(){log("Preloading all coupons...");let prev=0,stable=0;const start=Date.now();while(Date.now()-start<60000){const count=document.querySelectorAll(`[data-testid*="CouponCard-"]`).length;log(`Coupons loaded: ${count}`);if(count===prev){stable++;if(stable>=3)break;}else stable=0;prev=count;window.scrollTo({top:document.documentElement.scrollHeight,behavior:"instant"});const endEvent=new KeyboardEvent("keydown",{key:"End",keyCode:35,bubbles:true});document.dispatchEvent(endEvent);const loadMore=document.querySelector(`[data-testid*="load-more"], [data-testid*="LoadMore"]`)||[...document.querySelectorAll("button")].find(b=>b.textContent.toLowerCase().includes("load more"));if(loadMore&&!loadMore.disabled)loadMore.click();await delay(2000);}log(`Preloaded ${document.querySelectorAll(`[data-testid*="CouponCard-"]`).length} coupons`);window.scrollTo({top:0,behavior:"smooth"});await delay(1000);}async function clipAll(){const selectors=[`[data-testid*="CouponActionButton"]:not([aria-label*="Unclip"])`,`button[aria-label*="Clip"]:not([aria-label*="Unclip"])`];const buttons=[];selectors.forEach(sel=>{try{document.querySelectorAll(sel).forEach(btn=>{const label=(btn.getAttribute("aria-label")||"").toLowerCase();const text=btn.textContent.trim().toLowerCase();if((label.includes("clip")&&!label.includes("unclip"))||(text.includes("clip")&&!text.includes("unclip")))buttons.push(btn);});}catch(e){}});const unique=[...new Set(buttons)];log(`Found ${unique.length} clippable coupons`);for(const btn of unique){try{const card=btn.closest(`[data-testid*="CouponCard-"]`);const title=card?.querySelector(`[data-testid*="CouponTitle-"], .CouponCard-heading`)?.textContent.trim()||"Unknown";log(`Clipping: ${title}`);btn.scrollIntoView({behavior:"smooth",block:"center"});await delay(300);btn.click();await delay(1000);clipped++;log(`Clipped: ${title} (${clipped} total)`);}catch(e){log(`Error clipping: ${e.message}`);}}}async function run(){await preloadAll();await clipAll();log(`Complete! Clipped ${clipped} coupons total`);alert(`Coupon Clipper Complete!\n\nClipped ${clipped} coupons total.\n\nCheck the browser console for detailed logs.`);}run();})();
End of Aisle
