92% polyester, 8% spandex. Machine wash cold at 30°C. Do not bleach. Tumble dry low. No ironing needed — the collar holds its set.
1 / 15
Hustle Performance Polo Shirt£49.99 £24.99
Colour
Size
1
What golfers say
Independent reviews, collected from Stuburt retailers.
4.6 / 5from 5 reviews
★★★★☆
Brilliant
Good quality as usual comfortable and fits well ordered large and it fits perfectly
Eh · August 2025 · via Amazon
★★★★★
Great choice and good quality
I wanted some casual wear during hot weather. Kept nice and cool during recent hot spell so I bought more. I like the design, quality and there is plenty of different colours and designs to choose from. I Highly recommend the seller who replaced item with a flaw, quickly without any hassle.
Boicey · August 2022 · via Amazon
★★★★★
Top quality shirt
Colour as seen and quality excellent. Prompt service. Very pleased with this purchase as also good value.
Bluefish · July 2021 · via Amazon
★★★★★
Real Headturner
This is a great looking shirt and it stands out from the 'boring golf shirt' crowd. I bought the black one and I wore it on a very hot day (what was i thinking!) however i needn't have worried - the special material kept me cool somehow!
Simon D. · October 2020 · via Amazon
Read more reviews
★★★★☆
Excellent quality and a good fit .
Excellent style and great fitting .
slice · June 2020 · via Amazon
Dry at the 18thMoisture-managed knit
Moves with your swing4-way stretch fabric
True to sizeRegular fit, not athletic
Est. 1860Founded in Britain
Where the price difference actually goes
Where the price difference actually goes
Feature
This polo£24.99
Typical polo£70+
Moisture-managed performance knit
Yes, for Stuburt
Yes, for the comparison polo
Cut for the swing
Yes, for Stuburt
No, for the comparison polo
No superstar mark-up in the price
Yes, for Stuburt
No, for the comparison polo
British sporting house since 1860
Yes, for Stuburt
No, for the comparison polo
Comparison against widely sold branded golf polos at UK RRP.
The fit between baggy and tight
Too tight. Squashes the middle.
This cut
Too baggy. Looks untidy.
Room through the middle, tidy across the shoulders, long enough to stay tucked in.
No sweat patch in the clubhouse
The knit pulls sweat away instead of holding it against you.
Never needs ironing
Wash it, hang it, wear it. No ironing board, no starch.
Passes any dress code
Smart enough for the clubhouse, never looks like sports kit.
The collar you never think about
Nothing to flatten at the turn, nothing to fold back down in the bar.
Est. 1860 · Darren Clarke won The Open in Stuburt shoes, 2011
`;
};
const bindCarousel = () => {
const carousel = section.querySelector('[data-carousel]');
const prev = section.querySelector('[data-direction="prev"]');
const next = section.querySelector('[data-direction="next"]');
if (!carousel) return;
const cardWidth = () => {
const c = carousel.querySelector('.stb-card');
if (!c) return 0;
return c.getBoundingClientRect().width + (parseFloat(getComputedStyle(carousel).gap) || 20);
};
const update = () => {
const max = carousel.scrollWidth - carousel.clientWidth;
// Edge fade: only where there's more to scroll (crisp resting edges).
carousel.toggleAttribute('data-fade-start', carousel.scrollLeft > 2);
carousel.toggleAttribute('data-fade-end', carousel.scrollLeft < max - 2);
if (!prev || !next) return;
prev.disabled = carousel.scrollLeft <= 2;
next.disabled = carousel.scrollLeft >= max - 2;
};
if (prev) prev.addEventListener('click', () => carousel.scrollBy({ left: -cardWidth(), behavior: 'smooth' }));
if (next) next.addEventListener('click', () => carousel.scrollBy({ left: cardWidth(), behavior: 'smooth' }));
carousel.addEventListener('scroll', update, { passive: true });
window.addEventListener('resize', update);
update();
};
/* Adding to cart is handled by the shared web component
(assets/stuburt-quick-pick.js) — it posts to /cart/add.js and dispatches the
`cart:update` event the mini-cart + cart bubble subscribe to, identical to
the SS26 carousel and the collection page. */
const load = async () => {
const handles = getViewed().filter(h => h && h !== currentHandle).slice(0, limit);
if (!handles.length) return; // stays hidden
const results = await Promise.all(
handles.map(h => fetch(`/products/${encodeURIComponent(h)}.js`, { headers: { Accept: 'application/json' }})
.then(r => r.ok ? r.json() : null).catch(() => null))
);
const valid = results.filter(Boolean);
if (!valid.length) return;
const carousel = section.querySelector('[data-carousel]');
carousel.innerHTML = valid.map(cardHTML).join('');
section.removeAttribute('hidden');
bindCarousel();
};
// Clear all: wipe the stored history and hide the section
const bindClearAll = () => {
const btn = section.querySelector('[data-clear-all]');
if (!btn) return;
btn.addEventListener('click', () => {
setViewed([]);
section.setAttribute('hidden', '');
});
};
bindClearAll();
// If we already have stored handles, reveal section so skeletons show while fetching
if (getViewed().filter(h => h && h !== currentHandle).length > 0) {
section.removeAttribute('hidden');
}
load();
})();
Cookie consent
We and our partners use cookies to personalise your experience, show relevant ads and analyse traffic. We won’t use them for these purposes unless you accept. Privacy Policy.