Dandy Horse GRV 45
Discover a new dimension of speed in gravel. Low weight and excellent traction will give you an edge on any route.
Weight: from 1375 g
Price range: € 1 561 through € 1 934
Dandy Horse GRX 45
Aerodynamic wheels that will prove themselves in fast off-road riding. Light and durable.
Weight: from 1445 g
Price range: € 1 297 through € 1 669
Dandy Horse GRX 45
Fast gravel wheels with exceptional features - aerodynamic, comfortable and durable.
Weight: from 1510 g
Price range: € 1 153 through € 1 383
grv 30 ultralekkie, startowe, karbonowe koła gravelowe
The most sophisticated gravel wheels with unprecedented parameters. Extremely light and fast, with a luxurious finish and discreet engraving.
Weight: from 1285 g
Price range: € 1 561 through € 1 934
Dandy Horse GRX 30
This wheel model offers a combination of speed and excellent traction, which will allow you to tackle unpaved trails with even greater pleasure.
Weight: from 1365 g
Price range: € 1 297 through € 1 669
Dandy Horse GRX 30
Revolutionary gravel wheels, in a new version. Still agile and comfortable, now also additionally reinforced.
Weight: from 1430 g
Price range: € 1 153 through € 1 383
Dandy Horse GRX 20 set
Super-lightweight aluminum rim wheels that will turn any gravel bike into a fast and agile machine.
Weight: from 1505 g
Price range: € 552 through € 876
Hiperion 20 gr
Budget-friendly wheels with great ride quality. You won't regret not choosing carbon.
Weight: from 1540 g
Price range: € 456 through € 684
Komplet kół ARV 30
sale
Our lightest gravel wheels, designed for maximum dynamics and efficiency on the climbs. The choice for weight weenies.
Weight: from 1275 g
Price range: € 1 405 through € 1 740
Dandy Horse Pulsar 30 ARV Wheelset
sale
Gravel wheels with a racing spirit, ready for dynamic riding on any surface.
Weight: from 1365 g
Price range: € 1 167 through € 1 502
Dandy Horse Pulsar 30 ARV Wheelset
Special Offer
Built for adventure. Versatile carbon wheels that feel at home on forest paths and endless gravel roads.
Weight: from 1380 g
Price range: € 1 037 through € 1 223
Dandy-Horse-Graviton-25-GR-Wheelset
sale
Exceptionally stiff and durable gravel wheels on 27.5'' aluminium rims.
Weight: from 1740 g
Price range: € 432 through € 468

GRAVEL

Top-of-the-line gravel bike wheels built on designed by us carbon rims. We assemble our wheels by hand in our workshop in Warsaw, with the utmost precision and care that is impossible to maintain on an industrial scale.

Grab an extra 5% off

Sign up for our newsletter to receive exclusive offers

(function() { const popupID = 4091; // <- Twoje ID popupu const requiredMs = 60000; // 60 sekund const startKey = "popupTimerStart_" + popupID; const closedKey = "popupClosed_" + popupID; const shownSessionKey = "popupShownSession_" + popupID; const maxWaitForElementorMs = 10000; // ile maksymalnie czekamy na elementorProFrontend // Jeśli zamknięto już popup (localStorage) — nie pokazuj więcej if (localStorage.getItem(closedKey)) return; // Ustal moment rozpoczęcia liczenia (persistuje między podstronami) let start = localStorage.getItem(startKey); if (!start) { start = Date.now(); localStorage.setItem(startKey, start); } else { start = parseInt(start, 10); } // Oblicz ile jeszcze brakuje do wymaganych 60s function msRemaining() { return Math.max(0, requiredMs - (Date.now() - start)); } // Funkcja pokazująca popup (gdy elementorProFrontend już gotowy) function tryShowPopup() { // jeśli użytkownik zamknął popup w międzyczasie — przerwij if (localStorage.getItem(closedKey)) return; // jeśli już pokazano w tej sesji — nie pokazuj ponownie if (sessionStorage.getItem(shownSessionKey)) return; // upewnij się, że obiekt elementora jest dostępny if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { elementorProFrontend.modules.popup.showPopup({ id: popupID }); sessionStorage.setItem(shownSessionKey, "1"); } else { // jeśli elementor jeszcze nie załadowany — nic nie robimy tutaj console.warn("Elementor Pro popup module not ready yet."); } } // Czekaj na elementorProFrontend (polling), ale nie dłużej niż maxWaitForElementorMs function waitForElementorReady(cb) { const interval = 200; let waited = 0; const t = setInterval(function() { if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { clearInterval(t); cb(true); } else { waited += interval; if (waited >= maxWaitForElementorMs) { clearInterval(t); cb(false); } } }, interval); } // Gdy popup zostanie zamknięty — zapisz to na stałe w localStorage (function bindCloseListener() { if (window.jQuery) { jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else { // jeśli jQuery jeszcze nie dostępne, spróbuj za chwilę let tries = 0; const t = setInterval(function() { tries++; if (window.jQuery) { clearInterval(t); jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else if (tries > 50) { clearInterval(t); } }, 200); } })(); // Teraz ustaw timeout — jeśli pozostały czas 0 => pokaż natychmiast (po upewnieniu się, że elementor jest gotowy) const remaining = msRemaining(); if (remaining <= 0) { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj jeszcze raz po krótkim timeout setTimeout(tryShowPopup, 500); } }); } else { // ustaw timeout na pozostały czas; po upływie — spróbuj pokazać popup setTimeout(function() { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj z małym opóźnieniem setTimeout(tryShowPopup, 500); } }); }, remaining); } // Dodatkowo: jeśli użytkownik zamknął popup w innej karcie/oknie, ten skrypt też to zauważy dzięki storage event window.addEventListener('storage', function(e) { if (e.key === closedKey && e.newValue) { // nic do zrobienia tutaj — warunki wyżej sprawią, że nic się nie pokaże } }); })();