University of Wisconsin–Madison

Geolocating White Phosphorus Plumes with Open Source Tools

A tutorial from the Public Tech Media Lab, University of Wisconsin Madison

By Ahmad Baydoun

In today’s media landscape, by the time you see a photo from a war zone on your phone or computer, it has probably been screenshotted, re-uploaded, and forwarded so many times that the caption, the timestamp, and the file’s metadata are gone. What is left is likely a photograph and nothing else. Before anything can be said about where whatever is portrayed happened, the footage must be verified as belonging to the claimed location and time, and not recycled from another conflict or from the same location at another time. That work is called source verification. It is a subject of its own, and this tutorial leaves it out for a future guide. Instead, this tutorial starts one step later, with a photo whose author and time are already known, and works on the question that is left: where the photograph was taken. What follows is one case worked from beginning to end, coming from Lebanon.

Photos from the war between Israel and Hezbollah show up first on Telegram, X, WhatsApp, Facebook, Instagram, and TikTok. Which app they appear on first depends on where you are, because people in each country use different apps. In Lebanon, it is usually X first, then Telegram and WhatsApp.  However, the photo we work with here comes from ANP. Using media from a photo agency shifts that work rather than removing it, because the photographer, the timestamp, and the editorial chain of custody were all checked before the file was uploaded to the agency’s website. What is left to learn is how to search the image bank and how to test what the item page claims.

Our photograph of a white phosphorus plume in south Lebanon comes with a caption that names no Lebanese village, but by the end of this tutorial you will have coordinates, a named munition, and an estimated area of impact. Along the way, you will learn how to choose search terms that return productive results, how to read a caption for what it does and does not claim, how to tell two similar smoke munitions apart by counting the trails they leave, how to determine where a photograph could have been taken from without opening a map, how to match features in a photograph against satellite imagery, and how to test the result against independent data. Every tool used here is free and open source.

In the process, you’ll learn strategies that are not specific to investigating white phosphorus, and that is the point. Geolocation is a transferable skill in open-source investigations, and the same sequence of narrowing, matching, and confirming works on a strike, a burning house, a protest, a wildfire, or any photograph whose caption you have reason to doubt. Only one section below deals with the munition itself. The rest is a method you can carry to any image from any source, and you will use it constantly, because most of what circulates during a conflict arrives stripped of exactly the information you need.

Starting with the photo agencies

Photo agencies such as ANP, AFP, Getty Images, Reuters Connect, and Anadolu Agency have huge archives of footage documenting the war in Lebanon. All five agencies allow for keyword search. However, choosing the keyword takes some thought, because a search for “white phosphorus” returns very few results. This happens because a photographer standing several kilometers from a burst cannot always identify the munition used, and an agency will not caption a claim its own photographer cannot make. Instead, I look for what the photographer could honestly see. My query is three words: Lebanon, Israel, smoke. Whenever you need to decide on queries for your research, try to imagine how whoever produced the photo or video would describe it themselves.

Figure 1 – The ANP archive searched for three words, Lebanon, Israel, smoke, returning page after page of plumes filed from along the frontier.

The search returns a batch of images rather than a single photograph. The frames boxed in red were all filed by the same Israeli photographer, with the country given as Israel and the location as Misgav Am, and the filing times sit within minutes of each other. That closeness is the useful part: a photographer working that fast is unlikely to have moved between shots, so the boxed frames were almost certainly taken from one vantage point, turning on the spot. Misgav Am is named, but we need to treat it as a district rather than an exact coordinate, since the camera could have stood anywhere on the ground around the kibbutz rather than inside it, and agencies sometimes get locations wrong. That is not a reason to discard it, but to learn a lesson: Treat any location name as a working assumption and check it against what the photos actually show as the search narrows. Once the batch is read as a single position, use frames with more recognizable features to pin that position down, then work out where the plume in the frame under investigation came down.

Before moving on, here’s an ethical warning: never publish a photographer’s location in an active war zone. Keep it safely in your working files, as something to work from rather than something to put online. The same rule applies to the people who live in the area: never publish the location of a civilian’s house. Not following this rule will put the person who stood there at risk, and the same holds for residents and witnesses who appear in the picture.

Figure 2 – The ANP item page for the frame this tutorial works with, showing the agency caption, the filing date and time, the photographer’s name, and the reference number epa12919842. Photo: EPA/Atef Safadi via ANP. All rights reserved; not covered by the CC license.

Figure 2 shows the photograph to be located, one of four frames of the same scene held in the ANP archive. Four pieces of information on the item page matter here: the location, the date and time of filing, the direction the camera faced, and the photographer’s name. When you are dealing with a photograph from a less informative source, gather as much context as you can: grab the accompanying text, identify the original posting date, reverse-image search it, and check the poster’s profile.

Which munition is it?

The plume on its own is not an identification. The Israeli military uses two 155-millimeter smoke shells that look similar in the air: the M825 series, which carries white phosphorus, and the M150, which carries a hexachloroethane and zinc mixture.  For the technical difference between the two munitions, see this article by Trevor Ball & N.R. Jenzen-Jones. The difference is in the signature, and it can be counted. An M825 releases 116 burning felt wedges, so the frame fills with a dense scatter of thin white trails. An M150 releases five canisters, so it leaves five trails instead of a hundred. Getting that count wrong is the most common error in this work, and it costs the story its credibility. The count only works while the trails are still in the air, so choose a frame shot in the first seconds of the burst rather than one taken minutes later, by which time the trails have merged into a single mass of white smoke, and the signature is gone. If the trails cannot be counted, do not name the munition: set the frame aside rather than claiming it as white phosphorus.

Figure 3 – Two frames filed by the same photographer, Atef Safadi, from Misgav Am on consecutive days: epa12921699, 29 April 2026 at 15:38 (left), and epa12919843, 28 April 2026 at 16:27 (right). Set side by side, the item pages show the two signatures compared: the dense scatter of an M825 plume against the small number of separate trails left by an HC smoke shell.

Finding a higher-resolution copy

The images an agency displays without a subscription are often low resolution, and the contextual details we need to increase the geolocation possibilities, like the windows on a façade or the shape of a roof, dissolve at that size. A Google reverse image search on the frame itself is the workaround, because the outlets that purchased the photograph may publish it at higher resolution. In practice, I drag the saved preview into Google Images, open the list of pages where the same frame appears, and filter by size.

Figure 4 – The reverse image search, used to find a higher-resolution copy of the frame published by an outlet that licensed it.

You can also alternate in the top toolbar between “exact matches” and “visual matches.” Using “Visual matches” sometimes can show you one of the components from the image you’re analyzing from a slightly different vantage point or from a different date. The articles featuring these other images might also include information that can help narrow down the location of your original file.  

Using the sun to find the direction of view

You can establish the camera’s direction in different ways, depending on what the photograph shows. Two ways are presented here: one reads the direction out of the photograph itself. The other works from the sun, using the time the photograph was taken as a starting point. Either should be enough on its own; where both are possible, running them together is the stronger check, because two independent routes should arrive at the same result.

The first route needs nothing but the picture. The sun casts shadows on the buildings in the foreground, and the direction those shadows fall gives a bearing. Solar panels are better still: they are set facing south to maximize exposure, so a paneled roof works as a compass standing inside the image. Enlarging the houses below the plume shows both, and from them the south-to-north axis can be drawn straight onto the photograph. This is the route to take when there is no timestamp, or when the sun is not clearly casting shadows.

Figure 5 – Direction of view read from the frame itself: solar panels on the foreground roofs, set facing south, and the shadows the sun casts on the houses below the plume. From those, the south-to-north axis is drawn onto the photograph, right.

The second route uses the filing time from the item page. SunCalc is a free tool that shows where the sun was in the sky at any given moment: enter the date and time of the photograph and the position named in the caption, Misgav Am, and it returns the sun’s altitude and azimuth for that moment. Matching that against the sun in the photograph fixes north, and with north fixed, the line of sight follows, running south from the ridge at roughly 180 degrees into Lebanon. Instead of every hillside visible from that ridge, only the ground lying in that one direction has to be searched.

Figure 6 – Left: SunCalc set to the date and time of the photograph and to the position named in the caption, returning the sun’s altitude and azimuth for that moment, with the red cone sketched on top of it to mark the arc the camera could have been looking along from that ridge. Right: the same reading used to fix north in the photograph itself.

Drawing the search area

The red cone sketched over SunCalc now has to be moved into a map that can be searched. Open Google Earth Pro and drop a placemark on the Misgav Am ridge. There is no cone tool as such, so draw it yourself: take the polygon tool, click once on the placemark, then click two points far out in the direction the camera was facing. That gives a triangle running south from the ridge into Lebanon. Rough is enough at this stage. The cone is a working estimate rather than a boundary, and the plume may well sit a little outside it or well short of its far edge, so treat a promising hillside just beyond the lines as worth checking rather than excluded. What the cone does is discard the ground the plume almost certainly did not come down on, which is most of the map, and everything that follows happens inside it.

One note on the tool. Google announced in July 2026 that Google Earth Pro for desktop will no longer be available to download from 25 June 2027. Copies already installed keep working, but they will stop receiving updates, so if you do this kind of work, it is worth installing it while you still can. Both Google Maps and Google Earth for web will now render terrain in three dimensions, which helps when you need to judge elevation and see whether one ridge stands in front of another.

Keep the physics of photography in mind. A long lens flattens distance: at heavy zoom, the foreground, the village, and the horizon stack up and look close together. So, a ridge that seems to sit right behind the plume can in fact be several kilometers further back, well inside Lebanon.

Figure 7 – The cone transferred into Google Earth, its two red boundary lines opening out from Misgav Am and running north across the frontier, the yellow line, over Aadaysit Marjaayoun, Taybeh, and the ground toward Deir Mimas. Everything outside the lines is discarded; the search from here on stays between them.

Scouting the terrain

Back to the photograph, the next step is to pick out the features most likely to stand out in satellite imagery. Five stand out: a water tank and a pair of antennae on the skyline, a broad excavated pit at the left edge of the village, an orchard ringed by open land, and a roofed complex so much larger than the buildings around it that it reads as institutional rather than domestic.

Figure 8 – The features picked out of the photograph and boxed in red: the water tank and the pair of antennae on the skyline, the red-roofed complex on the ridge to the right, an orchard ringed by open land, and the excavated pit at the left edge of the village.

The red-roofed complex is the place to start, because a building that size is usually a school, a hospital, or a government office, and those are usually named on maps. However, keyword searches on Google Maps and inside the red cone — school, hospital, government institutions — returned nothing that matched. This is not surprising for Lebanon and other areas where Google has collected much less data than in the United States or Western Europe, for example. We’re then left with manual scouting: panning across the cone in Google Earth looking for a roof of that size and shape.

Two candidates came up after a patient session of scouting on Google Earth:

  • Nabatieh at 33.373167, 35.494056
  • Shoukine at 33.351704, 35.452777

Figure 9 – The search area on Google Earth, the red cone runs out from Misgav Am, with the two candidate roof complexes pinned inside it and shown close-up: Shoukine at 33.351704, 35.452777, lower left, and Nabatieh at 33.373167, 35.494056, right.

Further scouting around each of these locations finally settles it. Shoukine is the better fit: the open excavated pits are there, and the large red roof sits on a hill, as it does in the photograph. What is left to place is the row of houses in the foreground.

The cone is much smaller now, but the row of houses in the foreground is still not located, and it is the feature that matters most, because it sits where the plume came down. It could be on any of the hills along the line of sight, since a near hill can hide the one behind it. So, the only option is to test the hillsides inside the cone one at a time, each against three things in the photograph: how the houses are scattered, how the ground falls away into the valley behind them, and where that row sits relative to the red roof and the excavated pit.

One thing to consider is that the hill in the foreground and the hill behind it do not have to be neighbors. Other hills can stand between them, out of sight, because at heavy zoom levels the distance between geographic features in a photo collapses: a long lens stacks the near crest, the middle ground, and the far ridge into what reads as a single slope. So treat anything that appears to sit directly behind something else in the frame as unproven until the satellite imagery confirms it.

Figure 10 – The cone in Google Earth, with the bands of ground the line of sight crosses shaded in red: the successive valleys and ridges between Misgav Am and the two candidate roof complexes, each carrying a row of houses that could pass for the row in the photograph.

The difficulty we face at this point is that the red cone holds several valleys where scattered houses look almost identical to the one in the photograph. Running out from Misgav Am, the line of sight crosses one shelf of ground after another, and each carries much the same arrangement: a row of houses along the crest, the ground dropping away behind them, orchards and open land below. Figure 10 shades those bands in red, from Aadaysit Marjaayoun up through Taybeh and Deir Seryan toward Zawtar al Sharqieh, and at heavy zoom any one of them could produce a frame resembling the photograph.

Figure 12 – The geolocation painting, matched feature by feature: the excavated pit, the front row of houses, and the line of trees.

Figure 12 sets the photograph against one such hillside, this one of Zawtar al Sharqieh at 33.321742, 35.480141, and the front row of houses and the line of trees running below them are an exact match. That settles the ground. From there, the burst itself can be mapped. A plume usually covers between 125 and 250 meters in diameter, depending on the altitude and angle of the burst, so with the buildings now identified in the satellite imagery, that spread is drawn as a circle in Google Earth with the ruler tool, centered under the base of the plume.

Figure 13 – The same house in three Google Earth passes from different dates. Each was captured at a slightly different angle, so a different side of the building shows in each.

We take the house in the green box in Figure 12 and inspect it closely, and here the historical imagery becomes useful. Scroll the timeline over that one building, and it turns out: the three passes above are the same house on three dates, one looking almost straight down on the roof, one leaning far enough to show a side wall, one catching the front. So do not settle for whatever pass Google opens on. Work through the dates until you find the one that shows the facade you are trying to match, because that is the only view you can set against the ground photograph wall for wall and window for window.

Confirming against recent satellite imagery

Figure 14 – Sentinel-2 in true color, top row: the same ground on 16 April 2026, left, and on 29 April 2026, right, the day after the strike. The circles mark the three patches that change between the two passes: green ground turning brown where the wedges burned.

We can also check the satellite imagery on the Copernicus Browser, using Sentinel-2, to see whether anything changed in the area across the time range in which the event happened. This is also useful to work backward from, since if we are not sure where a plume came down, for example, where the plume goes behind a mountain and we cannot see exactly where it landed, the imagery can help us locate it, since the fires the wedges start leave burn scars that are visible from orbit even when the burst itself was hidden. You can see burn marks in the green ground, which now show as brownish patches. They coincide with the area we located and extend a little around it as well, which is what a burst of 116 felt wedges over an area of that size would be expected to do, since every wedge burns where it falls. We can also confirm that seasonal change cannot account for what we see in the images: the two satellite passes are thirteen days apart in the same spring, the fields and hillsides around the patches read the same in both, and the browning is confined to three discrete spots sitting on the plotted spread rather than spreading evenly across the valley. That is what burning wedges leave behind, and it is not what a turn of the season looks like.

Figure 15 – The same two passes in false color, bottom row: 16 April 2026, left, and 29 April 2026, right. Healthy vegetation reads bright red, so the burned patches inside the circles show as dark gaps in it, clearer here than in the true-color view.

Inside the Copernicus Browser, you can also switch to a false-color view whenever burn marks are what you are looking for. Sentinel-2 records infrared as well as visible light, and living vegetation reflects infrared strongly, so in the false-color view healthy ground glows red while anything scorched or bare stays dark. A scar that is a dull brown smudge in true color reads as a hole punched in the red, which is why the same three patches are easier to pick out in Figure 15 than in Figure 14. The limit is resolution: a Sentinel-2 pixel covers ten meters, so a small burn can still be lost.

Keep in mind, however, that white phosphorus does not always ignite fully, that fire does not always leave burn marks, and that it does not always spread evenly. If the burst was over a city or a village center, over built-up ground, then it leaves no marks visible from satellite imagery at all, and if the ground was wet or humid, the fire does not really spread, and again there is nothing to see.

What the method gives, and what it does not

After all our work, a frame that arrived with no location in its caption ends up being a plume over Zawtar El Charqiyeh, anchored at 33.321742, 35.480141, with a white phosphorus plume between 125 and 250 meters falling across the houses. None of this information came from a specialized tool. It came from reading the photograph before searching for it, narrowing the ground it could have been shot from, and comparing the image against the satellite archive in the same season and at a similar angle.

That is the whole method, and it is available to anyone with a browser and the patience to scroll, scout, and pan through historical imagery. What it does not give is intent, and what I keep offline is the position of the person who took the picture.

This frame is one of more than 700 images in the archive at Whitephosphorus.info, most of them geolocated the same way, and together they establish 286 white phosphorus strikes across south Lebanon between 2023-2026. If you want to help geolocate remaining images and videos, join us on Discord.  

Geolocation is also how this kind of work turns into pressure. In an Amnesty International investigation published on 27 March 2025, 347 pictures and videos were verified, and more than 50 instances of Israeli military operations involving HD Hyundai machinery were geolocated across the occupied Palestinian territory, with the field evidence set against satellite imagery to build a case a company can be asked to answer for. The effect was visible almost at once: after publication, the Israeli military began blurring the manufacturer’s logos on its machinery in its own press releases.