방법론

How the numbers get from UNHCR, IDMC and the UN Population Division onto this map — and what they do and do not mean.

이 페이지는 아직 한국어로 제공되지 않습니다 — 아래는 영어판입니다.

1. Sources

Everything shown is group-level statistics published by international organisations. This site never handles person-level data.

UseSourceEndpoint / fileLicenseAs of
Stocks by country & year (refugees, asylum-seekers, IDPs, stateless, others of concern, returnees, OIP)UNHCR Refugee Population Statistics Databaseapi.unhcr.org/population/v1/population/ (asylum, origin, bilateral matrix), /footnotes/CC-BY-4.02025-12-31
Age & sexUNHCR/demographics/(2010+, country of asylum)CC BY 4.02025-12-31
Solutions, asylum applicationsUNHCR/solutions/ (2000+), /asylum-applications/ (2015+, persons only)CC BY 4.02025-12-31
Internal displacement (annual stock)IDMC via UNHCR/idmc/ (2009+)CC BY-IGO2025-12-31
Recent displacement events (≤ 24 h latency)IDMC Internal Displacement UpdatesHelix API, last 180 daysCC BY-IGO2026-08-23
Latest estimate cardUNHCR nowcasting/nowcasting/ — statistical estimates, labelled as suchCC BY 4.02026-06-01
Resident population (per-1,000 denominator)UN DESA World Population Prospects 2024WPP2024_TotalPopulationBySex.csv, medium variantCC BY 3.0 IGO2023-07-01
BoundariesNatural Earth 1:50m (via world-atlas)simplified TopoJSONPublic domain

Full provenance per source (endpoints, content hashes, retrieval times, caveats) is machine-readable in sources.json. Not used: ACLED (licence forbids dashboard republication), IOM DTM (licence not yet confirmed), UNHCR Operational Data Portal and microdata (non-commercial terms).

2. What these numbers are, and are not

3. Pipeline: daily, static, audited

  1. Fetch — a scheduled job calls the UNHCR API (throttled: 2 concurrent requests, ≥ 300 ms apart, retries with back-off) and downloads the WPP CSV and the IDMC IDU dump. The latest year with published data is detected automatically (currently 2025).
  2. Normalise — every row is keyed by ISO 3166-1 alpha-3 read from UNHCR's coo_iso/coa_iso fields. UNHCR's internal codes (coo/coa) are never used: they collide with real ISO3 codes (UNHCR "AUS" is Austria, "ARE" is Egypt, "MAR" is Martinique). Numeric fields arrive as "-" (not reported), "0" or numbers; they are converted to null / 0 / integer.
  3. Validate — 15 invariants must hold before anything is published, including: the three collision cases are keyed correctly; no negative or non-finite values; mapped total + unmappable total = global total for every metric and year; totals do not drift more than 20 % against the previous snapshot; and three golden numbers (Türkiye refugees 2024, Syria IDPs 2016, world refugees 2024) match within 1 %.
  4. Promote — each source is promoted independently. If a source fails, its previous snapshot stays online and the site shows a "partial data update delayed" chip; after three consecutive days the maintainer is e-mailed.
  5. Publish — the data files are committed to the repository (a permanent audit trail: git log -- public/data/v1/country/SYR.json answers "what did this number say on day X") and deployed as static files. The browser never calls UNHCR.

4. Definitions

난민
1951년 협약/1967년 의정서, 1969년 OAU 협약 또는 UNHCR 규정에 따라 난민으로 인정된 사람과 보충적·보조적 보호 또는 임시 보호를 받는 사람. 난민 유사 상황에 있는 인구를 포함. UNRWA 관할의 팔레스타인 난민은 제외.
  • 연말(12월 31일) 기준 스톡.
  • UNRWA에 등록된 팔레스타인 난민 약 600만 명은 제외.
비호신청자
국제적 보호를 신청했으나 난민 지위가 아직 결정되지 않은 사람(계류 중인 사건).
  • 연말 기준 계류 사건, 인원수 기준.
국내실향민(IDP)
분쟁이나 폭력으로 자국 내에서 실향한 사람들(IDMC 집계, UNHCR 경유 공표). 자국 아래 집계(출신국=비호국).
  • 출처: IDMC(UNHCR 경유). 재해로 인한 실향은 포함하지 않음.
  • 두 보기에서 동일(국내 실향에는 수용국이 없음).
무국적자
어느 국가의 법으로도 국민으로 인정되지 않는 사람. 국적 미확정자를 포함.
  • 거주국 기준으로만 보고되며, 많은 국가가 보고하지 않음.
기타 보호대상자
다른 범주에 직접 해당하지 않으나 UNHCR가 보호·지원을 제공하는 사람들.
귀환 난민
해당 역년 중 자발적 또는 조직적으로 출신국에 귀환한 전 난민.
  • 연중 흐름(플로우)이며 스톡이 아님.
귀환 국내실향민
해당 역년 중 원거주지로 귀환한 전 국내실향민.
  • 연중 흐름(플로우)이며 스톡이 아님.
국제적 보호가 필요한 기타 인구
출신국 밖에 있으며 국제적 보호가 필요할 가능성이 높으나 지위가 미확정인 사람들(2018년부터 사용, 주로 국외 베네수엘라인).
  • 2018년부터 보고. 대부분 국외로 떠난 베네수엘라인.
수용 공동체
UNHCR 사업의 혜택을 받는 수용 공동체 구성원(일부 사업만 보고).
  • 실향 인구가 아니므로 총계에서 제외.
보호대상자 총계
난민, 비호신청자, 국내실향민, 무국적자, 기타 보호대상자, 국제적 보호가 필요한 기타 인구의 합(수용 공동체와 귀환자는 제외).
  • 클라이언트에서 구성 지표를 합산. null 구성요소는 최소 하나의 구성요소가 보고된 경우에만 0으로 처리.

All stock figures are year-end (31 December). "Returned" figures are flows during the year.

5. Null is not zero

UNHCR distinguishes not reported ("-") from reported zero. We keep that distinction everywhere: on the map (grey vs the lightest blue), in charts (a gap in the line vs a point at 0), in CSV (empty field vs 0) and in JSON (null vs 0). A country in grey may host many displaced people whose figures simply were not reported that year.

6. Two views: where they are, where they fled from

Every figure has two geographies. Country of asylum ("where they are now") counts people where they currently live. Country of origin ("where they fled from") counts the same people by the country they left. Internally displaced persons are counted in their own country in both views. The "Flows" tab and the flows/ files give the bilateral matrix.

7. Per 1,000 residents

Rate = persons ÷ UN WPP mid-year total population × 1,000. Two caveats: the numerator is a 31 December stock while the denominator is 1 July; and WPP values after the estimate base year are medium-variant projections. Rates are not shown where population is missing.

8. Colour scales

A single-hue blue ramp (ColorBrewer Blues) is used throughout — no red/orange scales, which would visually frame displaced people as a threat. Seven classes. Default breaks are quantiles computed across the whole year range for the countries shown: while you scrub the timeline, colour means magnitude, not a rank that reshuffles every year — so screenshots from different years are comparable. Zero has its own lightest colour; not-reported is grey.

9. Boundaries and names

Boundaries come from Natural Earth, simplified for display. Country names follow the data source being cited (UNHCR), with a small override table for readability (e.g. "Syrian Arab Rep." → "Syria"); the original name is always shown alongside. Disputed territories, Kosovo and Taiwan are handled explicitly — see Boundaries, names and disputed territories.

10. Freshness and failure

UNHCR publishes annual figures around June and mid-year figures around October/November. The pipeline runs daily but only commits when content changes. Three timestamps are kept apart: data_as_of (what the data covers), retrieved_at (when we fetched it — only advances when content changed) and the dataset snapshot_id (content hash of the whole dataset, currently 21506b7d). The bulk CSVs carry the population source's content-hash prefix in their snapshot column, resolvable via sources.json.

11. The live events layer

The "recent internal displacement events" layer republishes IDMC's preliminary event-level estimates. For dignity and safety: coordinates of conflict events are snapped to a ~25 km grid (never settlement-level); events under 100 people are not drawn as individual points; the popup shows figure, type and date and links to IDMC's own report instead of pasting narrative text. Event definitions differ from the annual IDP stock (which excludes disasters).

12. Citing

Every view has a permanent link that reproduces year, metric, view, filters, selection and map position (links produced by Share/Cite pin the year). The "Cite" button gives APA 7, Chicago (author–date), BibTeX (@dataset with version) and a plain "cite this page" string; the publication year is the data year, not the year you clicked, and the snapshot id is included for exact recovery. Please cite the upstream source as well as this site.

Questions or corrections: see 소개.