Geolocating a photo with free tools: how I actually do it
No Maltego, no paid satellite. Patience, shadows and Overpass Turbo
Contents
Few people asked me after a chat discussion how I find where photo was taken. There is no magic and no secret software. It is mostly patience and writing down what you checked. Here is my real process, the same one I use for war footage, but please practice on your own city first. Not on people.
Step 0: is it even new?
Before geolocation, I check if the picture already exists online. Most "new" war photos I see in Telegram chats are old. Run reverse image search in several engines, because they are good at different things:
- Google Lens: good for objects, landmarks, products
- Yandex Images: honestly the best for buildings and streets in Eastern Europe
- Bing Visual Search and TinEye: TinEye can sort by oldest, this is the most useful button on the internet
If you find same photo from 2022, you are done. Write it down, move on.
Step 1: metadata (usually nothing)
If you have original file directly from the person, look at EXIF:
exiftool -a -G1 -s photo.jpg | grep -iE "gps|date|model"
But Telegram, X, Facebook, WhatsApp strip EXIF. So 95% of time this step gives nothing. Do it anyway, because the 5% is gold.
Step 2: read the picture like a map
I make a list before I search anything. Script on signs (Cyrillic? which letters? Ukrainian has і, ї, є, Russian has ы, э), road markings, type of utility poles, kerbs, balcony style of apartment blocks, vegetation, which side cars drive, shop names, phone numbers on adverts (area codes!). Every item cuts the area.
Step 3: narrow down with Overpass Turbo
This is where people get surprised. OpenStreetMap knows where every water tower, church, petrol station is. If photo shows a church near a water tower, you can ask for exactly that. Example for practice, in my current city:
[out:json][timeout:60];
{{geocodeArea:Kraków}}->.a;
node["man_made"="water_tower"](area.a)->.towers;
(
nwr["amenity"="place_of_worship"](around.towers:300);
);
out center;
Paste it in overpass-turbo.eu, press Run, and you get every place of worship within 300 m of a water tower. Then you go through results one by one in satellite view. Sometimes 3 results, sometimes 300. With 300 you need more features from step 2.
Step 4: confirm with satellite and street level
Google Earth Pro (free, desktop) has historical imagery, which matters when buildings are destroyed or new. For fresh imagery I use Sentinel-2 in EO Browser, 10 m resolution, so it shows big things only, not cars. Match at least three independent features: roof shape, road curve, tree line. One feature is coincidence, three is location.
Step 5: when was it taken
Shadows. If you know location, SunCalc shows sun direction for any date and hour. Shadow pointing north-west in the morning? Then caption saying "evening" is wrong. Also season: leaves, snow, people's clothes.
Step 6: write your confidence
I always finish with one of four labels: confirmed, likely, unconfirmed, false. And one sentence what I do not know. If you cannot say what you do not know, you are not finished.
What I do not do
I do not identify private people, their homes, their families. Locating an event is OSINT. Locating a person who did not agree to it is something else, and I will write about this separately.
Tools mentioned: exiftool, Overpass Turbo, EO Browser, SunCalc, Google Earth Pro. Good free guides also on Bellingcat. All free. The expensive part is your evenings)
Written by
Marta Kovalenko
Backend dev (Python, Postgres) and OSINT hobbyist. From Zaporizhzhia, in Kraków since March 2022. Geolocation, satellite imagery, verifying before sharing. Post a claim without a source in my topic and I will ask for one. Слава Україні.
Get the best of #hack_the_planet weekly
One email each Monday with the most useful posts. No spam; unsubscribe in one click.
Comments
Sign in to join the conversation.
Sign in to comment