Global Conflict Monitor
2025 · Active Armed Conflicts & Displacement
UNHCR 2024: 117 million people forcibly displaced globally — a record high.
This visualization presents factual data from ACLED, UNHCR, and OCHA for situational awareness and research purposes.
A globe.gl WebGL globe showing 24+ active armed conflicts (2024-2025), 25 animated refugee displacement flow corridors, and interactive country borders. All data is hardcoded from publicly available ACLED, UNHCR, and OCHA reporting.
24+
Active conflicts tracked
25
Displacement flow arcs
117M
People forcibly displaced (UNHCR 2024)
6
Conflict type categories
3
Intensity levels
2
Interactive filter dimensions
Conflict Type Classification
Each conflict is assigned one of five categories, encoded by dot colour on the globe.
Conventional inter-state or large-scale military operations
Armed conflict between internal factions for state control
Non-state armed group operating against a government
Disputes over contested borders, islands, or regions
Acute breakdown of governance with mass civilian harm
Technical Pipeline
From hardcoded conflict data to interactive WebGL globe in six stages.
Conflict Data Model
Each of the 24 tracked conflicts is represented as a typed record with geolocation, intensity classification (high / medium / low), conflict type, casualty estimates, displacement counts, principal parties, and operational status (active / ceasefire / escalating). Data is sourced and reconciled from ACLED, UNHCR, and OCHA situation reports covering 2024-2025.
globe.gl WebGL Globe
The globe is rendered using globe.gl, a Three.js-based globe library. The globe is dynamically imported (code-split) and mounted into a div ref. Earth night texture, topology bump map, and night-sky background are provided via unpkg CDN URLs. Atmosphere color is reddish (#ff4444) to match the conflict theme. Auto-rotation and damping are configured via globe.controls().
Conflict Zones — pointsData
Active conflicts are rendered as globe points via globe.gl's pointsData API. Radius is proportional to the displaced population count (power-scaled). A setInterval pulse loop alternates pointAltitude between two values to create a breathing effect. Fill colour encodes intensity (red / orange / yellow). Selected conflicts are highlighted in white. Click flies the globe to that conflict location.
Displacement Arcs — arcsData
The 25 major refugee and displacement flow corridors are visualised as animated great-circle arcs using globe.gl's arcsData API. Arc width is proportional to flow volume. Dashed animation (arcDashLength / arcDashGap / arcDashAnimateTime) visualises flow direction. Arcs remain visible across all filter states to maintain geographic context.
Country Borders & Interaction
Country borders are fetched from the public /countries-110m.geojson endpoint and applied via globe.gl's polygonsData API. Hovering a country highlights its border; clicking flies to it and opens a country stats panel showing active conflicts, total displaced, conflict types, and displacement corridors originating from that country. Conflicts can also be filtered by type and intensity.
Data Attribution
All conflict data is hardcoded based on publicly available 2024-2025 reporting from ACLED (Armed Conflict Location & Event Data Project), UNHCR Global Trends, and OCHA situation reports. Casualty and displacement figures are estimates and subject to ongoing revision. The 117 million forcibly displaced figure is UNHCR's 2024 mid-year update.
Tech Stack
globe.gl (Three.js)
Globe renderer
useRef + dynamic import
React integration
pointsData API
Conflict zones
arcsData (animated dash)
Displacement flows
polygonsData GeoJSON
Country borders
setInterval (altitude)
Pulse animation
countries-110m.geojson
Data fetch
Next.js App Router
Framework
Data Notes & Methodology
- —
Casualty figures are minimum estimates; actual totals are likely higher due to under-reporting.
- —
Displacement figures represent cumulative displaced persons as of 2024-2025 reporting, not new displacements in 2024 alone.
- —
The UNHCR 117 million figure covers refugees, asylum seekers, and internally displaced persons (IDPs) globally.
- —
Conflict locations use a representative point (city or region capital) — actual conflict zones are geographically dispersed.
- —
Ceasefire status does not indicate resolution; ceasefires can break down and are noted as of early 2025.
- —
Territorial disputes marked as 'low intensity' reflect current non-kinetic posturing but carry significant escalation risk.
Sources: Armed Conflict Location & Event Data Project (ACLED) · UNHCR Global Trends 2024 · OCHA Humanitarian Situation Reports · UN Human Rights Council · Various news wire services
Explore the live conflict globe
Pan, zoom, and filter 24+ active conflicts by type and intensity. Click any conflict zone to view parties, displacement figures, and operational status.
Open Globe