{"id":3194,"date":"2026-05-02T00:50:52","date_gmt":"2026-05-01T23:50:52","guid":{"rendered":"https:\/\/livingdiabetes.com\/carb-counter\/"},"modified":"2026-05-02T00:50:52","modified_gmt":"2026-05-01T23:50:52","slug":"carb-counter","status":"publish","type":"page","link":"https:\/\/livingdiabetes.com\/ur\/carb-counter\/","title":{"rendered":"Carb Counter &#038; Bolus Calculator \u2014 100+ Foods, NICE-Aligned"},"content":{"rendered":"\n<p><strong>Build a meal, see total carbohydrate, fibre, net carbs, and protein, and (optionally) calculate the matching bolus insulin dose.<\/strong> Pick foods from the searchable list, set portion size, and the totals update as you go. Carbohydrate values come from USDA FoodData Central with cross-checks against the Diabetes UK food data tables.<\/p>\n\n\n\n<style>\n.ld-calc{max-width:760px;margin:1.5em 0;padding:1.5em;border:1px solid #d4dde5;border-radius:8px;background:#f8fafc;font-family:inherit}\n.ld-calc h3{margin-top:0;color:#1a4870;font-size:1.25em}\n.ld-row{display:flex;flex-wrap:wrap;gap:.6em;margin-bottom:.7em;align-items:center}\n.ld-row label{flex:1 1 200px;font-weight:600;font-size:.95em}\n.ld-row input,.ld-row select{padding:.45em .6em;font-size:.95em;border:1px solid #b8c5d3;border-radius:4px;background:#fff}\n.ld-row input:focus,.ld-row select:focus{outline:none;border-color:#1a8cb6;box-shadow:0 0 0 3px rgba(26,140,182,.15)}\n.ldc-add{display:flex;flex-wrap:wrap;gap:.5em;align-items:center;padding:.85em;background:#fff;border:1px solid #d4dde5;border-radius:5px;margin-bottom:1em}\n.ldc-add select{flex:1 1 250px;min-width:0}\n.ldc-add input{flex:0 0 90px}\n.ld-btn{background:#1a8cb6;color:#fff;border:none;padding:.55em 1.1em;border-radius:4px;font-size:.95em;cursor:pointer;font-weight:600}\n.ld-btn:hover{background:#147099}\n.ld-btn.sec{background:#e6e6e6;color:#333}\n.ld-btn.sec:hover{background:#d8d8d8}\n.ldc-table{width:100%;border-collapse:collapse;margin-top:.5em;font-size:.92em}\n.ldc-table th,.ldc-table td{padding:.4em .5em;text-align:right;border-bottom:1px solid #e0e6ec}\n.ldc-table th:first-child,.ldc-table td:first-child{text-align:left}\n.ldc-table thead{background:#eef3f7}\n.ldc-table .rm{cursor:pointer;color:#a44;font-weight:bold;text-align:center}\n.ld-result{margin-top:1em;padding:1em 1.25em;background:#e8f4f9;border-left:4px solid #1a8cb6;border-radius:4px}\n.ld-result .totals{display:flex;flex-wrap:wrap;gap:1.2em;font-size:1em}\n.ld-result .totals div{flex:1 1 130px}\n.ld-result .totals span{display:block;font-size:1.6em;font-weight:700;color:#0d5a78}\n.ldc-bolus{margin-top:1em;padding:.85em 1em;background:#fffaeb;border:1px solid #f3d878;border-radius:4px}\n.ldc-bolus h4{margin:0 0 .5em 0;font-size:1em}\n.ld-disc{margin-top:1em;padding:.75em 1em;background:#fdecea;border-left:3px solid #c44;border-radius:3px;font-size:.9em}\n@media (max-width:520px){.ldc-add select,.ldc-add input{flex:1 1 100%}}\n<\/style>\n\n<div class=\"ld-calc\">\n<h3>Carb &amp; Bolus Calculator<\/h3>\n\n<div class=\"ldc-add\">\n<select id=\"ldc-food\"><option value=\"\">Select a food\u2026<\/option><\/select>\n<input type=\"number\" id=\"ldc-portion\" min=\"1\" max=\"2000\" step=\"1\" value=\"100\" placeholder=\"grams\">\n<button type=\"button\" class=\"ld-btn\" id=\"ldc-add\">Add<\/button>\n<\/div>\n\n<table class=\"ldc-table\" id=\"ldc-tbl\">\n<thead><tr><th>Food<\/th><th>Portion (g)<\/th><th>Carbs<\/th><th>Fibre<\/th><th>Net carbs<\/th><th>Protein<\/th><th><\/th><\/tr><\/thead>\n<tbody id=\"ldc-body\"><tr><td colspan=\"7\" style=\"text-align:center;color:#888;padding:1em\">No items yet \u2014 pick a food above to start.<\/td><\/tr><\/tbody>\n<\/table>\n\n<div class=\"ld-result\" id=\"ldc-totals\" style=\"display:none\">\n<div class=\"totals\">\n<div><span id=\"ldc-t-carbs\">0<\/span>Total carbs (g)<\/div>\n<div><span id=\"ldc-t-fibre\">0<\/span>Fibre (g)<\/div>\n<div><span id=\"ldc-t-net\">0<\/span>Net carbs (g)<\/div>\n<div><span id=\"ldc-t-prot\">0<\/span>Protein (g)<\/div>\n<\/div>\n<\/div>\n\n<div class=\"ldc-bolus\">\n<h4>Optional: bolus insulin estimate<\/h4>\n<div class=\"ld-row\"><label for=\"ldc-icr\">Insulin-to-carb ratio (1 unit per X g)<\/label><input type=\"number\" id=\"ldc-icr\" min=\"1\" max=\"50\" step=\"0.5\" placeholder=\"e.g. 10\"><\/div>\n<div class=\"ld-row\"><label for=\"ldc-cur\">Current glucose (mmol\/L)<\/label><input type=\"number\" id=\"ldc-cur\" min=\"2\" max=\"35\" step=\"0.1\" placeholder=\"optional\"><\/div>\n<div class=\"ld-row\"><label for=\"ldc-tgt\">Target glucose (mmol\/L)<\/label><input type=\"number\" id=\"ldc-tgt\" min=\"3\" max=\"10\" step=\"0.1\" value=\"6\"><\/div>\n<div class=\"ld-row\"><label for=\"ldc-isf\">Insulin sensitivity factor (1 unit drops mmol\/L by)<\/label><input type=\"number\" id=\"ldc-isf\" min=\"0.5\" max=\"10\" step=\"0.1\" placeholder=\"e.g. 2.5\"><\/div>\n<div id=\"ldc-bolus-out\" style=\"margin-top:.5em;font-weight:600\"><\/div>\n<\/div>\n\n<div class=\"ld-disc\"><strong>Bolus dose is for reference only.<\/strong> Always confirm with your diabetes team. Many factors (illness, exercise, hormones, fat\/protein content of meal) alter the actual insulin you need. People on insulin should never change doses based solely on this tool.<\/div>\n<\/div>\n\n<script>\n(function(){\n\/\/ Food database \u2014 per 100 g raw\/cooked weight as labelled. Sources: USDA FDC + Diabetes UK food tables.\nvar FOODS=[\n['Apple, raw',14,2.4,0.3],['Banana, raw',23,2.6,1.1],['Blueberries, raw',14,2.4,0.7],['Strawberries, raw',7.7,2,0.7],['Orange, raw',12,2.4,0.9],['Pear, raw',15,3.1,0.4],['Grapes, raw',17,0.9,0.6],['Mango, raw',15,1.6,0.8],['Pineapple, raw',13,1.4,0.5],['Watermelon, raw',8,0.4,0.6],\n['Bread, white slice',49,2.7,9.4],['Bread, wholemeal slice',41,7,13],['Pasta, cooked',25,1.8,5.8],['Rice, white cooked',28,0.4,2.7],['Rice, brown cooked',23,1.8,2.6],['Rice, basmati cooked',25,0.7,3],['Couscous, cooked',23,1.4,3.8],['Quinoa, cooked',21,2.8,4.4],['Oats, raw',66,11,17],['Porridge oats, cooked',12,1.7,2.4],\n['Potato, boiled',17,1.8,2],['Potato, baked',21,2.2,2.5],['Sweet potato, baked',20,3.3,2],['Chips\/fries, fried',41,3.8,3.4],['Mashed potato',17,1.5,1.9],\n['Chicken breast, cooked',0,0,31],['Chicken thigh, cooked',0,0,26],['Beef mince 5%, cooked',0,0,26],['Beef steak, cooked',0,0,29],['Pork loin, cooked',0,0,28],['Lamb chop, cooked',0,0,25],['Bacon, cooked',1.4,0,37],['Sausage, cooked',2,0,15],['Salmon, cooked',0,0,25],['Tuna, canned in water',0,0,23],['Cod, cooked',0,0,22],['Prawns, cooked',1,0,20],['Egg, whole (per 50 g)',0.6,0,12.6],\n['Lentils, cooked',20,7.9,9],['Chickpeas, cooked',27,7.6,8.9],['Black beans, cooked',23,8.7,8.9],['Kidney beans, cooked',23,7.4,8.7],['Tofu, firm',1.9,0.4,17],['Hummus',14,6,8],['Edamame, cooked',9,5,11],\n['Carrot, raw',10,2.8,0.9],['Broccoli, cooked',7,3.3,2.4],['Cauliflower, cooked',5,2.3,1.8],['Spinach, raw',3.6,2.2,2.9],['Kale, raw',9,3.6,4.3],['Tomato, raw',3.9,1.2,0.9],['Cucumber, raw',3.6,0.5,0.7],['Bell pepper, raw',6,2.1,1],['Courgette\/zucchini, raw',3.1,1,1.2],['Aubergine\/eggplant, cooked',9,2.5,0.8],['Mushrooms, raw',3.3,1,3.1],['Lettuce, raw',2.9,1.3,1.4],['Onion, raw',9,1.7,1.1],['Avocado',8.5,6.7,2],\n['Milk, semi-skimmed',5,0,3.5],['Milk, whole',5,0,3.4],['Yogurt, plain low-fat',7,0,4.7],['Yogurt, Greek 5%',3.6,0,9],['Cheese, cheddar',1.3,0,25],['Cheese, mozzarella',2.2,0,22],['Cheese, feta',4,0,14],['Butter',0.1,0,0.9],['Cream, double',2.7,0,1.7],\n['Coke (per 330 ml can)',35,0,0],['Apple juice (per 200 ml)',24,0.4,0.2],['Beer (per 500 ml pint)',13,0,1.5],['Wine, red (per 175 ml)',0.3,0,0.1],['Wine, white (per 175 ml)',0.4,0,0.2],['Spirits (per 25 ml shot)',0,0,0],\n['Chocolate, milk (per 100 g bar)',59,3.4,7.6],['Chocolate, dark 70% (per 100 g)',46,11,8],['Crisps\/potato chips',54,4.4,7],['Pizza, plain (per slice ~100 g)',33,2.3,11],['Burger bun + beef',32,2,15],['Cookies, plain',60,1.8,6],['Ice cream, vanilla',24,0.7,3.5],['Doughnut, plain',49,1.5,5.7],['Cake, sponge',55,0.9,5],['Croissant, butter',46,2.6,8.2],\n['Olive oil (per 15 ml tbsp)',0,0,0],['Honey (per 15 g tbsp)',12.6,0,0.05],['Jam (per 15 g tsp)',9.8,0.3,0.05],['Sugar (per 4 g tsp)',4,0,0],['Peanut butter',16,5,25],['Almonds',22,12,21],['Walnuts',14,7,15],['Cashews, roasted',30,3.3,18],\n];\nvar sel=document.getElementById('ldc-food');\nfor(var i=0;i<FOODS.length;i++){var o=document.createElement('option');o.value=i;o.textContent=FOODS[i][0]+' (per 100 g: '+FOODS[i][1]+'g carbs)';sel.appendChild(o);}\nvar rows=[];\nfunction r2(n){return Math.round(n*10)\/10;}\nfunction render(){\nvar b=document.getElementById('ldc-body');\nif(!rows.length){b.innerHTML='<tr><td colspan=\"7\" style=\"text-align:center;color:#888;padding:1em\">No items yet \u2014 pick a food above to start.<\/td><\/tr>';\ndocument.getElementById('ldc-totals').style.display='none';return;}\nvar html='';var tc=0,tf=0,tp=0;\nfor(var i=0;i<rows.length;i++){\nvar f=FOODS[rows[i].id],g=rows[i].g,m=g\/100;\nvar c=f[1]*m,fi=f[2]*m,pr=f[3]*m;tc+=c;tf+=fi;tp+=pr;\nhtml+='<tr><td>'+f[0]+'<\/td><td>'+g+'<\/td><td>'+r2(c)+'<\/td><td>'+r2(fi)+'<\/td><td>'+r2(c-fi)+'<\/td><td>'+r2(pr)+'<\/td><td class=\"rm\" data-i=\"'+i+'\">\u00d7<\/td><\/tr>';\n}\nb.innerHTML=html;\ndocument.getElementById('ldc-t-carbs').textContent=r2(tc);\ndocument.getElementById('ldc-t-fibre').textContent=r2(tf);\ndocument.getElementById('ldc-t-net').textContent=r2(tc-tf);\ndocument.getElementById('ldc-t-prot').textContent=r2(tp);\ndocument.getElementById('ldc-totals').style.display='block';\nvar rms=b.querySelectorAll('.rm');for(var j=0;j<rms.length;j++)rms[j].addEventListener('click',function(e){rows.splice(parseInt(e.target.dataset.i),1);render();bolus();});\nbolus(tc);\n}\nfunction bolus(tc){\nif(tc===undefined){var t=0;for(var i=0;i<rows.length;i++){var f=FOODS[rows[i].id],g=rows[i].g;t+=f[1]*g\/100;}tc=t;}\nvar icr=parseFloat(document.getElementById('ldc-icr').value),cur=parseFloat(document.getElementById('ldc-cur').value),tgt=parseFloat(document.getElementById('ldc-tgt').value)||6,isf=parseFloat(document.getElementById('ldc-isf').value);\nvar out=document.getElementById('ldc-bolus-out');\nif(!icr||tc<=0){out.innerHTML='Enter your insulin-to-carb ratio above to see a bolus estimate.';return;}\nvar carbDose=tc\/icr,corrDose=0;\nif(cur&#038;&#038;isf&#038;&#038;cur>tgt){corrDose=(cur-tgt)\/isf;}\nvar total=carbDose+corrDose;\nout.innerHTML='Carb bolus: <strong>'+r2(carbDose)+' units<\/strong>'+(corrDose>0?(' &nbsp;+&nbsp; correction: <strong>'+r2(corrDose)+' units<\/strong>'):'')+' &nbsp;=&nbsp; <span style=\"color:#0d5a78;font-size:1.2em\">'+r2(total)+' units<\/span> total<br><span style=\"font-size:.85em;color:#666\">Round per your team\\'s usual rounding rule.<\/span>';\n}\ndocument.getElementById('ldc-add').addEventListener('click',function(){\nvar id=parseInt(sel.value),g=parseInt(document.getElementById('ldc-portion').value);\nif(isNaN(id)||!g)return;\nrows.push({id:id,g:g});render();\n});\n['ldc-icr','ldc-cur','ldc-tgt','ldc-isf'].forEach(function(id){document.getElementById(id).addEventListener('input',function(){bolus();});});\nrender();\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">How carb counting works<\/h2>\n\n\n\n<p>Carbohydrate is the macronutrient with the largest direct effect on blood glucose. For people on mealtime (&#8220;bolus&#8221;) insulin, matching insulin to grams of carbohydrate is the foundation of accurate dosing \u2014 and the basis of every modern insulin pump&#8217;s bolus calculator.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Total carbohydrate<\/strong> = the carbs declared on a food label or in a food table.<\/li>\n<li><strong>Fibre<\/strong> doesn&#8217;t raise glucose for most people, so it&#8217;s typically subtracted to give &#8220;net carbs.&#8221;<\/li>\n<li><strong>Net carbs<\/strong> = total \u2212 fibre. Useful, but check what your team prefers \u2014 UK practice typically dose-counts total carbs, while US and ketogenic communities use net carbs.<\/li>\n<li><strong>Protein<\/strong> has minimal acute glucose effect in most people but a large protein meal (~30 g+) can raise glucose 2\u20133 hours later, particularly in type 1 diabetes \u2014 discuss &#8220;protein insulin&#8221; rules with your team if this affects you.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How the bolus calculation works<\/h2>\n\n\n\n<p>Two numbers do most of the work:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Insulin-to-carb ratio (ICR or I:C):<\/strong> how many grams of carbs are covered by 1 unit of rapid-acting insulin. A typical adult ICR is 1:8 to 1:15 grams per unit, but yours is whatever your team has set for you.<\/li>\n<li><strong>Insulin sensitivity factor (ISF) \/ correction factor:<\/strong> how much 1 unit drops your glucose. Typical adult range: 1 unit drops 1.5\u20134 mmol\/L (27\u201372 mg\/dL).<\/li>\n<\/ul>\n\n\n\n<p>The calculator uses:<\/p>\n\n\n\n<p><strong>Carb dose<\/strong> = total carbs \u00f7 ICR<br><strong>Correction dose<\/strong> = (current glucose \u2212 target) \u00f7 ISF, but only if current glucose is above target<br><strong>Total dose<\/strong> = carb dose + correction dose<\/p>\n\n\n\n<p>This is the same logic used by every bolus advisor on every pump and CGM-linked glucometer. Your real prescriber-approved settings come from your team \u2014 never make them up from a calculator.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What this calculator does <em>not<\/em> account for<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Insulin on board<\/strong> (insulin from a previous bolus that&#8217;s still working). Pumps track this; this tool doesn&#8217;t.<\/li>\n<li><strong>Fat &amp; protein impact<\/strong> on delayed glucose rise after high-fat or high-protein meals.<\/li>\n<li><strong>Glycaemic index\/load<\/strong> \u2014 refined carbs hit faster than slow-release ones; some people split or &#8220;extend&#8221; their bolus to match.<\/li>\n<li><strong>Exercise<\/strong> in the next several hours, which can drop glucose substantially.<\/li>\n<li><strong>Illness, hormonal cycles, dawn phenomenon<\/strong> and other variables that change ICR\/ISF day-to-day.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently asked questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Should I count total carbs or net carbs?<\/h3>\n\n\n\n<p>Whichever your diabetes team taught you. UK-trained teams usually count total carbohydrate; many US patients and most ketogenic communities count net carbs (total \u2212 fibre). Both work \u2014 the key is consistency, so your insulin doses match your tracking.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Where do these carb values come from?<\/h3>\n\n\n\n<p>The food table is built from USDA FoodData Central with cross-checks against Diabetes UK food data. Cooked weights are used where applicable. Real-world values vary by brand, recipe, and cooking method by \u00b120% \u2014 always check the label when one is available.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What if my food isn&#8217;t on the list?<\/h3>\n\n\n\n<p>Use the closest analogue, or check the package label, or use the free <a href=\"https:\/\/fdc.nal.usda.gov\/\" rel=\"nofollow noopener\" target=\"_blank\">USDA FoodData Central<\/a> database. UK shoppers can use the carb-per-100 g value on any nutrition label \u2014 that&#8217;s the same unit this tool uses.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why does my pump suggest a different dose?<\/h3>\n\n\n\n<p>Pump bolus calculators include &#8220;insulin on board&#8221; \u2014 the residual insulin from your last bolus that&#8217;s still working. That can reduce the suggested dose. If yours differs from this tool by more than a unit or two, trust the pump (or your team&#8217;s calculation).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I use this on a low-carb diet?<\/h3>\n\n\n\n<p>Yes \u2014 it works the same way. Add your foods, see total carbs, dose accordingly. People following a ketogenic or very-low-carb diet will see almost no carb bolus at most meals; the tool will still flag any correction dose if your starting glucose is above target.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Related guides<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/livingdiabetes.com\/diabetes-diet\/\">Diabetes Diet: Mediterranean, Low-Carb, Keto and Plant-Based<\/a><\/li>\n<li><a href=\"https:\/\/livingdiabetes.com\/diabetes-medications\/\">Diabetes Medications: a complete guide<\/a><\/li>\n<li><a href=\"https:\/\/livingdiabetes.com\/insulin-resistance\/\">Insulin Resistance: Causes, Tests, and How to Reverse It<\/a><\/li>\n<\/ul>\n\n\n\n<p><em>References: USDA FoodData Central. Diabetes UK food data tables. NICE NG17 (Type 1 diabetes in adults). NICE NG18 (Type 1 and 2 diabetes in children and young people). ADA Standards of Care 2026. Reviewed: May 2026.<\/em><\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Build a meal from a 100+ food database. See total carbs, fibre, net carbs, and protein. Optional bolus insulin estimate using your insulin-to-carb ratio and correction factor.<\/p>","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-3194","page","type-page","status-publish","hentry"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Claude SEO","author_link":"https:\/\/livingdiabetes.com\/ur\/author\/claude-seo\/"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"Build a meal from a 100+ food database. See total carbs, fibre, net carbs, and protein. Optional bolus insulin estimate using your insulin-to-carb ratio and correction factor.","_links":{"self":[{"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/pages\/3194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/comments?post=3194"}],"version-history":[{"count":0,"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/pages\/3194\/revisions"}],"wp:attachment":[{"href":"https:\/\/livingdiabetes.com\/ur\/wp-json\/wp\/v2\/media?parent=3194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}