Data sources and methodology — how the battleMap is built
battleMap is a live map of publicly reported conflict events. It does not have correspondents on the ground: it collects reports that are already public — local and international media, official statements by the parties, geolocated footage and open-source (OSINT) analysis — normalises them, checks their coordinates, classifies them, translates their titles and places them on the map with a timestamp and a link to the source. New events arrive roughly every 5 minutes. The map shows what was reported, where and when; it does not adjudicate who is right.
1. Where the conflict events come from
Every event on the live war map is a publicly reported incident: a strike, shelling, a drone attack, an air-defence engagement, a reported advance or withdrawal, a naval incident, an explosion, a statement that changes the situation on the ground. The reports come from local media in the region, international news agencies, official channels of the parties (general staffs, defence ministries, regional authorities, armed groups' own statements), UN and humanitarian bodies, and geolocated photos and videos analysed by the open-source community. battleMap aggregates these public reports; it never uses leaks, hacked material or non-public channels. Each event keeps a link to the report it came from, so any point on the map can be traced back to its origin.
2. The pipeline, every 5 minutes
- Collection. The collector runs every 300 seconds and pulls new reports for each of the ten regions. Each report gets an immutable identifier, a UTC timestamp and a source pointer; reports without a usable source are dropped.
- De-duplication. The same incident is often reported under several regions (a strike in southern Lebanon appears on the Lebanon, Hezbollah and Israel–Palestine feeds). It is stored once per region and shown once on the global map.
- Geolocation check. Coordinates are validated server-side: consistency with the named place and country, and a sanity check against impossible positions. Ambiguous locations stay on the map but are not presented as precise.
- Classification. Events are assigned a category (strike, shelling, troop movement, diplomatic escalation, civilian incident, naval incident) by deterministic rules and a dictionary — the same input always gives the same category. No language model decides what an event is.
- Translation. Titles are machine-translated (Google Translate, cached) into English, Polish, Ukrainian and Russian. The source link keeps the original wording.
- Publication. The event appears in the list and on the map. The free dashboard keeps 30 days of history; older events are available through the REST API.
3. The territorial-control layer
For Ukraine the map draws a territorial-control overlay — the current line of contact and the areas held by each side — refreshed daily from publicly available cartographic sources (press T on the map). It is a daily snapshot, not a live feed: a reported advance appears first as an event pin and only later, if it holds, as a change of the polygon. How this works, and why sources disagree on the exact line, is explained in how front lines are mapped and how much of Ukraine Russia occupies. Other theatres have no control layer.
4. The aircraft and ship tracker
The live tracker is a separate module that merges public feeds of transponder data: ADS-B and MLAT aircraft positions from the OpenSky Network, adsb.lol, airplanes.live and a Flightradar24 feed; AIS ship positions from AISStream and MyShipTracking; and context layers such as earthquakes (USGS, EMSC), fire detections (NASA FIRMS), space weather (NOAA SWPC, NASA DONKI), volcanic activity (Smithsonian GVP), air quality (OpenAQ), satellites (CelesTrak) and weather alerts. The same aircraft or ship reported by several feeds is merged into one track. Positions are kept for about an hour and events for 30 days. The tracker shows only transponders that broadcast and are received by public networks: combat drones (no transponders), most military aircraft and warships (no broadcast) and ships that switch AIS off are invisible by design — see why planes disappear from radar and why ships disappear from AIS.
5. What the map does not show, and other limits
- Reports, not confirmations. A pin means "this was reported here", with the source attached. Claims by the parties — "drones intercepted" versus "target hit" — are shown as reported, side by side, not resolved.
- Absence is not calm. No pins in an area means no public reports, which in Sudan or Myanmar often means blackouts and restricted access rather than quiet.
- Lag. Minutes to hours pass between an incident and its publication; the time shown is the report time, which can differ from the time of the incident.
- Do-no-harm delay. Events about troop movements are published with a deliberate delay so the map cannot serve as a real-time targeting tool.
- Machine translation. Translated titles can be imprecise; the source keeps the original.
- Neutral grouping. Parties are grouped by ISO3 country codes for colouring only; the grouping is geographic and technical, not a political judgement.
6. Corrections
Every event has a "report" button for wrong locations, duplicates or misleading titles; reports are reviewed daily. Editorial pages (region pages, FAQ, glossary, blog) carry the date of their last change. Anything else: [email protected].
7. How to cite battleMap
Cite as battleMap (battlemap.online), live conflict map, accessed <date> and link the
relevant region page, for example https://battlemap.online/conflicts/ukraine/en. When you
quote a specific incident, attribute it to the source linked on the event — battleMap is the index, not
the witness. The REST API returns the same events with timestamps, coordinates,
categories and source links for research use.
8. Who runs this
battleMap is built and run by Jakub Cieślak (SISL.pl, Poland), a software engineer working on data pipelines and GIS, as an independent OSINT project. Reference reading that shapes the methodology — ACLED, ISW, UN OCHA situation reports, Bellingcat's verification guides — is listed on the about page. Terms used on the map are defined in the glossary; short answers are in the FAQ.
FAQ
How often is battleMap updated?
The conflict pipeline runs every 5 minutes and the Ukraine territorial-control layer is refreshed daily. The aircraft and ship tracker polls its feeds every few seconds to a minute.
Are the events on the map verified?
Events are publicly reported incidents, shown as reported and attributed to their source. Coordinates are checked for plausibility and duplicates are merged, but battleMap does not independently confirm what happened on the ground.
How should I cite battleMap?
Cite as "battleMap (battlemap.online), live conflict map, accessed <date>" and link the relevant region page. Attribute the underlying report to the source linked on the event, not to battleMap.
What does the map not show?
Anything that was not publicly reported, combat drones (no transponders), most military aircraft and warships (no broadcast), ships that switched off AIS, and troop movements, which are published with a deliberate delay.