Descubra, em menos de 1 minuto, uma estimativa de quantos anos você pode viver com base em idade, sexo e hábitos de vida — como atividade física , sono, tabagismo e condições de saúde. A calculadora abaixo usa referências populacionais e aplica ajustes simples por estilo de vida para oferecer uma visão aproximada dos seus anos restantes e da idade estimada ao falecimento.
VIDEO
Quer somar anos ao seu resultado?
A inflamação crônica é o denominador comum das doenças que encurtam a vida. O Código da Inflamação explica como reconhecê-la e reduzi-la.
Conhecer o livro →
Use o resultado como um ponto de partida para refletir sobre mudanças que aumentem qualidade e longevidade (ex.: mover mais, dormir melhor, controlar pressão e glicemia). Se quiser discutir estratégias personalizadas, agende uma consulta .
Aviso : esta ferramenta é educativa e não substitui avaliação médica, exames ou cálculos atuariais.
#le-widget { –bg:#fff; –fg:#111; –muted:#6b7280; –acc:#6d28d9; –ok:#10b981; –bad:#ef4444; –card:#f8fafc; –line:#e5e7eb; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, sans-serif; color:var(–fg); }
#le-widget .le-wrap{max-width:760px;margin:1.25rem auto;padding:1rem;border:1px solid var(–line);border-radius:16px;background:var(–bg);box-shadow:0 6px 24px rgba(0,0,0,.06)}
#le-widget h2{margin:0 0 .5rem;font-size:1.35rem}
#le-widget p.le-note{margin:.25rem 0 1rem;color:var(–muted);font-size:.9rem}
#le-widget .grid{display:grid;gap:.8rem}
@media(min-width:720px){#le-widget .grid{grid-template-columns:1fr 1fr}}
#le-widget .field{background:var(–card);border:1px solid var(–line);border-radius:12px;padding:.8rem}
#le-widget label{display:block;font-size:.85rem;color:var(–muted);margin-bottom:.35rem}
#le-widget input[type=”number”], #le-widget input[type=”text”], #le-widget select{width:100%;padding:.55rem .6rem;border:1px solid var(–line);border-radius:10px;background:#fff}
#le-widget input[type=”range”]{width:100%}
#le-widget .row{display:flex;gap:.6rem;flex-wrap:wrap}
#le-widget .row .pill{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(–line);padding:.45rem .6rem;border-radius:999px;cursor:pointer;background:#fff}
#le-widget .row .pill input{accent-color:var(–acc)}
#le-widget .muted{color:var(–muted);font-size:.85rem}
#le-widget .out{grid-column:1/-1;background:#0b1324;color:#e5e7eb;border-radius:14px;padding:1rem;border:1px solid #10182f}
#le-widget .big{font-size:1.8rem;font-weight:700}
#le-widget .kpi{display:flex;gap:1rem;flex-wrap:wrap;margin:.6rem 0}
#le-widget .kpi .box{flex:1 1 160px;background:#0f1a33;border:1px solid #152145;border-radius:12px;padding:.8rem}
#le-widget .bar{position:relative;height:14px;background:#0f1a33;border:1px solid #152145;border-radius:999px;overflow:hidden;margin-top:.5rem}
#le-widget .bar .fill{position:absolute;inset:0;width:0;background:linear-gradient(90deg,var(–ok),#22c55e,#84cc16);transition:width .4s ease}
#le-widget .bar .mark{position:absolute;top:-6px;width:2px;height:26px;background:var(–bad)}
#le-widget .actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.8rem}
#le-widget button{border:1px solid var(–line);background:#fff;border-radius:10px;padding:.55rem .8rem;cursor:pointer}
#le-widget button.primary{background:var(–acc);border-color:var(–acc);color:#fff}
#le-widget details{grid-column:1/-1;background:var(–card);border:1px solid var(–line);border-radius:12px;padding:.8rem}
#le-widget summary{cursor:pointer;font-weight:600}
#le-widget .fine{font-size:.8rem;color:var(–muted)}
Calculadora de Expectativa de Vida (estimativa)
Base padrão: • Mulher: – anos • Homem: – anos. Ajustes por hábitos são heurísticos.
Altura (cm)
Tabagismo
Não fumante
Ex-fumante
Fumante
Atividade física semanal
Sedentário
1–2x
3–5x
6+ x
Álcool
Nenhum
Moderado
Alto
Estresse percebido
Baixo
Moderado
Alto
Família longeva
Pai/mãe ou avós com ≥ 90 anos
Idade estimada ao falecimento
– anos
Ajuste por hábitos
0.0 anos
Barra compara sua idade atual com a estimativa.
Copiar resultado
Limpar
*Estimativa simplificada e aproximada; não substitui avaliação médica ou atuarial.
⚙️ Ajustes avançados (clique para ver/editar)
- Baselines (padrão Brasil): data-baseline-male="76", data-baseline-female="82"
- Bônus de sobrevivente (ajuste condicional por idade): +0.10 × idade
- IMC: <18.5 → −2; 25–29.9 → −1; ≥30 → −3
- Fumante: −5; Ex-fumante: −2
- Atividade: 0x → −2; 1–2x → −1; 3–5x → +1; 6+ → +1.5
- Hipertensão: −2; Diabetes: −3
- Álcool: moderado → 0; alto → −3
- Sono: <6h → −2; 7–9h → +1; >9h → −1
- Estresse: moderado → −1; alto → −2
- Família longeva (≥90y): +2
- Limites: idade estimada final entre [idade atual + 1, 105]
(function(){
const $ = (sel, root=document)=>root.querySelector(sel);
const $$ = (sel, root=document)=>[…root.querySelectorAll(sel)];
const root = document.getElementById(‘le-widget’);
const country = root.dataset.country || ‘Brasil’;
const BASE = {
m: parseFloat(root.dataset.baselineMale || 76),
f: parseFloat(root.dataset.baselineFemale || 82)
};
// Elements
const age = $(‘#le-age’, root);
const ageVal = $(‘#age-val’, root);
const sexEls = $$(‘input[name=”le-sex”]’, root);
const h = $(‘#le-height’, root), w = $(‘#le-weight’, root), bmiOut = $(‘#le-bmi’, root);
const smoke = $$(‘input[name=”le-smoke”]’, root);
const ex = $$(‘input[name=”le-ex”]’, root);
const htn = $(‘#le-htn’, root), dm = $(‘#le-dm’, root);
const alc = $$(‘input[name=”le-alc”]’, root);
const sleep = $$(‘input[name=”le-sleep”]’, root);
const stress = $$(‘input[name=”le-stress”]’, root);
const fam = $(‘#le-fam’, root);
const estAge = $(‘#le-est-age’, root), rem = $(‘#le-rem’, root), adjOut = $(‘#le-adj’, root);
const bar = $(‘#le-bar’, root), mark = $(‘#le-mark’, root);
$(‘#le-country’, root).textContent = country;
$(‘#le-base-f’, root).textContent = BASE.f.toFixed(1);
$(‘#le-base-m’, root).textContent = BASE.m.toFixed(1);
function valRadio(list){ const el = list.find(i=>i.checked); return el ? el.value : null; }
function toNum(el){ const v = parseFloat(el.value); return isFinite(v) ? v : 0; }
function clamp(v, a, b){ return Math.max(a, Math.min(b, v)); }
function calcBMI(){
const cm = toNum(h), kg = toNum(w);
if(!cm || !kg) return null;
const m = cm/100;
return kg/(m*m);
}
function adjustments(){
let adj = 0;
// Survivor bonus: conditional life expectancy tends to increase with age
const A = parseInt(age.value,10);
adj += 0.10 * A; // +0.10 years per year of age
// BMI
const bmi = calcBMI();
if (bmi){
if (bmi = 25 && bmi = 30) adj -= 3;
}
// Smoking
const s = valRadio(smoke);
if (s === ‘yes’) adj -= 5;
else if (s === ‘ex’) adj -= 2;
// Exercise
const e = parseInt(valRadio(ex) || ‘0’, 10);
if (e === 0) adj -= 2;
else if (e <= 2) adj -= 1;
else if (e = 0 ? ‘+’ : ”) + adj.toFixed(1);
// Progress bar: fill = A/est ; mark at est
const pct = clamp((A / est) * 100, 0, 100);
bar.style.width = pct + ‘%’;
// mark position at 100% (end)
mark.style.left = ‘calc(100% – 1px)’;
}
// Events
[‘input’,’change’].forEach(ev=>{
[age,h,w,htn,dm,fam].forEach(el=>el.addEventListener(ev, compute));
[…sexEls,…smoke,…ex,…alc,…sleep,…stress].forEach(el=>el.addEventListener(ev, compute));
});
// Buttons
$(‘#le-reset’, root).addEventListener(‘click’, ()=>{
age.value = 50; h.value = 165; w.value = 68;
sexEls[0].checked = true;
smoke.find(i=>i.value===’none’).checked = true;
ex.find(i=>i.value===’0′).checked = true;
htn.checked = false; dm.checked = false;
alc.find(i=>i.value===’none’).checked = true;
sleep.find(i=>i.value===’lt6′).checked = true;
stress.find(i=>i.value===’low’).checked = true;
fam.checked = false;
compute();
});
$(‘#le-copy’, root).addEventListener(‘click’, async ()=>{
const A = parseInt(age.value,10);
const sex = (valRadio(sexEls)===’m’) ? ‘masculino’ : ‘feminino’;
const txt = `Estimativa de expectativa de vida: ${$(‘#le-est-age’,root).textContent} anos (${ $(‘#le-rem’,root).textContent } anos restantes) — idade ${A}, sexo ${sex}.`;
try { await navigator.clipboard.writeText(txt); alert(‘Resultado copiado!’); }
catch { alert(‘Copie manualmente: ‘ + txt); }
});
// Init
compute();
})();
Ative o JavaScript para usar a calculadora.