Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened
Rug & Tack Cleaner Duo | Queened Wash + Buff Queened - Horse Queened

Rug & Tack Cleaner Duo | Queened Wash + Buff Queened

$67.95
Tax included.

“Instantly cool, vibrant, and my horse loves it!”

James L., Horse Owner

SIZE
Only 95 left in stock!

Pickup available at 578 Coorong Avenue, Red Cliffs, VIC

Usually ready in 24 hours

same day shipping for orders before 11:30am AEST

30 day money back guarantee

Satisfaction guaranteed or your money back

Product Description

Queened Wash + Buff Queened

Because your horse deserves gear that smells like effort… not the stable.

👑 Meet the Power Duo Your Tack Room Has Been Begging For

Two iconic Purple Side favourites.
Two completely different jobs.
One goal: make your gear look like you actually clean it.

Say hello to:

💜 QUEENED WASH — the fabric-saf, anti- static rug & gear cleaner
💜 BUFF QUEENED — the leather/ synthetic & tack polish spray

Together, they’re the chaotic-cleaning, fresh-smelling, “my horse looks put together even when I’m not” duo of your dreams.

QUEENED WASH

Rug & Gear Cleaner + Anti-Static Softening Formula

This is the “I don’t have time to soak a rug” solution.
A heavy-duty yet fabric-gentle wash that:

  • removes dust, sweat, mud & stable smell

  • keeps cotton, canvas, mesh & synthetics soft

  • reduces static (no more crackly rugs!)

  • gives everything a fresh, comfy finish

Rugs, pads, boots, stable gear — if your horse has sweated on it, rolled on it, or body-slammed hay into it… Queened Wash can handle it.

Australian-made, non-toxic, Purple Side approved.


💜 BUFF QUEENED

Leather & Tack Cleaner + Conditioner Spray

Your tack deserves better than a baby wipe.
Buff Queened gently cleans, conditions & adds a polished sheen to:

  • saddles

  • bridles

  • halters

  • girths

  • riding boots

  • synthetic tack

  • anything your horse has slobbered on

Powered by natural plant cleansers + beautiful organic oils, it gives your tack that soft, nourished, just-ridden-by-a-royal look.

Warm cedarwood & sweet orange = smells like effort.
No stickiness. No heaviness. Just shine.


💜 WHY YOU NEED BOTH

QUEENED WASH = Fresh fabrics

Rugs, pads, girths, boots → soft, clean, comfy.

BUFF QUEENED = Polished tack

Tack → nourished, shiny, “I care about my horse” energy.

Your stable = instantly more respectable

Even if your car is a mess.

THE VIBE CHECK

If you:
✔ love purple
✔ love shiny things
✔ love pretending you’re organised
✔ love products that actually work

…you’re going to be obsessed with this duo.

💜 INCLUDES

  • 1 × Queened Wash (1000ml)

  • 1 × Buff Queened (500ml)

  • plus a purple cleaning mit for maximum main-character energy

💜 THE PURPLE SIDE PROMISE

Made in Australia.
Made by horse people.
Made to make your stable life easier.

Because clean gear looks good & feels good

How to Use

+

No care instructions available.

Ingredients & Safety

+
Gentle formulas for sensitive horses & everyday gear.

We keep things simple, safe and horse-friendly — always.

✔ Non-toxic ingredients
✔ No harsh detergents
✔ Safe for daily use
✔ Fabric-friendly + tack-friendly
✔ Soft on skin, strong on grime
✔ Australian-made in small batches

Whether you’re freshening rug linings, cleaning halters, or polishing leather, everything in this kit is designed to be gentle, effective and worry-free.

Because clean shouldn’t mean harsh.

Lightweight gel with a fresh, cooling feel

Subtle herbal scent — no overpowering odours

Non-greasy, fast-absorbing formula

Gentle on sensitive skin

Made in Australia with natural ingredients

FREQUENTLY ASKED QUESTIONS

Whether you've got questions about your gear, shipping, or anything in between - we've got answers. And if we don't, we'll get back to you fast.

When will my order ship?

Same day shipping if placed before 11.30am AEST, fast daily shipping

How do I track my order?

Head to our Track Order page and enter your email and order number. You’ll get real-time updates on your shipment status.

What’s your return policy?

We offer a 30-day performance guarantee. If you’re not satisfied with your purchase, reach out to us and we’ll make it right - no questions asked.

Do you offer international shipping?

Yes! We ship worldwide. Shipping rates and delivery times are calculated at checkout based on your location.

How do I contact customer support?

Use the contact form from the “Support” page. Please allow 24 business hours for a response from our support team.

are your products safe?

Sure! All natural, cosmetic formulas, external use only, not a veterinary product.

Recently viewed

/* 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. }); })();