NEW: The 2026 Happy Planet Index is live

Explore the data

How sustainably
happy are you?

We believe that being happy is good for everyone and that promoting human happiness does not need to be at odds with creating a sustainable future. We've built this personal Happy Planet Index test to help you reflect on how you can create your own "good life that doesn't cost the earth"

It only takes 5 minutes to complete the test. Once completed, we'll send you a personalized report packed with insights and tips.

HOW HAPPY IS THE PLANET

The Happy Planet Index measures what matters: sustainable wellbeing for all. It tells us how well nations are doing at achieving long, happy, sustainable lives.

“Good lives shouldn’t cost the earth”

As part of TED 2012, Happy Planet Index founder Nic Marks explains why and how the Happy Planet Index was started, and why we need it now more than ever.


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