← Back to Home

Methodology

How data is collected, how Fit Scores are calculated, and the criteria used to rank countries

How is the Fit Score Calculated?

The Fit Score (0–100) is calculated from your profile compared against each country’s data, broken down into 4 pillars:

  • Social peace index, crime index, healthcare quality, LGBTQ+ safety, immigrant acceptance, gender equality, natural disaster risk
  • Cultural Asian food access, English proficiency, Work-Life Balance
  • Economic cost of living compared to Bangkok, rent, salary by profession, taxes, remittance to Thailand
  • Political democracy index, corruption index, freedom of expression
View Pillar Sub-Score Formulas

Social = average of 7 indicators

  • peace_index × 20
  • 100 − crime_index (Numbeo, 0–100; higher = more crime)
  • healthcare_quality (0–100)
  • lgbtq_safety × 20
  • immigrant_acceptance × 20
  • 100 − (gender_equality_rank − 1) × 0.7 (WEF rank; rank 1 = 100)
  • 100 − disaster_risk × 2 (lower risk = higher score)

Cultural = average of 3 indicators

  • asian_food_access × 20
  • english_proficiency (0–100)
  • work_life_balance × 20

Economic

100 − (cost_of_living_vs_bkk − 1) × 30

Political = average of 4 indicators

  • democracy_index × 10
  • corruption_index (0–100)
  • freedom_of_expression × 20
  • political_stability (World Bank WGI, −2.5 to +2.5 → 0–100)

* Pillar Sub-Scores are for display only and are not used to calculate the Overall Score

Weighting

Scores are weighted based on the top 5 priorities you selected in the survey. Rank 1 receives the highest weight, while rank 5 receives the lowest.

View Weighted Priority Sum Formula

Overall = baseScore + bonuses (clamped to 0–100)

baseScore = Σ(weight × priorityScore) / Σ(weight)

RankWeightExample
Rank 16 (46%)6 × safety score
Rank 23 (23%)3 × healthcare score
Rank 32 (15%)2 × climate score
Rank 41 (8%)1 × cost of living score
Rank 51 (8%)1 × visa score

Total weight = 6 + 3 + 2 + 1 + 1 = 13 — rank 1 has 6x the influence of rank 5 (v4.3 default)

Additional bonuses are also applied (up to 12 points total):

  • Visa-Free Bonus (+3) countries that allow visa-free entry for Thai citizens
  • Language Match Bonus (+3) countries where a language you speak is an official language
  • Thai Community Bonus (0 to +4) tiered system based on the Thai population in each country
  • Budget Fit (+0 to +3) calculated from the cost of living relative to your budget
  • Religion Match (+0 to +4) the country’s main religion matches yours
  • Politics Alignment (−2 to +3) your political orientation aligns with the country’s
  • Age-Aware Visa (+0 to +3) Working Holiday available (age 18–34) or retirement visa (age 55+)
View Profile-Aware Phantom Priorities (v4)

The system automatically adds priorities based on your profile to protect users without requiring them to choose explicitly:

  • LGBTQ+ — automatically adds "LGBTQ+ rights" (weight 2) + immediately filters out dangerous countries
  • Family with children — automatically adds "safety" + "healthcare" (weight 1.5)
  • Women / Non-binary — automatically adds "gender equality" (weight 1)

* Phantom priorities are only added if you haven’t already selected them in your top 5

View Per-Priority Scoring Formulas (0–100)
PriorityFormula
Cost of living100 − (cost_vs_bkk − 0.5) × 40 — Bangkok equivalent = ~80 points, cheaper = higher, 2x more expensive = ≤30 (considers user’s actual budget)
Safetyv4: 30% peace + 25% crime + 20% disaster + 25% political stability | v3.2: 40% peace + 30% crime + 30% disaster
Political freedomdemocracy_index × 10
LGBTQ+ rightslgbtq_safety × 20
Climate% of temperature range overlap with your selected range
Healthcarehealthcare_quality (0–100 directly)
Job marketvisa difficulty + salary/cost ratio + career info
Thai community>50K = 100, >20K = 80, >5K = 60, >1K = 40, fewer = 20 (tiered system)
Cultural proximityasian_food_access × 20
Visavisa_free = 100, VOA = 80, eVisa = 60, other = 30
Immigration pathwayPR pathway (0-40) + citizenship pathway (0-30) + work visa difficulty (0-30) — faster PR/citizenship = higher score
Gender equality100 − (WEF rank − 1) × 0.7 — rank 1 = 100, rank 146 ≈ 0

Hard Filter: If you selected “LGBTQ+ rights” as important, countries with lgbtq_safety < 2 will receive a score of 0 immediately (filtered out)

Data Collection

All country data is compiled from trusted public sources and stored as static JSON files that are updated periodically.

We do not create our own indices. Instead, we use internationally recognized indices such as the Democracy Index from EIU, Press Freedom Index from RSF, and the Corruption Perceptions Index from Transparency International.

PR and citizenship pathway data is verified against 2025–2026 immigration laws for each country, with notes describing the process, processing time, and key requirements. Countries without real PR or citizenship pathways (e.g., Saudi Arabia, Qatar) are marked as “no pathway.”

Natural disaster risk data uses the World Risk Index (WRI), which combines natural hazard exposure with government coping capacity into a single score — countries with high natural hazards but strong coping capacity (e.g., Japan) will score lower than countries with poor coping capacity.

Experiment: Scoring Algorithm Comparison

The system is experimenting with multiple scoring algorithm versions. You can switch versions via the Bug icon on the survey results page. Scores update instantly across the entire system. (v1 is not available in the debug switcher — shown here for comparison only.)

Area
v1
retired
v2
legacy
v3
experimental
v3.1
experimental
v3.2
experimental
v4
experimental
v4.1
experimental
v4.2
experimental
v4.3
default
Priority WeightsLinear [5,4,3,2,1] — rank 1 = 33%Steep [5,3,2,1,1] — rank 1 = 42%Same as v2Same as v2Same as v2Same as v2 + phantom priorities from profile[7,3,2,1,1] — rank 1 = 50% + phantom prioritiesSame as v4.1[6,3,2,1,1] — rank 1 = 46% (more balanced than v4.1)
Cost of Living100 − (cost−1)×50 — BKK=100, steep curve100 − (cost−0.5)×40 — BKK≈80, softer curve + budget-awareSame as v2Same as v2Same as v2Same as v2Economic pillar = 40% CoL + 60% Purchasing Power (profession-aware)Same as v4.1Same as v4.1
Safetypeace_index × 20 (single factor)70% peace + 30% disaster riskSame as v2Same as v240% peace + 30% crime + 30% disaster30% peace + 25% crime + 20% disaster + 25% political stability35% peace + 15% crime + 20% disaster + 30% stabilitySame as v4.1Same as v4.1
ClimateClimate type only (tropical=90, subtropical=75, other=50)% temperature overlap with user-selected range (fallback to climate type)Same as v2Same as v2Same as v2Same as v2Same as v4Same as v4.1Same as v4.1
Thai Community (metric)Linear: min(100, population/1000)5-tier: >50K=100, >20K=80, >5K=60, >1K=40, less=20Same as v2Same as v2Same as v2Same as v2Same as v4Same as v4.1Same as v4.1
Cultural Proximityasian_food_access × 20 (single factor)Same as v14 factors: food 40% + English 25% + WLB 20% + Buddhist community 15%Same as v3Same as v3Same as v3Same as v4Same as v4.1Same as v4.1
Visa Accessibilityvisa_free=100, VOA=80, eVisa=60, embassy=30Same as v1embassy 30→40, eVisa 60→65, +DN bonus +10Same as v3Same as v3Same as v3Same as v4Same as v4.1Hybrid: 40% tourist + 60% immigration (work visa, DN, PR pathway)
Visa-Free Bonus+5+3+3+3+3+3+30 (removed)+3
Language Bonus+5+3+3+3+3+3+3Same as v4.1Same as v4.1
Thai Community Bonus>10K = +3 (binary)>10K = +2 (binary)5-tier: ≥100K=+4, ≥50K=+3, ≥20K=+2, ≥5K=+1, less=0Same as v3Same as v3Same as v3Same as v4Same as v4.1Same as v4.1
Budget Fit Bonus+0 to +5+0 to +3+0 to +3+0 to +3+0 to +3+0 to +3PP-aware: PP≥80→+3, ≥60→+2, ≥40→+1, <40→0Same as v4.1Same as v4.1
Bonus CapUnlimited (max total ~18)Unlimited (max total ~11)Hard cap at 12Same as v3Same as v3Same as v3Diminishing returns: 14×(1−e^(−raw/12)) — approaches 14 asymptoticallySame as v4.1Same as v4.1
Proximity / Travel DistanceNoneNoneFixed bonus: ≤6h=+5, ≤10h=+3, ≤14h=+1User-selectable "close to Thailand" prioritySame as v3.1Same as v3.1Same as v4Same as v4.1Same as v4.1
Cultural Sub-ScoreAverage of 3 factors (food, english, WLB)Same as v1Weighted 4 factors (food 35%, english 25%, WLB 25%, buddhist 15%)Same as v3Same as v3Same as v3Same as v4Same as v4.1Same as v4.1
Social Sub-ScoreAverage of 4 factors (peace, health, LGBTQ, immigrant)Average of 6 factors (+disaster risk, +gender equality)Same as v2Same as v2Average of 7 factors (+crime index)Same as v3.2Same as v4Same as v4.1Same as v4.1
Political Sub-ScoreAverage of 3 factors (democracy, corruption, expression)Same as v1Same as v1Same as v1Same as v1Average of 4 factors (+political stability)Same as v4Same as v4.1Same as v4.1
Profile-Aware Phantom PrioritiesNoneNoneNoneNoneNoneLGBTQ+ → lgbtq_rights, family → safety+health, women → gender equalitySame as v4Same as v4.1Same as v4.1
Profile-Aware BonusesNoneNoneNoneNoneNoneReligion match +4, politics alignment -2 to +3, Working Holiday/retirement +3Same as v4Same as v4.1Same as v4.1
LGBTQ+ Hard Filterpriority=lgbtq + safety<2 → 0Same as v1Same as v1Same as v1Same as v1priority=lgbtq OR orientation=lgbtq + safety<2 → 0Graduated: <1.5 → 0, <2.5 → −20, ≥2.5 → no penaltySame as v4.1Same as v4.1
Specialization BoostNoneNoneNoneNoneNoneNoneRank 1 ≥90 → +4, ≥80 → +2Same as v4.1Same as v4.1
Economic Sub-Score100 − (cost−1)×30Same as v1Same as v1Same as v1Same as v1Same as v140% CoL + 60% Purchasing PowerSame as v4.1Same as v4.1
Priority Count10 options12 options (+immigration_pathway, +gender_equality)12 options13 options (+travel_distance)Same as v3.1Same as v3.1Same as v4Same as v4.1Same as v4.1

Limitations

  • Data is at the country level and cannot reflect differences between cities.
  • Cost of living and rent are averages for major cities and may differ significantly from rural areas.
  • Individual experiences may differ from statistical data.
  • The Fit Score is a preliminary decision-support tool, not a final answer — you should research further before making a real decision.
  • Temperature data is based on capital/major cities only; actual temperatures may vary by region.

Data Updates

Country data is reviewed and updated at least once a year, following the release schedule of each source. If you find any inaccurate data, you can report it on the Report Data Issues page.