TILDA Resources
  • Questionnaire Harmonisation
  • Questionnaire Scales
  • Scale Harmonisation
  • Health Assessment
  • Biomarkers
  • Back to TILDA Homepage
  1. MHC-SF
  • Questionnaire Scales
  • ADL
  • AMT
  • APQ-17
  • APQ-32
  • CAGE
  • CASP-12
  • CASP-19
  • CESD-20
  • CESD-8
  • CIDI-SF-Anxiety
  • CIDI-SF-Depression
  • CISS-21
  • Creative Lives
  • Everyday Ageism
  • EQ-5D-5L
  • FES-I
  • Flourishing
  • GAD-7
  • Gratitude
  • HADS-A
  • Housing Conditions
  • IADL
  • IPAQ
  • IPAQ-E
  • IQCODE
  • MHC-SF
  • MESA
  • MMSE
  • MCSI
  • MCTQ
  • Neighbourhood Cohesion
  • NEO-PI
  • PSS
  • PWSQ
  • PCL-6
  • PIL
  • Relationship Quality
  • SWLS
  • Social Activities
  • STAI
  • UCLA

MHC-SF

Mental Health Continuum – Short Form (MHC-SF)

Flourishing-Languishing Scale

Measuring: Emotional, social well-being, and psychological well-being.

Number of Items: 14

Item Question Wording TILDA Variable
1 Happy. SCQFlourLang1
2 Interested in life SCQFlourLang2
3 Satisfied with life SCQFlourLang3
4 That you had something important to contribute to society. SCQFlourLang4
5 That you belonged to a community like a social group, your school, or your neighbourhood. SCQFlourLang5
6 That our society is becoming a better place. SCQFlourLang6
7 That people are basically good. SCQFlourLang7
8 That the way our society works made sense to you. SCQFlourLang8
9 Good at managing the responsibilities of your daily life. SCQFlourLang9
10 That you have warm and trusting relationships with other people. SCQFlourLang10
11 That you have experiences that challenged you to grow or become a better person. SCQFlourLang11
12 Confident to think or express your own ideas and opinions. SCQFlourLang12
13 That you liked your personality. SCQFlourLang13
14 That your life had a direction or purpose. SCQFlourLang14

Scoring Method:

Items scored on a 6-point Likert scale.

0 = never

1 = Once or Twice

2 = About once a week

3 = Two or three times a week

4 = Almost Every Day

5 = Every Day

  • A cumulative score is generated with higher scores representing greater positive mental health (0-70).

  • There are 3 subscales generated from this scale;

  • Emotional well-being (Item 1- Item 3)

  • Social well-being (Item 4 - Item 8)

  • Psychological well-being (Item 9 - Item 14)

  • Scores are summed within each Mental Health Continuum – Short Form subscale: Emotional well-being (0–15), social well-being (0-25), and psychological well-being (0–30). Higher scores indicate greater perceived well-being within that domain.

Flourishing and languishing classification:

The MHC-SF can also be scored using Keyes' diagnostic criteria rather than a total score.

Flourishing

A participant is classified as flourishing if they report:

  • "Every day" or "Almost every day" on at least one of the three emotional well-being items, and

  • "Every day" or "Almost every day" on at least six of the eleven social and psychological well-being items.

Languishing

A participant is classified as languishing if they report:

  • "Never" or "Once or twice" on at least one emotional well-being item, and

  • "Never" or "Once or twice" on at least six of the social and psychological well-being items.

Participants who meet neither flourishing nor languishing criteria are classified as having moderate mental health.

Citation: Keyes, C. L. M. (2002). The mental health continuum: From languishing to flourishing in life. Journal of Health and Social Behavior, 43(2), 207–222. https://pubmed.ncbi.nlm.nih.gov/12096700/

Code

  • Stata
  • R
  • SPSS
mvdecode (FlourLang1 FlourLang2 FlourLang3 FlourLang4 FlourLang5 FlourLang6 FlourLang7 FlourLang8 FlourLang9 FlourLang10 FlourLang11 FlourLang12 FlourLang13 FlourLang14), mv (-99=. \ -812=. \ -823=. \ -834 = . \ -845=. \ -856=. \ -867 = . \ -1=.)


foreach var in FlourLang1 FlourLang2 FlourLang3 FlourLang4 FlourLang5 FlourLang6 FlourLang7 FlourLang8 FlourLang9 FlourLang10 FlourLang11 FlourLang12 FlourLang13 FlourLang14 { 
    gen `var'_recoded = `var' -1
}

egen FLFlourishLangTotal = rowtotal (FlourLang1_recoded FlourLang2_recoded FlourLang3_recoded FlourLang4_recoded FlourLang5_recoded FlourLang6_recoded FlourLang7_recoded FlourLang8_recoded FlourLang9_recoded FlourLang10_recoded FlourLang11_recoded FlourLang12_recoded FlourLang13_recoded FlourLang14_recoded)

egen FLEmotionalWellbeing = rowtotal (FlourLang1_recoded FlourLang2_recoded FlourLang3_recoded)
egen FLSocialWellbeing = rowtotal (FlourLang4_recoded FlourLang5_recoded FlourLang6_recoded FlourLang7_recoded FlourLang8_recoded)
egen FLPsychologicalWellbeing = rowtotal (FlourLang9_recoded FlourLang10_recoded FlourLang11_recoded FlourLang12_recoded FlourLang13_recoded FlourLang14_recoded)

*Score should be between 0-70
codebook FLFlourishLangTotal
fre FLFlourishLangTotal

*Score should be between 0-15
codebook FLEmotionalWellbeing
fre FLEmotionalWellbeing

*Score should be between 0-30
codebook FLPsychologicalWellbeing
fre FLPsychologicalWellbeing

*Score should be between 0-25
codebook FLSocialWellbeing
fre FLSocialWellbeing

lab var FLFlourishLangTotal "Total Scores of the Flourishing-Languishing Scale"
lab var FLEmotionalWellbeing "Scores of Emotion factor of Flourishing-Languishing Scale"
lab var FLPsychologicalWellbeing "Scores of Psychological Factor of Flourishing-Languishing scale"
lab var FLSocialWellbeing "Scores of Social factor of Flourishing-Languishing scale"

Download Stata .do file

fl_items <- paste0("FlourLang", 1:14)
special_missing <- c(-99, -812, -823, -834, -845, -856, -867, -1)

for (v in fl_items) {
  data[[v]][data[[v]] %in% special_missing] <- NA_real_
  data[[paste0(v, "_recoded")]] <- data[[v]] - 1
}

rec <- paste0(fl_items, "_recoded")

# Stata egen rowtotal() ignores missing components and returns 0 if all are missing.
data$FLFlourishLangTotal <- rowSums(data[rec], na.rm = TRUE)
data$FLEmotionalWellbeing <- rowSums(data[rec[1:3]], na.rm = TRUE)
data$FLSocialWellbeing <- rowSums(data[rec[4:8]], na.rm = TRUE)
data$FLPsychologicalWellbeing <- rowSums(data[rec[9:14]], na.rm = TRUE)

attr(data$FLFlourishLangTotal, "label") <-
  "Total Scores of the Flourishing-Languishing Scale"
attr(data$FLEmotionalWellbeing, "label") <-
  "Scores of Emotion factor of Flourishing-Languishing Scale"
attr(data$FLPsychologicalWellbeing, "label") <-
  "Scores of Psychological Factor of Flourishing-Languishing scale"
attr(data$FLSocialWellbeing, "label") <-
  "Scores of Social factor of Flourishing-Languishing scale"

summary(data$FLFlourishLangTotal)
summary(data$FLEmotionalWellbeing)
summary(data$FLPsychologicalWellbeing)
summary(data$FLSocialWellbeing)

Download R file

RECODE FlourLang1 FlourLang2 FlourLang3 FlourLang4 FlourLang5 FlourLang6 FlourLang7 FlourLang8 FlourLang9 FlourLang10 FlourLang11 FlourLang12 FlourLang13 FlourLang14
  (-99=SYSMIS) (-812=SYSMIS) (-823=SYSMIS) (-834=SYSMIS)
  (-845=SYSMIS) (-856=SYSMIS) (-867=SYSMIS) (-1=SYSMIS).

DO REPEAT src = FlourLang1 FlourLang2 FlourLang3 FlourLang4 FlourLang5 FlourLang6 FlourLang7 FlourLang8 FlourLang9 FlourLang10 FlourLang11 FlourLang12 FlourLang13 FlourLang14
 /dst = FlourLang1_recoded FlourLang2_recoded FlourLang3_recoded FlourLang4_recoded FlourLang5_recoded FlourLang6_recoded FlourLang7_recoded FlourLang8_recoded FlourLang9_recoded FlourLang10_recoded FlourLang11_recoded FlourLang12_recoded FlourLang13_recoded FlourLang14_recoded.
  COMPUTE dst = src - 1.
END REPEAT.

COMPUTE FLFlourishLangTotal = SUM(FlourLang1_recoded, FlourLang2_recoded, FlourLang3_recoded, FlourLang4_recoded, FlourLang5_recoded, FlourLang6_recoded, FlourLang7_recoded, FlourLang8_recoded, FlourLang9_recoded, FlourLang10_recoded, FlourLang11_recoded, FlourLang12_recoded, FlourLang13_recoded, FlourLang14_recoded).
IF (NMISS(FlourLang1_recoded, FlourLang2_recoded, FlourLang3_recoded, FlourLang4_recoded, FlourLang5_recoded, FlourLang6_recoded, FlourLang7_recoded, FlourLang8_recoded, FlourLang9_recoded, FlourLang10_recoded, FlourLang11_recoded, FlourLang12_recoded, FlourLang13_recoded, FlourLang14_recoded) = 14)
  FLFlourishLangTotal = 0.

COMPUTE FLEmotionalWellbeing =
  SUM(FlourLang1_recoded, FlourLang2_recoded, FlourLang3_recoded).
IF (NMISS(FlourLang1_recoded, FlourLang2_recoded, FlourLang3_recoded) = 3)
  FLEmotionalWellbeing = 0.

COMPUTE FLSocialWellbeing =
  SUM(FlourLang4_recoded, FlourLang5_recoded, FlourLang6_recoded,
      FlourLang7_recoded, FlourLang8_recoded).
IF (NMISS(FlourLang4_recoded, FlourLang5_recoded, FlourLang6_recoded,
          FlourLang7_recoded, FlourLang8_recoded) = 5)
  FLSocialWellbeing = 0.

COMPUTE FLPsychologicalWellbeing =
  SUM(FlourLang9_recoded, FlourLang10_recoded, FlourLang11_recoded,
      FlourLang12_recoded, FlourLang13_recoded, FlourLang14_recoded).
IF (NMISS(FlourLang9_recoded, FlourLang10_recoded, FlourLang11_recoded,
          FlourLang12_recoded, FlourLang13_recoded, FlourLang14_recoded) = 6)
  FLPsychologicalWellbeing = 0.

VARIABLE LABELS
  FLFlourishLangTotal "Total Scores of the Flourishing-Languishing Scale"
  FLEmotionalWellbeing "Scores of Emotion factor of Flourishing-Languishing Scale"
  FLPsychologicalWellbeing "Scores of Psychological Factor of Flourishing-Languishing scale"
  FLSocialWellbeing "Scores of Social factor of Flourishing-Languishing scale".

DESCRIPTIVES VARIABLES=
  FLFlourishLangTotal FLEmotionalWellbeing
  FLPsychologicalWellbeing FLSocialWellbeing.

EXECUTE.

Download SPSS .sps file

IQCODE
MESA

Copyright 2026, The Irish Longitudinal Study on Ageing (TILDA)

 

TILDA, Department of Health and Health Research Board