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 / 20
Vibe Polo Shirt£34.99 £19.99
Colour
Size
1
What golfers say
Independent reviews, collected from Stuburt retailers.
5.0 / 5from 4 reviews
★★★★★
Needed a second white golf polo for club colours and this was WAY cheaper than club shirt.
This is a good quality shirt at a very reasonable price. OK, the Stubert brand is not a top golf brand but the shirt is well made and kept its white colour better than the club shirt I bought costing more than double
MR PAUL R GOWERS · December 2023 · via Amazon
★★★★★
Bought as gift
Bought for hubby who is very happy with it. Looks smart and is comfortable and easy to wash. Fits well. He is medium sized.
Seabird · July 2022 · via Amazon
★★★★★
Fitting, selection of choice, smart, and very well priced.
I cannot recommend Stuburt golf polo shirts highly enough, maybe it’s just me but they are so comfortable, look great ( forever getting nice comments from the guys at the golf club😀) and the sizes fit (for me anyway) spot on 👌
Mr John Tanner · April 2021 · via Amazon
★★★★★
Nice shirt
Ordered 2 different sizes but kept the right one... Great product
Dennis Wilkinson · September 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£19.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.