How the numbers are made.
Everything the test computes, written out in full — the published instrument we score, the overlay we built on top of it, the exact formula, two worked examples, and the places it breaks. If you only read one page on this site, this is a reasonable choice.
Contents
Two principles
The site is built on two rules. First, the validated instrument is never altered: the PSS-10 is scored exactly as Cohen, Kamarck and Mermelstein published it, and the 0–40 raw score you see is that score and nothing else. Second, everything we add is labelled as ours and kept separate — the recovery items, the HRV overlay and the resilience age never feed back into the raw score, and each is described below in enough detail that you could reproduce it with a spreadsheet.
Layer 1 — the PSS-10, scored as published
Ten items, each answered for the last month on a five-point frequency scale: never (0), almost never (1), sometimes (2), fairly often (3), very often (4). Items 4, 5, 7 and 8 are worded positively (“felt confident…”, “felt that things were going your way…”) and are reverse scored before summing — 0 becomes 4, 1 becomes 3, 2 stays 2. The total is the raw score, 0–40.
We also report two sub-totals that the literature identifies as the scale's two factors: perceived helplessness (items 1, 2, 3, 6, 9, 10; range 0–24) and perceived self-efficacy (items 4, 5, 7, 8; range 0–16, shown before reversal so that higher means more self-efficacy). These are descriptive only; they are not part of the raw score and have no validated cut-points.
While the form is partly complete, the panel shows a provisional score: the mean of answered items multiplied by ten, rounded. It is labelled as provisional and replaced by the true raw score once all ten items are answered.
Bands follow the conventional reporting split — 0–13 low, 14–26 moderate, 27–40 high. As the norms guide explains, these are conventions rather than clinical thresholds.
Layer 2 — two recovery items
Two supplementary questions, written by us and answered on the same 0–4 scale: how often in the last month you woke feeling rested and recovered (scored directly), and how often sleep was disrupted by racing thoughts or worry (reverse scored). The sum, 0–8, is a crude recovery index. It exists because sleep is the strongest everyday modifier of autonomic recovery and the PSS does not ask about it. It never touches the PSS score.
Layer 3 — the HRV age curve
If you enter a resting RMSSD, we compare it to an expected value for your age using a single exponential fitted to published short-recording norms:
expected_rmssd(age) = 62 × e^(−0.019 × (age − 20))
This gives roughly 62 ms at 20, 47 ms at 35, 35 ms at 50, 24 ms at 70 — consistent with the medians in the reference table. Inverting it gives the age at which your reading would be typical:
hrv_implied_age(rmssd) = 20 − ln(rmssd / 62) / 0.019, clamped to 18–95
Readings below 4 ms are floored at 4 before the logarithm. The curve describes population medians from seated or supine recordings of a few minutes; overnight wearable values run higher, so the implied age tends to come out young for ring and wristband users. We state this beside the input rather than attempt a per-device correction we could not validate.
The resilience-age formula
Starting from your stated chronological age, three shifts are applied:
pss_shift = clamp((pss_score − 13) × 0.28, −4, +8) rec_shift = (4 − mean_recovery_item × 2) × 0.5 → +2 at 0/8, −2 at 8/8, 0 if unanswered self_age = age + pss_shift + rec_shift if HRV entered: resilience_age = 0.55 × self_age + 0.45 × hrv_implied_age else: resilience_age = self_age result = round(clamp(resilience_age, 18, 95))
Design choices, briefly. The PSS neutral point is 13, the top of the conventional low band and close to the original population mean, so an average 1980s score moves the age by nothing. The slope of 0.28 years per point and the −4/+8 clamp were chosen so that the full range of the scale moves the age by about a decade — enough to communicate, not enough to pretend to precision we do not have. The asymmetry (more upside than downside) reflects the literature: high perceived stress has well-documented physiological costs, while very low perceived stress is not demonstrably protective beyond average. The 45% HRV weight is deliberately below half so that a single physiological reading cannot override a validated questionnaire.
Worked examples
| Input | Example A | Example B |
|---|---|---|
| Age | 42 | 29 |
| PSS-10 raw score | 11 | 24 |
| Recovery items | 3 + 3 = 6 / 8 | 1 + 1 = 2 / 8 |
| Resting RMSSD | not entered | 38 ms |
| pss_shift | (11−13)×0.28 = −0.56 | (24−13)×0.28 = +3.08 |
| rec_shift | (4−3×2)×0.5 = −1.0 | (4−1×2)×0.5 = +1.0 |
| self_age | 42 − 0.56 − 1.0 = 40.4 | 29 + 3.08 + 1.0 = 33.1 |
| hrv_implied_age | — | 20 − ln(38/62)/0.019 ≈ 45.8 |
| Blend | — | 0.55×33.1 + 0.45×45.8 = 38.8 |
| Resilience age | 40 (−2 yrs) | 39 (+10 yrs) |
Example B illustrates why the HRV layer is optional and blended: a 29-year-old with an RMSSD of 38 is below the population median for their age but comfortably inside the typical range, and if that reading came from a seated morning recording it is unremarkable. The implied age of 46 is a statement about where 38 ms sits on a population curve, not about this person's body — which is exactly why it is given less than half the weight.
How recommendations are chosen
Recommendations are rule-based, not personalised by any model. Each candidate has a trigger: the slow-breathing recommendation fires when the mean helplessness item is 2.2 or above or item 3 (“felt nervous and stressed”) is 3 or 4; the control recommendation when mean self-efficacy is 2 or below or item 2 is 3 or 4; the sleep recommendation when mean recovery is below 2.5; the HRV recommendation when your RMSSD is more than 4 ms below the age expectation; the reactivity recommendation when item 1 or 9 is 3 or 4; and the support recommendation when the raw score is 27 or above. Up to four are shown, ordered by a fixed weight. If none fires, a single maintenance note is shown instead. The source paper for each is printed on the card.
Known limitations
- The resilience age is not a validated biomarker. It has not been tested against any health outcome. It is a communication device for a questionnaire score and, optionally, one physiological reading.
- The PSS measures perception, and perception is shaped by personality, mood and culture as well as circumstances. Two people in identical situations can validly score fifteen points apart.
- The HRV curve is population-level and built from short lab recordings. Between-person spread is enormous; wearable overnight values are systematically higher; medication, fitness and breathing rate all shift readings. The implied age is least reliable for athletes, people on beta-blockers, and anyone entering an SDNN value by mistake.
- The recovery items are unvalidated. They are two face-valid questions, weighted small for that reason.
- Nothing here screens for anxiety, depression or any condition. High scores overlap with treatable conditions; the instrument cannot tell them apart.
Version history
- v1.1 — 14 Aug 2026. HRV blend weight 0.50 → 0.45. Implied age clamped to 18–95 and RMSSD floored at 4 ms before the logarithm, after reports of implausible outputs from very low or mistyped values.
- v1.0 — 27 Jul 2026. Initial release.
The scoring code runs entirely in your browser and is readable in the page source. If you find an error in it or in this description, tell us and it will be fixed and logged here.