{"id":2081,"date":"2026-07-30T00:14:26","date_gmt":"2026-07-29T23:14:26","guid":{"rendered":"https:\/\/boldgambler.com\/uk\/?post_type=apostas&#038;p=2081"},"modified":"2026-07-31T02:41:28","modified_gmt":"2026-07-31T01:41:28","slug":"league-one-promotion-relegation-odds","status":"publish","type":"apostas","link":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/","title":{"rendered":"League One 2026\/27 Odds: Leicester, Owls &amp; Lutons Lead Promotion Race"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The 2026\/27 Sky Bet League One campaign is shaping up to be an absolute cracker. With the first fixtures kicking off in August, the bookies have already had their say on who will be climbing up to the Championship and who will be facing the dreaded drop.<\/p>\n\n\n\n<h2 id=\"h-top-promotion-favourites\" class=\"wp-block-heading\">Top Promotion Favourites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s start by looking at the top three favourites to secure promotion to the second tier:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Leicester City (4\/5)<\/strong>: The Foxes are the overwhelming favourites to bounce straight back up after their relegation from the Championship. Now under the guidance of new gaffer Russell Martin, expectations will be sky-high at the King Power Stadium.<\/li>\n\n\n\n<li><strong>Sheffield Wednesday (2\/1)<\/strong>: Another massive club that suffered relegation last term, Wednesday are heavily backed to make an immediate return.<\/li>\n\n\n\n<li><strong>Luton Town (11\/4)<\/strong>: After narrowly missing out on the play-offs with a 7th place finish last season, Jack Wilshere&#8217;s Hatters are tipped by the bookmakers to be right in the mix for promotion this year.<\/li>\n<\/ol>\n\n\n<style id=\"bg-odds-css\">.bg-odds-wrap{border:1px solid #e5e7eb;border-radius:14px;background:#fff;padding:18px 18px 12px;margin:1.4em 0;font-family:inherit}\n.bg-odds-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}\n.bg-odds-title{font-weight:700;font-size:1.05rem;color:var(--bgo-p,#111827)}\n.bg-odds-meta{display:flex;align-items:center;gap:10px;font-size:.78rem;color:#6b7280}\n.bg-odds-live{display:inline-flex;align-items:center;gap:6px;background:var(--bgo-a,#ef4444);color:#fff;font-weight:700;font-size:.68rem;letter-spacing:.04em;padding:3px 9px;border-radius:999px}\n.bg-odds-live i{width:7px;height:7px;border-radius:50%;background:#fff;display:inline-block;animation:bgoPulse 1.6s ease-in-out infinite}\n@keyframes bgoPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.7)}}\n.bg-odds-legend{display:flex;gap:10px 18px;flex-wrap:wrap;margin:14px 0 2px;padding-top:12px;border-top:1px solid #f0f1f3;font-size:.8rem;justify-content:center}\n.bg-odds-legend .bgo-li{display:inline-flex;align-items:center;gap:6px;color:#6b7280;background:none;border:0;padding:3px 6px;margin:0;font:inherit;line-height:1.4;cursor:pointer;border-radius:6px;transition:opacity .15s,background .15s}\n.bg-odds-legend .bgo-li:hover{background:#f6f7f9}\n.bg-odds-legend .bgo-li.is-off{opacity:.45}\n.bg-odds-legend .bgo-li.is-off .bgo-name,.bg-odds-legend .bgo-li.is-off .bgo-val{color:#9ca3af;font-weight:400}\n.bg-odds-legend .bgo-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}\n.bg-odds-legend .bgo-name{color:#374151}\n.bg-odds-legend .bgo-val{font-weight:600;color:#111827;margin-left:2px}\n.bg-odds-legend .bgo-delta{font-size:.72rem;font-weight:700;margin-left:3px;letter-spacing:-.02em}\n.bg-odds-legend .bgo-delta.bgo-down{color:#059669}\n.bg-odds-legend .bgo-delta.bgo-up{color:#dc2626}\n.bg-odds-legend .bgo-li.is-off .bgo-delta{color:#9ca3af;font-weight:400}\n.bg-odds-elim{text-align:center;font-size:.76rem;color:#9ca3af;margin:2px 0 2px;padding:0 8px}\n.bg-odds-elim .bgo-elim-lbl{font-weight:600;color:#6b7280}\n.bg-odds-elim .bgo-elim-name{text-decoration:line-through;margin:0 1px}\n.bg-odds-body{position:relative;margin-top:4px}\n.bg-odds-body svg{display:block;width:100%;height:auto}\n.bg-odds-msg{padding:34px 0;text-align:center;color:#9ca3af;font-size:.9rem}\n.bg-odds-foot{margin-top:10px;padding-top:8px;font-size:.76rem;color:#9ca3af}\n.bg-odds-footwrap{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;flex-wrap:wrap}\n.bg-odds-cta{display:inline-block;background:var(--bgo-a,#ef4444);color:#fff;font-weight:700;font-size:.95rem;text-decoration:none;padding:10px 22px;border-radius:9px;transition:filter .15s}\n.bg-odds-cta:hover{filter:brightness(1.08);color:#fff}\n.bg-odds-tip{position:absolute;pointer-events:none;background:#111827;color:#f9fafb;border-radius:8px;padding:7px 10px;font-size:.75rem;line-height:1.55;white-space:nowrap;opacity:0;transition:opacity .12s;z-index:5;box-shadow:0 4px 14px rgba(0,0,0,.18)}\n.bg-odds-tip .bgo-td{color:#9ca3af;margin-bottom:2px}\n.bg-odds-tip .bgo-sub{color:#9ca3af}\n@media(max-width:600px){.bg-odds-wrap{padding:14px 12px 8px}.bg-odds-legend{gap:12px;font-size:.8rem}}<\/style><script id=\"bg-odds-cfg\">window.BG_ODDS_CFG={\"rest\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/wp-json\\\/bg-odds\\\/v1\\\/series\\\/\",\"lang\":\"en\",\"poll\":60,\"palette\":[\"#FF4A4A\",\"#2563eb\",\"#059669\",\"#d97706\",\"#7c3aed\",\"#0891b2\",\"#dc2626\",\"#64748b\"],\"i18n\":{\"live\":\"LIVE\",\"updated\":\"Updated\",\"nodata\":\"No data yet\",\"closed\":\"Market closed\",\"manual\":\"Odds updated on\",\"toggle\":\"Click to show\\\/hide on the chart\",\"pick\":\"Click a team below to show its line\",\"since\":\"Change since first reading\",\"eliminated\":\"Eliminated\"}};<\/script><script id=\"bg-odds-js\">\/\/<BGJS>\n(function(){\n'use strict';\nvar CFG=window.BG_ODDS_CFG||{};\nvar LOCALES={pt:'pt-BR',es:'es',en:'en-US'};\n\nfunction fmtVal(v,format){\n  if(format==='decimal'){return Number(v).toFixed(2);}\n  var n=Number(v);\n  return (n>=10?Math.round(n):(Math.round(n*10)\/10))+'%';\n}\nfunction fmtAmerican(a){\n  if(a===null||a===undefined||a===''){return null;}\n  var s=String(a);\n  if(s[0]!=='-'&&s[0]!=='+'&&!isNaN(Number(s))&&Number(s)>0){return '+'+s;}\n  return s;\n}\nfunction impliedFromDec(dec){ return (dec>0)? Math.round(1000\/dec)\/10 : null; } \/\/ 100\/dec, 1 casa\n\n\/\/ Escolhe a odd a exibir no formato do mercado (decimal|fractional|american).\n\/\/ Fracional\/americana so existem quando vieram do feed; sem elas, cai para decimal.\nfunction pickOdd(dec,frac,amer,oddsFmt){\n  if(oddsFmt==='fractional'&&frac){return frac;}\n  if(oddsFmt==='american'){var am=fmtAmerican(amer);if(am){return am;}}\n  if(dec!==null&&dec!==undefined&&Number(dec)>0){return Number(dec).toFixed(2);}\n  return null;\n}\n\/\/ Par exibido ao lado do nome: \"odd_no_formato_escolhido \u00b7 prob%\" (sem % duplicada).\nfunction fmtOddPair(dec,frac,amer,oddsFmt){\n  var odd=pickOdd(dec,frac,amer,oddsFmt);\n  var imp=(dec!==null&&dec!==undefined)?impliedFromDec(Number(dec)):null;\n  var parts=[];\n  if(odd){parts.push(odd);}\n  if(imp!==null){parts.push(imp+'%');}\n  return parts.length?parts.join(' \\u00b7 '):null;\n}\nfunction fmtDate(ts){\n  try{return new Date(ts*1000).toLocaleDateString(LOCALES[CFG.lang]||'en-US',{month:'short'});}catch(e){return '';}\n}\nfunction fmtDateTime(ts){\n  try{return new Date(ts*1000).toLocaleString(LOCALES[CFG.lang]||'en-US',{day:'2-digit',month:'short',hour:'2-digit',minute:'2-digit'});}catch(e){return '';}\n}\nfunction fmtTime(ts){\n  try{return new Date(ts*1000).toLocaleTimeString(LOCALES[CFG.lang]||'en-US',{hour:'2-digit',minute:'2-digit'});}catch(e){return '';}\n}\nfunction fmtStamp(ts){\n  try{return new Date(ts*1000).toLocaleDateString(LOCALES[CFG.lang]||'en-US',{day:'2-digit',month:'2-digit',year:'numeric'});}catch(e){return '';}\n}\n\/\/ Rotulo curto de eixo: \"24 jul\" \u2014 usado quando ha poucas coletas.\nfunction fmtDayShort(ts){\n  try{return new Date(ts*1000).toLocaleDateString(LOCALES[CFG.lang]||'en-US',{day:'2-digit',month:'short'});}catch(e){return '';}\n}\n\/\/ Variacao da ODD desde a abertura. Convencao de mercado:\n\/\/  odd caiu (shortened) = chance subiu = verde\/baixo\n\/\/  odd subiu (drifted)  = chance caiu  = vermelho\/cima\nfunction oddDelta(openDec,nowDec){\n  if(openDec===null||openDec===undefined||nowDec===null||nowDec===undefined){return null;}\n  var a=Number(openDec),b=Number(nowDec);\n  if(!isFinite(a)||!isFinite(b)||a<=0||b<=0){return null;}\n  var diff=b-a;\n  if(Math.abs(diff)<0.005){return {dir:0,pct:0};}\n  return {dir:diff>0?1:-1,pct:Math.round((diff\/a)*1000)\/10};\n}\nfunction niceTicks(min,max,target){\n  var span=max-min;if(span<=0){span=1;}\n  var steps=[0.1,0.2,0.25,0.5,1,2,2.5,5,10,20,25,50,100];\n  var step=steps[steps.length-1];\n  for(var i=0;i<steps.length;i++){if(span\/steps[i]<=target){step=steps[i];break;}}\n  var start=Math.ceil(min\/step)*step,out=[];\n  for(var v=start;v<=max+1e-9;v+=step){out.push(Math.round(v*100)\/100);}\n  return out;\n}\n\/\/ Cor estavel por SELECAO (nao por posicao): reordenar por favoritismo nao\n\/\/ pode trocar a cor de um time. Se sel.color existe, usa ela; senao, deriva\n\/\/ da palette por um hash simples da key (mesma key = sempre a mesma cor).\nfunction colorFor(sel,idx){\n  if(sel.color&&\/^#([0-9a-f]{3}){1,2}$\/i.test(sel.color)){return sel.color;}\n  var p=CFG.palette||['#ef4444'];\n  var k=String(sel.key||idx);\n  var h=0;\n  for(var i=0;i<k.length;i++){h=(h*31+k.charCodeAt(i))>>>0;}\n  return p[h%p.length];\n}\nfunction stepPath(pts,X,Y){\n  if(!pts.length){return '';}\n  var d='M'+X(pts[0][0]).toFixed(1)+' '+Y(pts[0][1]).toFixed(1);\n  for(var i=1;i<pts.length;i++){\n    d+='H'+X(pts[i][0]).toFixed(1)+'V'+Y(pts[i][1]).toFixed(1);\n  }\n  return d;\n}\n\/\/ Ultimo ponto <= t (semantica de step). Ponto: [t,v,dec,frac,amer].\nfunction pointAt(pts,t){\n  var p=null;\n  for(var i=0;i<pts.length;i++){\n    if(pts[i][0]<=t){p=pts[i];}else{break;}\n  }\n  return p;\n}\n\n\/\/ Ranking por favoritismo: menor odd decimal primeiro. Sem decimal, usa o valor\n\/\/ plotado (maior % = mais favorito; menor odd = mais favorito).\nfunction favRank(latest,key,format){\n  var lt=latest&&latest[key]?latest[key]:null;\n  if(!lt){return Infinity;}\n  if(lt.dec!==null&&lt.dec!==undefined&&Number(lt.dec)>0){return Number(lt.dec);}\n  var v=Number(lt.v);\n  if(!isFinite(v)){return Infinity;}\n  return (format==='decimal')? v : (v>0? 100\/v : Infinity);\n}\n\n\/\/ Estado de visibilidade por linha. Na primeira renderizacao liga os TOP N\n\/\/ favoritos; depois respeita o que o leitor clicou (persistido no elemento).\nfunction visState(wrap,data,format){\n  if(wrap.__bgoVis){return wrap.__bgoVis;}\n  var top=parseInt(wrap.getAttribute('data-top'),10);\n  if(isNaN(top)||top<0){top=5;}\n  var sels=data.selections||[];\n  var order=sels.map(function(s){return {key:s.key,r:favRank(data.latest,s.key,format)};});\n  order.sort(function(a,b){return a.r-b.r;});\n  var vis={};\n  sels.forEach(function(s){vis[s.key]=false;});\n  order.slice(0,top).forEach(function(o){vis[o.key]=true;});\n  wrap.__bgoVis=vis;\n  return vis;\n}\n\nfunction render(wrap,data){\n  var body=wrap.querySelector('.bg-odds-body');\n  var legend=wrap.querySelector('.bg-odds-legend');\n  var meta=wrap.querySelector('.bg-odds-meta');\n  var H=parseInt(wrap.getAttribute('data-height'),10)||320;\n  var W=Math.max(300,body.clientWidth||640);\n  var format=data.market.format||'percent';\n  var oddsFmt=data.market.odds_fmt||'decimal';\n\n  meta.innerHTML='';\n  if(data.market.manual_updated){\n    var up=document.createElement('span');\n    up.textContent=CFG.i18n.manual+' '+fmtStamp(data.market.manual_updated);\n    meta.appendChild(up);\n  }\n\n  \/\/ Rodape editorial some \u2014 a data agora vai no topo. Mantem o wrap para o CTA.\n  var foot=wrap.querySelector('.bg-odds-foot');\n  if(foot){ foot.style.display='none'; }\n\n  legend.innerHTML='';\n  \/\/ Ordena por FAVORITISMO ATUAL (nao pela ordem de cadastro). Assim quando um\n  \/\/ time ultrapassa outro (ex: Flamengo passa o Palmeiras), a ordem visual na\n  \/\/ legenda e no desenho acompanha, em vez de ficar presa a ordem antiga.\n  var sels=(data.selections||[]).slice().sort(function(a,b){\n    return favRank(data.latest,a.key,format)-favRank(data.latest,b.key,format);\n  });\n  \/\/ Indice de cada selecao na ordem final \u2014 allPts[__idx] pertence a este sel.\n  sels.forEach(function(sel,idx){ sel.__idx=idx; });\n  var vis=visState(wrap,data,format);\n\n  \/\/ Mapa de cores calculado UMA VEZ, por sel.key. Legenda, linhas e tooltip\n  \/\/ leem TODOS deste mesmo mapa \u2014 nunca recalculam por conta propria \u2014 para\n  \/\/ que a cor de um time nunca possa divergir entre as partes do grafico.\n  var colorMap={};\n  sels.forEach(function(sel,idx){ colorMap[sel.key]=colorFor(sel,idx); });\n  function colorOf(sel){ return colorMap[sel.key]||colorFor(sel,0); }\n\n  sels.forEach(function(sel,idx){\n    var c=colorOf(sel);\n    var on=!!vis[sel.key];\n    var lt=data.latest&&data.latest[sel.key]?data.latest[sel.key]:null;\n    var li=document.createElement('button');\n    li.type='button';\n    li.className='bgo-li'+(on?' is-on':' is-off');\n    li.setAttribute('aria-pressed',on?'true':'false');\n    li.title=CFG.i18n.toggle||'';\n    var html='<span class=\"bgo-dot\" style=\"background:'+(on?c:'transparent')+';box-shadow:inset 0 0 0 2px '+c+'\"><\/span><span class=\"bgo-name\">'+sel.label+'<\/span>';\n    if(lt){\n      \/\/ Mostra a ODD no formato escolhido (nao a probabilidade). Sem odd => cai para o valor plotado.\n      var odd=pickOdd(lt.dec,lt.frac,lt.amer,oddsFmt);\n      html+='<span class=\"bgo-val\">'+(odd||fmtVal(lt.v,format))+'<\/span>';\n      \/\/ Variacao desde a abertura (so aparece se houve movimento real).\n      var op=data.opening&&data.opening[sel.key]?data.opening[sel.key]:null;\n      if(op){\n        var d=oddDelta(op.dec,lt.dec);\n        if(d&&d.dir!==0){\n          var arrow=d.dir<0?'\\u25BC':'\\u25B2';\n          var cls=d.dir<0?'bgo-down':'bgo-up';\n          html+='<span class=\"bgo-delta '+cls+'\" title=\"'+(CFG.i18n.since||'')+'\">'+arrow+Math.abs(d.pct)+'%<\/span>';\n        }\n      }\n    }\n    li.innerHTML=html;\n    li.addEventListener('click',function(){\n      wrap.__bgoVis[sel.key]=!wrap.__bgoVis[sel.key];\n      render(wrap,data);\n    });\n    legend.appendChild(li);\n  });\n\n  \/\/ Secao \"Eliminados\": nomes riscados, fora do grafico. So aparece se houver.\n  var elimWrap=wrap.querySelector('.bg-odds-elim');\n  var elim=data.eliminated||[];\n  if(elim.length){\n    if(!elimWrap){\n      elimWrap=document.createElement('div');elimWrap.className='bg-odds-elim';\n      legend.parentNode.insertBefore(elimWrap,legend.nextSibling);\n    }\n    var eh='<span class=\"bgo-elim-lbl\">'+(CFG.i18n.eliminated||'Eliminados')+':<\/span> ';\n    eh+=elim.map(function(e){return '<span class=\"bgo-elim-name\">'+e.label+'<\/span>';}).join(', ');\n    elimWrap.innerHTML=eh;\n    elimWrap.style.display='';\n  }else if(elimWrap){\n    elimWrap.style.display='none';\n  }\n\n  \/\/ Escala e linhas consideram APENAS as selecoes visiveis.\n  var allPts=[],tMin=Infinity,tMax=-Infinity,vMin=Infinity,vMax=-Infinity,anyVis=false;\n  sels.forEach(function(sel){\n    var pts=(data.series&&data.series[sel.key])||[];\n    allPts.push(pts);\n    if(!vis[sel.key]){return;}\n    anyVis=true;\n    pts.forEach(function(p){\n      if(p[0]<tMin){tMin=p[0];}if(p[0]>tMax){tMax=p[0];}\n      if(p[1]<vMin){vMin=p[1];}if(p[1]>vMax){vMax=p[1];}\n    });\n  });\n\n  if(!anyVis){\n    body.innerHTML='<div class=\"bg-odds-msg\">'+(CFG.i18n.pick||CFG.i18n.nodata)+'<\/div>';\n    return;\n  }\n  if(!isFinite(tMin)||tMax<=tMin){\n    body.innerHTML='<div class=\"bg-odds-msg\">'+CFG.i18n.nodata+'<\/div>';\n    return;\n  }\n\n  \/\/ ---- Decide escala do eixo Y: linear ou logaritmica ----\n  \/\/ Quando ha um favorito muito destacado e um pelotao amontoado embaixo (ex:\n  \/\/ campeao a 47% e o resto entre 6-20%), a escala linear espreme o pelotao\n  \/\/ numa faixa fininha e deixa um vazio enorme no meio. A escala log comprime o\n  \/\/ topo e expande a base, dando espaco pra disputa real entre os azaroes.\n  \/\/ So vale para o eixo de probabilidade (percent) e so quando a disparidade\n  \/\/ justifica \u2014 num grafico equilibrado, log deixaria estranho ao contrario.\n  var useLog=false;\n  if(format==='percent'){\n    var lo=vMin,hi=vMax;\n    \/\/ Razao entre o teto e o piso dos dados visiveis. >4x = disparidade grande.\n    if(lo>0.4 && hi\/lo>=4){ useLog=true; }\n  }\n\n  if(useLog){\n    \/\/ Dominio log: do menor \"nice\" abaixo do piso ao maior \"nice\" acima do teto,\n    \/\/ em passos de potencia (1,2,5 x10^n). Clampado em [0.5, 100].\n    var lgMin=Math.max(0.5, vMin);\n    var lgMax=Math.min(100, vMax);\n    \/\/ Folga: meia decada abaixo\/acima para os pontos nao colarem na borda.\n    lgMin=Math.pow(10, Math.floor(Math.log10(lgMin)*2)\/2);\n    lgMax=Math.pow(10, Math.ceil(Math.log10(lgMax)*2)\/2);\n    lgMin=Math.max(0.5, Math.min(lgMin, vMin*0.85));\n    lgMax=Math.min(100, Math.max(lgMax, vMax*1.05));\n    vMin=lgMin; vMax=lgMax;\n  }else if(format==='percent'){\n    vMin=Math.max(0,Math.floor(vMin\/10)*10-0);\n    vMax=Math.min(100,Math.ceil(vMax\/10)*10);\n    if(vMax-vMin<10){vMax=Math.min(100,vMin+10);}\n  }else{\n    var pad=(vMax-vMin)*0.12||0.2;vMin=Math.max(0,vMin-pad);vMax=vMax+pad;\n  }\n\n  var padL=14,padR=58,padT=16,padB=26;\n  var iw=W-padL-padR,ih=H-padT-padB;\n\n  \/\/ ---- Eixo X por MEDICAO (nao por tempo real) ----\n  \/\/ Todos os timestamps distintos das linhas visiveis, em ordem. Cada um ocupa\n  \/\/ uma fatia igual do grafico: 2 medicoes => mudanca no meio; 3 => em tercos.\n  var tset={};\n  sels.forEach(function(sel,idx){\n    if(!vis[sel.key]){return;}\n    (allPts[idx]||[]).forEach(function(p){tset[p[0]]=true;});\n  });\n  var tkeys=Object.keys(tset).map(Number).sort(function(a,b){return a-b;});\n  var tPos={};\n  var denom=Math.max(1,tkeys.length-1);\n  tkeys.forEach(function(tv,i){tPos[tv]=i\/denom;});\n  function X(t){\n    var pos=tPos[t];\n    if(pos===undefined){\n      \/\/ t fora dos pontos (ex: posicao do mouse): interpola entre vizinhos.\n      if(t<=tkeys[0])pos=0;\n      else if(t>=tkeys[tkeys.length-1])pos=1;\n      else{\n        for(var i=0;i<tkeys.length-1;i++){\n          if(t>=tkeys[i]&&t<=tkeys[i+1]){\n            var frac=(t-tkeys[i])\/((tkeys[i+1]-tkeys[i])||1);\n            pos=(i+frac)\/denom;break;\n          }\n        }\n      }\n    }\n    return padL+pos*iw;\n  }\n  \/\/ Y: linear por padrao; logaritmica quando useLog (comprime topo, expande base).\n  var logMin=useLog?Math.log10(vMin):0, logMax=useLog?Math.log10(vMax):0;\n  var logSpan=(logMax-logMin)||1;\n  function Y(v){\n    if(useLog){\n      var vv=Math.max(v,vMin*0.5); \/\/ evita log(0)\/negativo em valores minusculos\n      return padT+ih-((Math.log10(vv)-logMin)\/logSpan)*ih;\n    }\n    return padT+ih-((v-vMin)\/(vMax-vMin))*ih;\n  }\n\n  var ns='http:\/\/www.w3.org\/2000\/svg';\n  var svg=document.createElementNS(ns,'svg');\n  svg.setAttribute('viewBox','0 0 '+W+' '+H);\n  svg.setAttribute('preserveAspectRatio','xMidYMid meet');\n\n  \/\/ Ticks: em log, usa a progressao 1-2-5 por decada (1,2,5,10,20,50) dentro do\n  \/\/ dominio; em linear, os ticks \"nice\" de sempre.\n  var yTicks;\n  if(useLog){\n    yTicks=[];\n    var bases=[1,2,5];\n    for(var dec=-1;dec<=2;dec++){\n      for(var bi=0;bi<bases.length;bi++){\n        var tv=bases[bi]*Math.pow(10,dec);\n        if(tv>=vMin-1e-9 && tv<=vMax+1e-9){ yTicks.push(Math.round(tv*100)\/100); }\n      }\n    }\n    if(!yTicks.length){ yTicks=[vMin,vMax]; }\n  }else{\n    yTicks=niceTicks(vMin,vMax,5);\n  }\n  yTicks.forEach(function(v){\n    var y=Y(v);\n    var ln=document.createElementNS(ns,'line');\n    ln.setAttribute('x1',padL);ln.setAttribute('x2',W-padR);\n    ln.setAttribute('y1',y);ln.setAttribute('y2',y);\n    ln.setAttribute('stroke','#e5e7eb');ln.setAttribute('stroke-dasharray','2 4');\n    svg.appendChild(ln);\n    var tx=document.createElementNS(ns,'text');\n    tx.setAttribute('x',W-padR+8);tx.setAttribute('y',y+4);\n    tx.setAttribute('fill','#9ca3af');tx.setAttribute('font-size','11');\n    tx.textContent=fmtVal(v,format);\n    svg.appendChild(tx);\n  });\n\n  \/\/ Medicoes reais visiveis (exclui o ponto sintetico \"agora\"): sao os tkeys\n  \/\/ que existem em data.stamps. Cada uma vira um rotulo + guia vertical.\n  var stampSet={};(data.stamps||[]).forEach(function(s){stampSet[s]=true;});\n  var realStamps=tkeys.filter(function(t){return stampSet[t];});\n  var many=realStamps.length>8;\n  var lastLabX=-999;\n  realStamps.forEach(function(s){\n    var x=X(s);\n    var gl=document.createElementNS(ns,'line');\n    gl.setAttribute('x1',x);gl.setAttribute('x2',x);\n    gl.setAttribute('y1',padT);gl.setAttribute('y2',padT+ih);\n    gl.setAttribute('stroke','#eef0f2');gl.setAttribute('stroke-width','1');\n    svg.appendChild(gl);\n    \/\/ Com muitas medicoes, rotula so as que nao colam; com poucas, rotula todas.\n    if(!many || x-lastLabX>=52){\n      lastLabX=x;\n      var tl=document.createElementNS(ns,'text');\n      tl.setAttribute('x',x);tl.setAttribute('y',H-8);\n      tl.setAttribute('fill','#9ca3af');tl.setAttribute('font-size','11');\n      \/\/ Extremos ancoram para dentro do canvas (senao o texto centralizado\n      \/\/ extrapola a borda e e cortado pelo viewBox \u2014 era o caso da 1a data).\n      var anchor='middle';\n      if(x<=padL+2){anchor='start';}\n      else if(x>=padL+iw-2){anchor='end';}\n      tl.setAttribute('text-anchor',anchor);\n      tl.textContent=fmtDayShort(s);\n      svg.appendChild(tl);\n    }\n  });\n  var sparse=true; \/\/ sempre desenha marcadores nas medicoes (eixo por medicao)\n\n  \/\/ ---- Jitter anti-sobreposicao ----\n  \/\/ Em cada timestamp, linhas visiveis cujo Y cai dentro de JT pixels sao\n  \/\/ consideradas \"empatadas\" e recebem um deslocamento vertical simetrico, para\n  \/\/ nao desenharem uma exatamente sobre a outra. Nao altera dados: o dot, o\n  \/\/ tooltip e a legenda seguem mostrando o valor real.\n  var JT=3.0;        \/\/ tolerancia de empate, em px\n  var JSTEP=3.2;     \/\/ afastamento entre linhas empatadas, em px\n  var visIdx=[];\n  sels.forEach(function(sel,idx){ if(vis[sel.key]&&allPts[idx]&&allPts[idx].length){visIdx.push(idx);} });\n\n  \/\/ offAt[idx][t] = deslocamento em px daquela linha naquele timestamp.\n  var offAt={};\n  visIdx.forEach(function(idx){offAt[idx]={};});\n  tkeys.forEach(function(t){\n    \/\/ valor Y de cada linha visivel neste t\n    var here=[];\n    visIdx.forEach(function(idx){\n      var p=pointAt(allPts[idx],t);\n      if(p){here.push({idx:idx,y:Y(p[1])});}\n    });\n    \/\/ agrupa por proximidade de Y\n    here.sort(function(a,b){return a.y-b.y;});\n    var used={};\n    for(var i=0;i<here.length;i++){\n      if(used[here[i].idx])continue;\n      var group=[here[i]];used[here[i].idx]=true;\n      for(var j=i+1;j<here.length;j++){\n        if(!used[here[j].idx]&&Math.abs(here[j].y-here[i].y)<=JT){\n          group.push(here[j]);used[here[j].idx]=true;\n        }\n      }\n      if(group.length>1){\n        \/\/ distribui simetricamente em torno do Y comum\n        var mid=(group.length-1)\/2;\n        group.forEach(function(g,gi){ offAt[g.idx][t]=(gi-mid)*JSTEP; });\n      }\n    }\n  });\n  function Yoff(idx,t,v){var o=offAt[idx]&&offAt[idx][t]!==undefined?offAt[idx][t]:0;return Y(v)+o;}\n  \/\/ stepPath com deslocamento por ponto (usa o t de cada ponto para achar o offset).\n  function stepPathJ(idx,pts){\n    if(!pts.length)return '';\n    var d='M'+X(pts[0][0]).toFixed(1)+' '+Yoff(idx,pts[0][0],pts[0][1]).toFixed(1);\n    for(var i=1;i<pts.length;i++){\n      d+='H'+X(pts[i][0]).toFixed(1)+'V'+Yoff(idx,pts[i][0],pts[i][1]).toFixed(1);\n    }\n    return d;\n  }\n\n  sels.forEach(function(sel,idx){\n    if(!vis[sel.key]){return;}\n    var pts=allPts[idx];if(!pts.length){return;}\n    var c=colorOf(sel);\n    var path=document.createElementNS(ns,'path');\n    path.setAttribute('d',stepPathJ(idx,pts));\n    path.setAttribute('fill','none');\n    path.setAttribute('stroke',c);\n    path.setAttribute('stroke-width','2');\n    path.setAttribute('stroke-linejoin','round');\n    svg.appendChild(path);\n\n    \/\/ Com poucas medicoes, marca cada coleta real (o 6o elemento marca o ponto\n    \/\/ sintetico \"agora\", que nao recebe marcador).\n    if(sparse){\n      pts.forEach(function(p){\n        if(p[5]){return;}\n        var m=document.createElementNS(ns,'circle');\n        m.setAttribute('cx',X(p[0]));m.setAttribute('cy',Yoff(idx,p[0],p[1]));\n        m.setAttribute('r','3.2');\n        m.setAttribute('fill','#fff');\n        m.setAttribute('stroke',c);\n        m.setAttribute('stroke-width','2');\n        svg.appendChild(m);\n      });\n    }\n\n    var last=pts[pts.length-1];\n    var dot=document.createElementNS(ns,'circle');\n    dot.setAttribute('cx',X(last[0]));dot.setAttribute('cy',Yoff(idx,last[0],last[1]));\n    dot.setAttribute('r','4.2');dot.setAttribute('fill',c);\n    svg.appendChild(dot);\n  });\n\n  var hover=document.createElementNS(ns,'line');\n  hover.setAttribute('y1',padT);hover.setAttribute('y2',padT+ih);\n  hover.setAttribute('stroke','#9ca3af');hover.setAttribute('stroke-width','1');\n  hover.setAttribute('opacity','0');\n  svg.appendChild(hover);\n\n  body.innerHTML='';\n  body.appendChild(svg);\n  var tip=document.createElement('div');tip.className='bg-odds-tip';\n  body.appendChild(tip);\n\n  function onMove(ev){\n    var rect=svg.getBoundingClientRect();\n    var sx=(ev.clientX-rect.left)*(W\/rect.width);\n    if(sx<padL||sx>W-padR){onLeave();return;}\n    \/\/ Posicao relativa -> indice de medicao -> timestamp real (snap na medicao).\n    var pos=(sx-padL)\/iw; if(pos<0)pos=0; if(pos>1)pos=1;\n    var fi=pos*denom;\n    var ti=Math.round(fi);\n    if(ti<0)ti=0; if(ti>tkeys.length-1)ti=tkeys.length-1;\n    var t=tkeys[ti];\n    var snapX=X(t);\n    hover.setAttribute('x1',snapX);hover.setAttribute('x2',snapX);\n    hover.setAttribute('opacity','0.7');\n    var rows='<div class=\"bgo-td\">'+fmtStamp(t)+'<\/div>';\n    \/\/ Coleta os pontos visiveis NESTE instante e ordena pelo favoritismo do\n    \/\/ MOMENTO (menor odd primeiro), nao pelo favoritismo atual. Assim, ao olhar\n    \/\/ uma data passada, o favorito de entao aparece no topo do tooltip.\n    var hereRows=[];\n    sels.forEach(function(sel){\n      if(!vis[sel.key]){return;}\n      var idx=sel.__idx;\n      var p=pointAt(allPts[idx],t);\n      if(!p){return;}\n      \/\/ p = [ts, valorPlotado, dec, frac, amer]\n      var dec=(p[2]!==null&&p[2]!==undefined)?Number(p[2]):null;\n      var rank=(dec!==null&&dec>0)?dec:(format==='decimal'?Number(p[1]):(Number(p[1])>0?100\/Number(p[1]):Infinity));\n      hereRows.push({sel:sel,p:p,dec:dec,rank:rank});\n    });\n    hereRows.sort(function(a,b){return a.rank-b.rank;});\n    hereRows.forEach(function(r){\n      var p=r.p;\n      var prob=(r.dec!==null)?impliedFromDec(r.dec):null;\n      var probStr=(prob!==null)?prob+'%':fmtVal(p[1],format);\n      var odd=pickOdd(p[2],p[3],p[4],oddsFmt);\n      var line='<span style=\"color:'+colorOf(r.sel)+'\">&#9679;<\/span> '+r.sel.label+': <strong>'+probStr+'<\/strong>';\n      if(odd){line+=' <span class=\"bgo-sub\">('+odd+')<\/span>';}\n      rows+='<div>'+line+'<\/div>';\n    });\n    tip.innerHTML=rows;\n    tip.style.opacity='1';\n    var px=(snapX\/W)*rect.width;\n    var flip=px>rect.width*0.62;\n    tip.style.left=flip?'auto':(px+12)+'px';\n    tip.style.right=flip?(rect.width-px+12)+'px':'auto';\n    tip.style.top='10px';\n  }\n  function onLeave(){hover.setAttribute('opacity','0');tip.style.opacity='0';}\n  svg.addEventListener('mousemove',onMove);\n  svg.addEventListener('mouseleave',onLeave);\n}\n\nfunction load(wrap){\n  var id=wrap.getAttribute('data-market');\n  fetch(CFG.rest+id,{credentials:'omit'})\n    .then(function(r){if(!r.ok){throw new Error('HTTP '+r.status);}return r.json();})\n    .then(function(data){\n      wrap.__bgoData=data;\n      render(wrap,data);\n    })\n    .catch(function(){\n      var body=wrap.querySelector('.bg-odds-body');\n      if(body){body.innerHTML='<div class=\"bg-odds-msg\">'+CFG.i18n.nodata+'<\/div>';}\n    });\n}\n\nfunction init(){\n  var wraps=document.querySelectorAll('.bg-odds-wrap[data-market]');\n  if(!wraps.length){return;}\n  wraps.forEach(function(w){load(w);});\n\n  setInterval(function(){\n    if(document.hidden){return;}\n    wraps.forEach(function(w){\n      var d=w.__bgoData;\n      if(d&&d.market&&d.market.status!=='open'){return;}\n      load(w);\n    });\n  },(CFG.poll||60)*1000);\n\n  var rt=null;\n  window.addEventListener('resize',function(){\n    clearTimeout(rt);\n    rt=setTimeout(function(){\n      wraps.forEach(function(w){if(w.__bgoData){render(w,w.__bgoData);}});\n    },180);\n  });\n}\n\nif(document.readyState==='loading'){\n  document.addEventListener('DOMContentLoaded',init);\n}else{\n  init();\n}\n})();\n\/\/<\/BGJS><\/script><div class=\"bg-odds-wrap\" data-market=\"2078\" data-height=\"320\" data-top=\"5\" style=\"--bgo-p:#031426;--bgo-a:#FF4A4A;\"><div class=\"bg-odds-head\"><div class=\"bg-odds-title\">England League 1 2026\/27 \u2014 To Win Outright<\/div><div class=\"bg-odds-meta\"><\/div><\/div><div class=\"bg-odds-body\"><div class=\"bg-odds-msg\">Loading odds\u2026<\/div><\/div><div class=\"bg-odds-legend\"><\/div><div class=\"bg-odds-footwrap\"><div class=\"bg-odds-foot\"><\/div><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The battle at the top end of the table is always fiercely contested. While recently relegated clubs like Leicester, Sheffield Wednesday, and Oxford United (13\/2) usually arrive with high expectations, the competition is stiff. Teams like Huddersfield Town (4\/1), last season&#8217;s play-off finalists Stockport County (9\/2), and Plymouth Argyle (9\/2) are well-placed to challenge the favourites for a spot in the Championship.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bet365pag2<\/p>\n\n\n\n<h2 id=\"h-top-relegation-candidates\" class=\"wp-block-heading\">Top Relegation Candidates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At the other end of the pitch, the fight for survival will be just as dramatic. Here are the three sides the bookmakers have highlighted as the prime candidates for the drop:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bromley (11\/10)<\/strong>: Having just secured promotion from League Two, Bromley face a massive step up in quality. The bookies have them as joint-favourites to go straight back down to the fourth tier.<\/li>\n\n\n\n<li><strong>AFC Wimbledon (11\/10)<\/strong>: The Dons survived last season after finishing 19th in the table. Punters and bookmakers alike expect them to struggle massively again this term, sharing the top spot for relegation likelihood.<\/li>\n\n\n\n<li><strong>Burton Albion (11\/8)<\/strong>: The Brewers finished 17th in the 2025\/26 campaign. The odds suggest another long, gruelling season is on the cards for Burton as they try to avoid the drop.<\/li>\n<\/ol>\n\n\n<div class=\"bg-odds-wrap\" data-market=\"2079\" data-height=\"320\" data-top=\"5\" style=\"--bgo-p:#031426;--bgo-a:#FF4A4A;\"><div class=\"bg-odds-head\"><div class=\"bg-odds-title\">England League 1 2026\/27 \u2014 To be Relegated<\/div><div class=\"bg-odds-meta\"><\/div><\/div><div class=\"bg-odds-body\"><div class=\"bg-odds-msg\">Loading odds\u2026<\/div><\/div><div class=\"bg-odds-legend\"><\/div><div class=\"bg-odds-footwrap\"><div class=\"bg-odds-foot\"><\/div><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Surviving in League One requires sheer grit. It&#8217;s historically tough for newly promoted sides to cement their place, which is why we also see teams like Cambridge United (7\/4) and Notts County (11\/4) &#8211; both freshly promoted from League Two &#8211; high on the relegation odds list. Established clubs will need to put points on the board early to avoid getting dragged into a relegation dogfight, with sides like Peterborough, Leyton Orient, and Stevenage also seen as potential candidates to struggle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">williamhillpag2<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Leicester, Owls &#038; Luton lead League One promotion odds, while Bromley, AFC Wimbledon &#038; Burton face relegation battle. Full odds here.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"cat_apostas":[105],"hub_relacionado":[120],"class_list":["post-2081","apostas","type-apostas","status-publish","hentry","cat_apostas-league-one","hub_relacionado-league-one"],"acf":{"hreflang_group":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.3.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>League One 2026\/27 Odds: Leicester &amp; Owls Favourites for Up<\/title>\n<meta name=\"description\" content=\"Leicester, Owls &amp; Luton lead League One promotion odds, while Bromley, AFC Wimbledon &amp; Burton face relegation battle. Full odds here.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"League One 2026\/27 Odds: Leicester, Owls &amp; Lutons Lead Promotion Race\" \/>\n<meta property=\"og:description\" content=\"Leicester, Owls &amp; Luton lead League One promotion odds, while Bromley, AFC Wimbledon &amp; Burton face relegation battle. Full odds here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/\" \/>\n<meta property=\"og:site_name\" content=\"Bold Gambler UK\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-31T01:41:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/league-one-promotion-relegation-odds\\\/\",\"url\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/league-one-promotion-relegation-odds\\\/\",\"name\":\"League One 2026\\\/27 Odds: Leicester & Owls Favourites for Up\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#website\"},\"datePublished\":\"2026-07-29T23:14:26+00:00\",\"dateModified\":\"2026-07-31T01:41:28+00:00\",\"description\":\"Leicester, Owls & Luton lead League One promotion odds, while Bromley, AFC Wimbledon & Burton face relegation battle. Full odds here.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/league-one-promotion-relegation-odds\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/league-one-promotion-relegation-odds\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/league-one-promotion-relegation-odds\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"League One\",\"item\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/sports-betting\\\/league-one\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"League One 2026\\\/27 Odds: Leicester, Owls &amp; Lutons Lead Promotion Race\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#website\",\"url\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/\",\"name\":\"Bold Gambler UK\",\"description\":\"Trusted and Genuine Information on Online Games\",\"publisher\":{\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#organization\",\"name\":\"Bold Gambler UK\",\"url\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2025\\\/10\\\/cropped-Bold-Gambler-Transparente-Home.webp\",\"contentUrl\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2025\\\/10\\\/cropped-Bold-Gambler-Transparente-Home.webp\",\"width\":1535,\"height\":614,\"caption\":\"Bold Gambler UK\"},\"image\":{\"@id\":\"https:\\\/\\\/boldgambler.com\\\/uk\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"League One 2026\/27 Odds: Leicester & Owls Favourites for Up","description":"Leicester, Owls & Luton lead League One promotion odds, while Bromley, AFC Wimbledon & Burton face relegation battle. Full odds here.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/","og_locale":"en_GB","og_type":"article","og_title":"League One 2026\/27 Odds: Leicester, Owls &amp; Lutons Lead Promotion Race","og_description":"Leicester, Owls & Luton lead League One promotion odds, while Bromley, AFC Wimbledon & Burton face relegation battle. Full odds here.","og_url":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/","og_site_name":"Bold Gambler UK","article_modified_time":"2026-07-31T01:41:28+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/","url":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/","name":"League One 2026\/27 Odds: Leicester & Owls Favourites for Up","isPartOf":{"@id":"https:\/\/boldgambler.com\/uk\/#website"},"datePublished":"2026-07-29T23:14:26+00:00","dateModified":"2026-07-31T01:41:28+00:00","description":"Leicester, Owls & Luton lead League One promotion odds, while Bromley, AFC Wimbledon & Burton face relegation battle. Full odds here.","breadcrumb":{"@id":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/league-one-promotion-relegation-odds\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/boldgambler.com\/uk\/"},{"@type":"ListItem","position":2,"name":"League One","item":"https:\/\/boldgambler.com\/uk\/sports-betting\/league-one\/"},{"@type":"ListItem","position":3,"name":"League One 2026\/27 Odds: Leicester, Owls &amp; Lutons Lead Promotion Race"}]},{"@type":"WebSite","@id":"https:\/\/boldgambler.com\/uk\/#website","url":"https:\/\/boldgambler.com\/uk\/","name":"Bold Gambler UK","description":"Trusted and Genuine Information on Online Games","publisher":{"@id":"https:\/\/boldgambler.com\/uk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/boldgambler.com\/uk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/boldgambler.com\/uk\/#organization","name":"Bold Gambler UK","url":"https:\/\/boldgambler.com\/uk\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/boldgambler.com\/uk\/#\/schema\/logo\/image\/","url":"https:\/\/boldgambler.com\/uk\/wp-content\/uploads\/sites\/7\/2025\/10\/cropped-Bold-Gambler-Transparente-Home.webp","contentUrl":"https:\/\/boldgambler.com\/uk\/wp-content\/uploads\/sites\/7\/2025\/10\/cropped-Bold-Gambler-Transparente-Home.webp","width":1535,"height":614,"caption":"Bold Gambler UK"},"image":{"@id":"https:\/\/boldgambler.com\/uk\/#\/schema\/logo\/image\/"}}]}},"taxonomy_info":{"cat_apostas":[{"value":105,"label":"League One"}],"hub_relacionado":[{"value":120,"label":"League One"}]},"featured_image_src_large":false,"author_info":{"display_name":"Lucas Portela","author_link":"https:\/\/boldgambler.com\/uk\/author\/loucosporapostasgmail-com\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/apostas\/2081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/apostas"}],"about":[{"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/types\/apostas"}],"author":[{"embeddable":true,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/comments?post=2081"}],"version-history":[{"count":2,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/apostas\/2081\/revisions"}],"predecessor-version":[{"id":2083,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/apostas\/2081\/revisions\/2083"}],"wp:attachment":[{"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/media?parent=2081"}],"wp:term":[{"taxonomy":"cat_apostas","embeddable":true,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/cat_apostas?post=2081"},{"taxonomy":"hub_relacionado","embeddable":true,"href":"https:\/\/boldgambler.com\/uk\/wp-json\/wp\/v2\/hub_relacionado?post=2081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}