Half Marathon Fueling Plan: How Many Gels Do You Really Need?

Half Marathon Fueling Plan: How Many Gels Do You Really Need?

Half Marathon Fueling Plan: How Many Gels Do You Really Need?

Half Marathon Fueling Plan: How Many Gels Do You Really Need?

Ask 10 runners how many gels you need in a half marathon, and you’ll get 10 answers. Here's how to calculate your fueling needs and choose the right products for your stomach, pace, and goals.

The Science of Fueling

Understanding your carbohydrate needs during a half marathon is crucial. Most half marathon runners require between 30 to 60 grams of carbohydrates per hour, depending on factors like race pace, duration, and body size. For example, a 2-hour runner might need approximately 60–90 grams in total.

Gel Math Explained

Most energy gels contain between 20 to 30 grams of carbohydrates. This means:

  • 30g/hr: 1 gel per hour, totaling 2 gels for a 2-hour half marathon.
  • 60g/hr: 2 gels per hour, totaling 4 gels for the same duration.

Incorporating a high-carb drink mix can reduce the number of gels you need.


Products in Practice

Here's a breakdown of the various gel options and their benefits

Product Carbs/Serving Caffeine Best For

Maurten Gel 100 Loading… 25g None Easy digestion
Maurten Gel 100 CAF Loading… 25g 100mg Caffeine boost
GU Original Loading… 20g 20mg Affordable energy
GU Roctane Loading… 20g 35mg Added sodium
NeverSecond C30 Loading… 30g None Smooth absorption
NeverSecond C30 CAF Loading… 30g 75mg Performance boost
UnTapped Energy Gel Loading… 26g None Natural option
Extreme Sport Beans Loading… 24g 50mg Chewable energy


.aa-gel-calc { border: 1px solid rgba(0,0,0,.1); border-radius: 14px; padding: 1rem; margin: 1.5rem 0; font: inherit; } .aa-gc-grid { display: grid; gap: 0.85rem; grid-template-columns: 1fr; } .aa-gc-row { display: grid; gap: .5rem; } .aa-gc-row.inline { grid-template-columns: 1fr 1fr; } .aa-gc-label { font-weight: 600; } .aa-gc-input, .aa-gc-select { width: 100%; padding: .6rem .7rem; border: 1px solid rgba(0,0,0,.15); border-radius: 10px; background: #fff; } .aa-gc-range { width: 100%; } .aa-gc-help { color: #555; font-size: .9rem; } .aa-gc-cta { margin-top: .5rem; padding: .65rem 1rem; border: 0; border-radius: 10px; background: #ea2126; color: #fff; cursor: pointer; font-weight: 600; } .aa-gc-card { background: #fafafa; border: 1px solid rgba(0,0,0,.06); border-radius: 12px; padding: .9rem; } .aa-gc-stats { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit,minmax(160px,1fr)); } .aa-gc-stat { background: #fff; border: 1px solid rgba(0,0,0,.06); border-radius: 10px; padding: .75rem; } .aa-gc-stat h4 { margin: 0 0 .25rem; font-size: .95rem; color: #333; } .aa-gc-stat .val { font-weight: 700; font-size: 1.15rem; } .aa-gc-sched { margin-top: .5rem; } .aa-gc-sched ol { margin: .25rem 0 0 1.2rem; } .aa-gc-sched li { margin: .15rem 0; } .aa-gc-link { margin-top: .25rem; display: inline-flex; gap: .4rem; align-items: baseline; } .aa-gc-pill { display:inline-block; padding:.2rem .5rem; border:1px solid rgba(0,0,0,.12); border-radius:999px; font-size:.85rem; color:#333; background:#fff; } .aa-gc-note { margin-top: .5rem; font-size: .9rem; color: #555; } @media (min-width: 720px) { .aa-gc-grid { grid-template-columns: 1.1fr .9fr; align-items: start; } }

Half Marathon Gel Calculator

Pick your gel and race time. We’ll estimate how many you’ll need based on your target carb intake per hour (most runners land between 30–60 g/h). Practice this plan in training.

1) Choose your gel

We’ll use each product’s typical carbs per serving.

2) Race time

hr

min Half marathons often finish between 1:15–3:00 for most runners.

3) Carb target (g/hour)

45 g/h  Tip: start at 30–45 g/h if new to fueling; experienced runners may push 60 g/h.

Calculate plan

Total gels needed

Total carbs delivered

Interval between gels

View product Loading…

Suggested gel schedule

    This is a starting point. Practice during training to dial in timing and tolerance. Pair gels with small sips of water/electrolyte.

    (function(){ const gelSelect = document.getElementById('gcGel'); const hoursEl = document.getElementById('gcHours'); const minsEl = document.getElementById('gcMinutes'); const gphEl = document.getElementById('gcGPH'); const totalGelsEl = document.getElementById('gcTotalGels'); const totalCarbsEl = document.getElementById('gcTotalCarbs'); const intervalEl = document.getElementById('gcInterval'); const scheduleEl = document.getElementById('gcSchedule'); const linkEl = document.getElementById('gcProductLink'); const priceEl = document.getElementById('gcPrice'); function ceil(n){ return Math.ceil(n); } function clamp(n, lo, hi){ return Math.max(lo, Math.min(hi, n)); } function hhmmToHours(h, m){ h = +h||0; m = +m||0; m = clamp(m,0,59); return h + m/60; } function formatMinutes(mins){ const h = Math.floor(mins/60); const m = Math.round(mins - h*60); if (h <= 0) return `${m} min`; return `${h}h ${m}m`; } function buildSchedule(durationMin, intervalMin){ const times = []; if (!isFinite(intervalMin) || intervalMin <= 0) return times; // Start fueling ~20 min in for most runners let t = Math.max(20, intervalMin); while (t < durationMin - 5) { times.push(t); t += intervalMin; } return times; } function calculate(){ const opt = gelSelect.options[gelSelect.selectedIndex]; const carbs = parseFloat(opt.getAttribute('data-carbs')) || 0; // g per gel const url = opt.getAttribute('data-url') || '#'; const handle = gelSelect.value; // product handle // Inputs const durationH = hhmmToHours(hoursEl.value, minsEl.value); const gph = parseFloat(gphEl.value) || 45; if (durationH <= 0 || carbs <= 0 || gph <= 0) { totalGelsEl.textContent = '—'; totalCarbsEl.textContent = '—'; intervalEl.textContent = '—'; scheduleEl.innerHTML = ''; linkEl.href = url; priceEl.setAttribute('data-handle', handle); return; } // Math const totalCarbs = gph * durationH; const gelsNeeded = ceil(totalCarbs / carbs); // Interval between gels, minutes const intervalMin = (carbs / gph) * 60; const durationMin = durationH * 60; const schedule = buildSchedule(durationMin, intervalMin); // Output totalGelsEl.textContent = gelsNeeded.toString(); totalCarbsEl.textContent = `${Math.round(totalCarbs)} g`; intervalEl.textContent = `${Math.round(intervalMin)} min`; scheduleEl.innerHTML = schedule.map((m,i)=>`

    ${formatMinutes(m)} — take 1 gel

    `).join('') || '

    Consider taking your first gel ~20–30 min into the race, then at regular intervals.

    '; linkEl.href = url; priceEl.setAttribute('data-handle', handle); } // Wire up document.getElementById('gcCalcBtn').addEventListener('click', calculate); // Auto-calc on load with defaults calculate(); })(); (function(){ const SELECTOR = '.js-price[data-handle]'; const CURRENCY = 'USD'; async function getProduct(handle){ const res = await fetch(`/products/${encodeURIComponent(handle)}.js`, { credentials: 'same-origin' }); if (!res.ok) throw new Error(`Product JSON not found for ${handle} (${res.status})`); return res.json(); } function parsePriceCents(v){ // Shopify returns cents (number). Guard for strings. const n = typeof v === 'number' ? v : parseFloat(v); return Number.isFinite(n) ? n : 0; } async function hydrateOne(el){ const handle = el.getAttribute('data-handle'); if (!handle) return; try { const product = await getProduct(handle); const variant = product.variants.find(v => v.available) || product.variants[0]; const price = parsePriceCents(variant && variant.price) / 100; const fmt = new Intl.NumberFormat(undefined, { style: 'currency', currency: CURRENCY }); el.textContent = ` · ${fmt.format(price)}`; el.setAttribute('data-loaded', 'true'); } catch (e) { console.warn('Price hydrate failed:', handle, e); el.textContent = ''; // fail silently } } async function hydrateAll(){ const els = document.querySelectorAll(SELECTOR); if (!els.length) return; await Promise.all(Array.from(els).map(hydrateOne)); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', hydrateAll); } else { hydrateAll(); } })();


    Sample Fueling Plans

    • 90-min finisher (~30g/hr): 2–3 gels total.
    • 2-hour finisher (~45g/hr): 3–4 gels total.
    • 2.5-hour finisher (~60g/hr): 4–5 gels total.

    For example, integrating one Maurten 320 bottle (80g) can replace three gels.


    Mistakes to Avoid

    • Forgetting electrolytes: Essential for maintaining balance.
    • Taking all gels at once: Spread them out for sustained energy.
    • Ignoring caffeine timing: Use strategically for a boost.
    • Not practicing fueling in training: Avoid surprises on race day.

    Conclusion

    Fueling is a personal journey, and practice makes perfect. Utilize our tools to refine your strategy and ensure your half marathon is successful and enjoyable.

    ---

    Shop Half Marathon Fueling Essentials

    Explore our curated selection of energy gels, drink mixes, and more to fuel your run.

    Shop Now

    Related Posts

    Half Marathon: Your Complete Race Day Nutrition Guide
    What to Eat Before a Half Marathon (and What to...
    During the Race: Best Energy Gels for Every Runner
    During the Race: Best Energy Gels for Every Runner The...
    How to Practice Race-Day Nutrition During Training Runs You wouldn’t...
    Natural vs Engineered Fuel for Runners
    Natural vs Engineered Fuel: Maple Syrup, Waffles, and Beyond From...
    What’s your race distance? 🏁 5K 🏁 10K 🏁 Half...
    Electrolytes Matter: How to Stay Hydrated on Race Day
    Electrolytes Matter: How to Stay Hydrated on Race Day  ...