find your next nz
motorsport
adventure

never miss a
starting grid

Get the latest NZ race calendar updates and exclusive track day opportunities.

Stay up to date

Active Filter:
All
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

upcoming race events in New Zealand

Images for illustration purposes
NZShift is New Zealand's most complete motorsport events calendar, covering circuit racing, drag racing, drifting, speedway, karting, track days and more across the North and South Island.
The best source for motorsports racing

find your next race event
by category

Where in New Zealand?
BROWSE BY REGION

find your next race event by venue

The best source for motorsports racing
// --- Dynamic title font scaling (line-clamp aware) --- function scaleEventTitles() { // Double rAF ensures browser has fully painted before we measure requestAnimationFrame(() => requestAnimationFrame(() => { document.querySelectorAll('.event-card-title').forEach(title => { // Reset font size title.style.fontSize = ''; // Override line-clamp with !important so Webflow styles don't block measurement title.style.setProperty('-webkit-line-clamp', 'unset', 'important'); title.style.setProperty('overflow', 'visible', 'important'); title.style.setProperty('display', 'block', 'important'); const computedStyle = window.getComputedStyle(title); const lineHeight = parseFloat(computedStyle.lineHeight); const minSize = 12; let size = parseFloat(computedStyle.fontSize); // Try to fit in 3 lines first const maxHeight = lineHeight * 3; while (title.scrollHeight > maxHeight && size > minSize) { size -= 1; title.style.fontSize = size + 'px'; } // If still overflowing at min size, allow a 4th line if (title.scrollHeight > maxHeight) { title.style.setProperty('-webkit-line-clamp', '4', 'important'); } // Restore — remove inline overrides, let Webflow stylesheet take back over title.style.removeProperty('-webkit-line-clamp'); title.style.removeProperty('overflow'); title.style.removeProperty('display'); }); })); } window.fsAttributes = window.fsAttributes || []; window.fsAttributes.push([ 'cmslist', (listInstances) => { scaleEventTitles(); listInstances.forEach(instance => { instance.on('renderitems', () => scaleEventTitles()); }); } ]); // --- Hide Show More button when empty state is visible --- document.addEventListener('DOMContentLoaded', () => { const emptyState = document.querySelector('.empty-state-3'); const showMoreWrapper = document.querySelector('.show-more-wrapper'); if (!emptyState || !showMoreWrapper) return; function syncButton() { const style = window.getComputedStyle(emptyState); const isVisible = style.display !== 'none' && style.visibility !== 'hidden' && emptyState.offsetHeight > 0; showMoreWrapper.style.display = isVisible ? 'none' : ''; } // Poll every 200ms to catch any Finsweet state changes setInterval(syncButton, 200); // Also run once immediately syncButton(); });