NEW: The 2026 Happy Planet Index is live

Explore the data

Compare results

  
Happy Planet Index rank
Happy Planet Index score
Life expectancy
Wellbeing
Ecological footprint

How sustainably happy are you?

We've built a personal Happy Planet Index test to help you reflect on how you can create your own "good life that doesn't cost the earth".

Take the test

Fatal error: Uncaught JSMin_UnterminatedRegExpException: JSMin: Unterminated RegExp at byte 132241: /.test(c.value),i=c=>!isNaN(parseFloat(c.value))&&isFinite(c.value),n=c=>Object.prototype.toString.call(c.value)==="[object String]";return{isPresent:t,isEmail:e,isNumber:i,isString:n,isValidCurrencyCode:c=>n(c)&&c.value.length==3,isValidCountryCode:c=>n(c)&&c.value.length==2,isCheckboxChecked:c=>c.checked}}(),hs=function(){let t=document.getElementById("newsletter-sign-up"),e={};const i=()=>{n()},n=()=>{ne(t,"submit",g=>{g.preventDefault(),c(),s()})},s=()=>{let g={fname:t.elements["newsletter-fname"],lname:t.elements["newsletter-lname"],email:t.elements["newsletter-email"],weallConsent:t.elements["newsletter-consent"],message:t.elements.message};r(g)&&y(g)},r=g=>{let u=!0;return Object.keys(g).forEach(p=>{l(p,g[p],g)||(u=!1)}),u},l=(g,u,p)=>{let E=!1;switch(g){case"fname":return E=Rt.isPresent(u),E||o("fname","Please enter your first name",u),E;case"email":return E=Rt.isPresent(u)&&Rt.isEmail(u),E||o("email","Please enter a valid email address",u),E;case"weallConsent":case"nicConsent":return console.log(p),p.weallConsent.checked?E=!0:o("consent","Please check the box to sign up"),E;default:return!0}},c=()=>{let g=t.querySelectorAll(".error-help");Array.from(g).forEach(p=>p.remove());let u=t.querySelectorAll(".is-error");Array.from(u).forEach(p=>Ye(p,"is-error")),e={}},o=(g,u,p=null)=>{e[g]||(p?m(g,u,p):f(g,u),e[g]=u)},m=(g,u,p)=>{He(p,"is-error");let E=p.parentNode,T=document.createElement("span");T.className="error-help",T.innerText=u,E.appendChild(T)},f=(g,u)=>{let p=t.querySelector(".js-form-error"),E=document.createElement("span");E.className="error-help",E.innerText=u,p.appendChild(E)},y=g=>{x(!0),w({fname:g.fname.value,lname:g.lname.value,email:g.email.value,weallConsent:g.weallConsent.checked,honey:g.message.value}).then(u=>{if(!u.ok)throw new Error("There was an error submitting your details, please try again.");return u.json()}).then(u=>{if(u.error)throw new Error(u.error);S(t)}).finally(()=>{x(!1)}).catch(u=>{f("http",u)})},S=(g,u,p)=>{g.innerHTML=` in /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/external/php/jsmin.php:264 Stack trace: #0 /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(150): JSMin->action(1) #1 /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(84): JSMin->min() #2 /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/autoptimizeScripts.php(843): JSMin::minify('var we="top",_e...') #3 /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/autoptimizeScripts.php(402): autoptimizeScripts->minify_single('/var/www/hpi_wo...') #4 /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/autoptimizeMain.php(591): autoptimizeScripts->read(Array) #5 [internal function]: autoptimizeMain->end_buffering(' <!doctype htm...', 9) #6 /var/www/hpi_wordpress/wp-includes/functions.php(5581): ob_end_flush() #7 /var/www/hpi_wordpress/wp-includes/class-wp-hook.php(353): wp_ob_end_flush_all('') #8 /var/www/hpi_wordpress/wp-includes/class-wp-hook.php(377): WP_Hook->apply_filters('', Array) #9 /var/www/hpi_wordpress/wp-includes/plugin.php(523): WP_Hook->do_action(Array) #10 /var/www/hpi_wordpress/wp-includes/load.php(1308): do_action('shutdown') #11 [internal function]: shutdown_action_hook() #12 {main} thrown in /var/www/hpi_wordpress/wp-content/plugins/autoptimize/classes/external/php/jsmin.php on line 264