Glycemic index vs glycemic load: carb timing for training
Why matching the speed and dose of your carbohydrates to your training schedule matters far more than tracking daily totals.
Why matching the speed and dose of your carbohydrates to your training schedule matters far more than tracking daily totals.
You can hit the same daily carb total by eating rice at 8 pm or oats at 8 am. The calorie counter says both days match. Insulin, glycogen, and sleep quality say they do not. The variable that separates them is not how much you ate but when, and what shape the carb was in when it arrived. Glycemic index and glycemic load are the two numbers that carry that shape.
This piece walks through what GI and GL mean, why GL matters more than GI for planning, and how KEXBI uses both to route carbs across the day. This is the third article in the fuel-database series. The previous pieces covered the depth per food and the raw-vs-cooked problem. This one covers the third dimension: how the food behaves once it lands.
Take two carbs. White rice, cooked, per 100 g: about 130 kcal and 28 g of carbohydrate. Steel-cut oats, cooked, per 100 g: about 70 kcal and 12 g of carbohydrate. On a calorie tracker, rice is denser and oats are lighter. On an actual metabolic timeline, the interesting difference is that rice moves fast and oats move slowly. Two hours after eating, the rice has already delivered its glucose to the blood; the oats are still delivering.
That difference is what glycemic index measures. GI is a laboratory-derived ranking of how fast a carb raises blood glucose relative to pure glucose (which sits at 100). White rice sits around 70 (high). Oats sit around 55 (low). Sweet potato sits around 60 (medium). The same carbohydrate delivered at different speeds hits the body differently, and the difference matters for training, recovery, and sleep.
GI on its own has a blind spot. It tells you the speed of a carb per 50 g of carbohydrate delivered, in a lab setting. It does not tell you how much carbohydrate a real serving carries. Watermelon has a high GI (about 72) but a low glycemic load per serving (about 6), because a slice is mostly water. Rice has a high GI (about 70) and a high glycemic load per serving (about 39 for 200 g cooked), because a serving is mostly carbohydrate.
Glycemic load closes the gap. It is derived per serving:
KEXBI stores GI on every carb food that has published data [1]. GL per serving is derived at runtime from the recorded portion. That is why the same food can carry a low-load reading at a 30 g serving and a high-load reading at a 100 g serving without either being wrong. The meal plan works from the derived GL, not the stored GI, because portion is what actually meets your day.
Oats, lentils, chickpeas, most fruits, non-starchy vegetables. Sustained energy, low insulin spike. Preferred in anchor slots; pre-bed permitted.
Sweet potato, brown rice, basmati, whole-grain bread, honey, dates. Balanced release. Preferred pre-workout at T minus 60 to 120.
White rice, dextrose, sports gels, instant oats, potato, white bread. Rapid glycogen replenishment. Preferred post-workout; pre-bed penalised.
Reading these three cards, the classic tracker takeaway is "high GI is bad, low GI is good, avoid the top row". That reading misses how people who train use carbohydrate. In KEXBI's plan each band has a home: high GI straight after training, low GI before bed.
Sixty to 120 minutes before a hard workout, the body is planning fuel delivery. It wants carbohydrate that arrives during the workout, not before it. High GI at T minus 60 dumps sugar into the blood before the muscles need it and can trigger a small crash into the warm-up. Low GI at T minus 60 may not deliver enough by the first hard interval. KEXBI therefore favours medium GI: sweet potato, basmati rice, oats with a little honey, brown rice, whole-grain toast.
KEXBI's timing rules steer the meal plan toward this band for the pre-workout window [2,3]. High-GI foods are demoted for slot scoring. Low-GI foods are permitted but not preferred. Medium-GI foods score highest. The user does not need to remember which is which; the routing is baked in.
In KEXBI's plan, the 30-minute window after a hard workout is where high GI is the target rather than a caution. Muscle glycogen has been depleted, insulin sensitivity is at a peak, and the fastest available carbohydrate is what refills the tank. White rice, banana, dextrose, dried fruit, a rice cake with honey, a sports gel. Most are GI 70 or more; banana and dried fruit sit lower, in the medium band or below.
KEXBI's rule flips at 60 to 90 minutes post-training, when you are heading toward a proper meal. From there, high-GI carbs stop being the priority. KEXBI's routing map switches at that boundary: pre-workout demotes high-GI, post-workout immediate promotes them, post-workout meal returns to medium-GI whole foods.
The pre-bed window is where GI matters most for something other than performance. Research suggests insulin secreted in the hour before sleep may blunt growth hormone release across the first half of the night, which is when the pulse is largest [4]. A high-GI carb at 10 pm buys a short blood-sugar spike and may pay it back with a smaller GH pulse.
KEXBI's pre-bed rule is a hard demotion for high-GI carbs (score 0.2 to 0.3 in the pre-bed slot) and a full permission for casein-adjacent protein foods with low GI (Greek yoghurt, cottage cheese, milk-based casein). People who eat a bowl of white rice at 10 pm and complain about poor sleep quality may be running into a physiology they are not required to memorise, only to route around.
The meal plan carries a set of rules called chrononutrient rules. Each nutrient (or nutrient category) is tagged with best-slots and avoid-slots plus a scoring bias per slot. High-GI carbohydrate is marked to avoid the pre-bed and 60-minute pre-workout slots, and to favour the slot straight after training. Low-GI carbohydrate carries the reverse. The scoring bias adjusts the meal-slot-fit score of the parent food at assembly time.
| Slot | Oats (GI 55, low) | Sweet potato (GI 60, medium) | White rice (GI 70, high) |
|---|---|---|---|
| Breakfast | Preferred | Fits | Permitted |
| Pre-workout T minus 120 | Fits | Preferred | Demoted |
| Pre-workout T minus 60 | Permitted | Preferred | Demoted |
| Post-workout immediate | Demoted | Fits | Preferred |
| Post-workout meal (1 to 2 h) | Fits | Preferred | Fits |
| Dinner | Fits | Preferred | Fits |
| Pre-bed | Permitted | Demoted | Penalised |
None of the above requires you to know GI values or hold a chart in their head. It requires the food database to carry GI on every relevant food, the runtime to derive GL from the recorded portion, and the routing layer to know which slots reward which shape.
Calorie totals sit at the bottom of the meal-planning stack, not the top. Above them is timing. Above timing is the specific shape the carbohydrate is in when it arrives. Rice at 8 pm and oats at 8 am hit the same total but do not build the same day. The generic tracker sees only the total; the food database that carries GI and derives GL builds the layer above it.
KEXBI stores GI on every carb food that has published data. GL is derived per serving at runtime. Timing rules steer the meal plan toward the right band per slot. The user records what they ate; the routing knows whether it fits the moment.
GI values quoted in the article are drawn from the International Tables (Atkinson 2008 [1]) and stored on KEXBI's food records. GL is not stored; it is derived per serving at runtime as (carbs × GI) ÷ 100. The three bands (low 55 or less, medium 56 to 69, high 70 or more) match the international consensus categorisation. Chrononutrient rule biases are KEXBI implementation values anchored in Kerksick 2017 and Thomas 2016. The pre-bed GH suppression note is anchored in Van Cauter 2004.