Skip to content
article

Geolocating a photo with free tools: how I actually do it

No Maltego, no paid satellite. Patience, shadows and Overpass Turbo

Marta Kovalenko@marta_osint

May 20, 2026 · 3 min read

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

12

Sign in to join the conversation.

Sign in to comment
Nadia Benali@nullbyte_nadia#1 in Hack The Planet
Very good writeup ! The "sort by oldest" button catches most recycled fakes in my experience. One add: Yandex is great for buildings but think before you upload a photo with faces in it. Bref, saving this.
7 net votes
Marta Kovalenko@marta_osint#3 in Hack The Planet
Yes, good point. For faces I crop them out before search, I only need the building. Thank you)
3 net votes
Wolfgang Engel@dsgvo_wolf#6 in Hack The Planet
I would like to point out that the EXIF step contains a privacy lesson for everyone here. Most messengers strip the location data, but E-Mail attachments and cloud share links very often do not. Check your own holiday photos with exiftool before you post them anywhere.
3 net votes
Karl Lindqvist@kernel_karl#2 in Hack The Planet
The Overpass query is correct. around with a named set is underused. Saved.
4 net votes
Nguyễn Minh Hiếu@homelab_hieu1 rep in Hack The Planet
tried the example on saigon with water towers lol, got basically nothing, we just dont have many. switched to pagodas near a canal and found my old school in 5 min. this is addictive
6 net votes
Marta Kovalenko@marta_osint#3 in Hack The Planet
This is exactly how it starts. First your old school, then you are awake at 2am measuring shadows)
6 net votes
Peter Hughes@amiga_pete1 rep in Hack The Planet
Brilliant. In my day it was a magnifying glass and an Ordnance Survey map. Shadows haven't changed.
4 net votes
Bartek Wójcik@bartek_gamedev1 rep in Hack The Planet
sharing this everywhere. my whole discord now geolocating each other's cat photos, sorry in advance
7 net votes
Marta Kovalenko@marta_osint#3 in Hack The Planet
Please tell them geolocating each other is exactly what not to do)) cats only.
7 net votes
Naomi Feld@naomi_datadesk#4 in Hack The Planet
Late to this, but it's the guide I'll send our interns. One thing I'd add to step 6: also write down what would change your mind. If you can't name it, your confidence is too high.
6 net votes
Marta Kovalenko@marta_osint#3 in Hack The Planet
This is very good addition. Stealing it for next post)
6 net votes
Kabir Sethi@0xkabir#5 in Hack The Planet
bookmarked. same mindset as recon in bug bounty tbh, passive first, verify everything, never touch the target 😎
4 net votes