Everyday Grooming Essentials

Your everyday grooming essentials for clean, shiny, comfortable horses — made with natural ingredients for real horse life. 💜
From quick clean-ups to coat conditioning and whitening, our range is designed to make everyday grooming simple, gentle and effective.

Loading products...
501 RESULTS

Swash It.

Wow! Spray, Wipe, And Suddenly They Look Like They’ve Had A Full Pamper. Amazing Products. Love Horse Queened

Jordan C. - Sydney
★★★★★
Detangle It - Horse QueenedDetangle It - Horse Queened

Detangle It

Lightweight gloss with zero sticky residue
Effortless spray-through detangling
Instant glass-like shine. No water dilution
300ml MINI
$24.95

Swash It.

Wow! Spray, Wipe, And Suddenly They Look Like They’ve Had A Full Pamper. Amazing Products. Love Horse Queened

Jordan C. - Sydney
★★★★★
Glow It – Natural Coat Shine + Conditioner - Horse Queened

Glow It – Natural Coat Shine + Conditioner

Perfect for daily grooming or show prep
Lightweight shine without greasy residue
Nourishes the coat for a healthy glow
100ml Mini
$14.95
Polish It – Hoof Royalty - Horse QueenedPolish It – Hoof Royalty - Horse Queened

Polish It – Hoof Royalty

Designed to come off easily after use (not a long-term coating)
Dries quickly for stress-free show mornings
Delivers a sleek, polished, show-ready hoof finish
Crowned Clear- clear gloss
$47.95
Purple Mixing Set - Horse QueenedPurple Mixing Set - Horse Queened

Purple Mixing Set

Makes applying Sock It, clays, and washes easier
Designed to suit everyday horse care routines
Keeps mixing tidy and controlled
Bowl + Spatula Set
$4.95
New

Chaos Cloth

Keep one in your kit. One in your float.
Perfect for applying finishing products
Quick, easy clean-ups. No fuss
Purple
$5.00
Manifest It - Horse Queened

Manifest It

Light, refreshing grooming and presentation spray
No greasy residue or build-up
Naturally scented for a calm, feel-good grooming moment
500ml
$32.95
Purple Chaos Caddy - Horse QueenedPurple Chaos Caddy - Horse Queened

Purple Chaos Caddy

Made for chaos, cleans up nicely
Stands upright, easy access
Corrals your care and grooming chaos
Purple
$79.95
New

Chaos Scrubber – Textured Exfoliating Wash Cloth for Horses

Supports a deeper clean
Soft and flexible design. Saves your back
Helps lift dirt and grime
Purple
$8.95
New

The Shed Happens Duo – Horse Shedding Made Simple

Leaves a healthy-looking shine
Lifts dirt, dust and buildup from the coat
Helps loosen shedding hair for easier removal
1000ml & 500ml
$79.95
1 of 1

UNLEASH YOUR HORSE'S BEST SHINE

Transform every grooming session into a spa-like experience, so your horse enjoys a healthy, glossy coat every day.

Premium Care Proven Results

Trusted by riders for stronger hooves and softer coats, this is the quality care your horse truly deserves.

/* Product zoom: mouse-follow + touch toggle Works with: product-zoom-element[data-magnify], .product-zoom--wrapper, .product-zoom--enlarged */ (() => { const ZOOM_ATTR = 'data-magnify'; const roots = Array.from(document.querySelectorAll(`product-zoom-element[${ZOOM_ATTR}]`)); if (!roots.length) return; roots.forEach(root => { // ensure root is focusable for keyboard access if (!root.hasAttribute('tabindex')) root.setAttribute('tabindex', '0'); const wrapper = root.querySelector('.product-zoom--wrapper'); const enlarged = root.querySelector('.product-zoom--enlarged'); if (!wrapper) return; const rawZoom = parseFloat(root.getAttribute('data-magnify')) || 1.7; let effectiveZoom = rawZoom; // may be increased if high-res image is larger let isZoomed = false; // compute effective zoom based on the natural size of the enlarged image (if available) function updateEffectiveZoom() { try { if (enlarged && enlarged.naturalWidth && root.offsetWidth) { const imageRatio = enlarged.naturalWidth / root.offsetWidth; // we want at least rawZoom but if enlarged image is bigger, allow larger zoom effectiveZoom = Math.max(rawZoom, imageRatio); } else { effectiveZoom = rawZoom; } } catch (err) { effectiveZoom = rawZoom; } } if (enlarged) { if (enlarged.complete) updateEffectiveZoom(); else enlarged.addEventListener('load', updateEffectiveZoom, { once: true }); // also update on window resize (image/container geometry changes) window.addEventListener('resize', () => { updateEffectiveZoom(); }); } // Utility: set transform-origin and scale for enlarged image function setOriginAndScale(clientX, clientY) { const rect = root.getBoundingClientRect(); // clamp values 0..100 const x = Math.min(100, Math.max(0, ((clientX - rect.left) / rect.width) * 100)); const y = Math.min(100, Math.max(0, ((clientY - rect.top) / rect.height) * 100)); if (enlarged) { enlarged.style.transformOrigin = `${x}% ${y}%`; enlarged.style.transform = `scale(${effectiveZoom})`; } // slight parallax: move wrapper transform-origin to follow cursor (subtle) wrapper.style.transformOrigin = `${x}% ${y}%`; } // Activate zoom (add class, set scale) function activateZoom(clientX, clientY) { updateEffectiveZoom(); root.classList.add('is-zoomed'); isZoomed = true; if (typeof clientX === 'number' && typeof clientY === 'number') { setOriginAndScale(clientX, clientY); } else { // center if no coordinates provided if (enlarged) { enlarged.style.transformOrigin = `50% 50%`; enlarged.style.transform = `scale(${effectiveZoom})`; } wrapper.style.transformOrigin = `50% 50%`; } } // Deactivate zoom (reset transforms) function deactivateZoom() { root.classList.remove('is-zoomed'); isZoomed = false; if (enlarged) { enlarged.style.transform = 'scale(1)'; enlarged.style.transformOrigin = '50% 50%'; } wrapper.style.transform = 'scale(1)'; wrapper.style.transformOrigin = '50% 50%'; } // Mouse handlers function onMouseMove(e) { if (!isZoomed) activateZoom(e.clientX, e.clientY); else setOriginAndScale(e.clientX, e.clientY); } function onMouseEnter(e) { // activate but don't force a jump — set origin from event activateZoom(e.clientX, e.clientY); } function onMouseLeave() { deactivateZoom(); } // Touch handlers (simple toggle on first tap; move origin while zoomed) let lastTouchEnd = 0; function onTouchStart(e) { if (e.touches.length > 1) { // ignore pinch for now — allow browser default return; } const t = e.touches[0]; // toggle on tap if (!isZoomed) { activateZoom(t.clientX, t.clientY); } else { // if already zoomed, just update origin (user may pan) setOriginAndScale(t.clientX, t.clientY); } } function onTouchMove(e) { if (!isZoomed || e.touches.length === 0) return; const t = e.touches[0]; setOriginAndScale(t.clientX, t.clientY); } function onTouchEnd(e) { // if touchend with no subsequent touches, keep zoom active; second tap will close. // implement a quick double-tap-to-close const now = Date.now(); if (now - lastTouchEnd < 300) { // double-tap detected -> close deactivateZoom(); } lastTouchEnd = now; } // Keyboard (Enter/Space toggles) function onKeyDown(e) { if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') { e.preventDefault(); if (!isZoomed) activateZoom(root.getBoundingClientRect().left + root.offsetWidth / 2, root.getBoundingClientRect().top + root.offsetHeight / 2); else deactivateZoom(); } else if (e.key === 'Escape' && isZoomed) { deactivateZoom(); } } // Bind events root.addEventListener('mousemove', onMouseMove); root.addEventListener('mouseenter', onMouseEnter); root.addEventListener('mouseleave', onMouseLeave); // touch: use passive listeners where safe root.addEventListener('touchstart', onTouchStart, { passive: true }); root.addEventListener('touchmove', onTouchMove, { passive: true }); root.addEventListener('touchend', onTouchEnd, { passive: true }); root.addEventListener('keydown', onKeyDown); // Clean up in case element is removed (optional) // If you dynamically remove elements, consider removing listeners to avoid leaks. }); })();