---
name: "Geolocate from pixels"
repo: https://github.com/useosint/skills
source: https://github.com/useosint/skills/blob/HEAD/skills/geolocate-from-pixels/SKILL.md
license: "MIT"
install: "npx skills add useosint/skills --skill geolocate-from-pixels"
page: https://100xlab.com/resources/agent-skills/useosint-skills--geolocate-from-pixels--ei4vhy
---

# Geolocate from pixels

Every photograph taken outdoors contains enough information to place it. The
constraint is never the image; it is your patience and your reference knowledge.

The beginner mistake is searching before inventorying. People see a mountain,
type "mountain with two peaks" into a search box, and get nothing. The method is
the opposite: extract every clue first, rank them by how much of the planet each
one eliminates, and only then start searching — because the clue that pins the
country is usually not the one your eye went to.

## Rank your clues before you search

Work down this list. Each row eliminates far more of the world than the one below
it, so a single row-one clue is worth twenty row-six clues.

| Tier | Clue | What it buys you |
|---|---|---|
| 1 | Readable proper nouns — business names, street names, municipal logos, school names | Often an instant pin. A business name plus a country is a map query, not an investigation. |
| 1 | Phone numbers on signage and vehicles | Country and frequently city, from prefix and digit-grouping convention. |
| 1 | Language *and script*, then orthography | Script narrows to a family; specific diacritics, letter forms and spelling conventions narrow to one country and sometimes one region. |
| 2 | Licence plate format — shape, colour, band, character layout | Country, often issuing region. Visible from a long way off, survives compression. |
| 2 | Driving side | Splits the world roughly a third to two thirds. Read it from parked-car steering wheels, not just from traffic. |
| 2 | Road markings — centre-line colour, dash rhythm, edge lines | Yellow versus white centre lines alone cuts most of the world. |
| 3 | Utility pole construction and insulator style | Regionally conservative and rarely changed. One of the most reliable tells in the frame. |
| 3 | Bollards, guardrails, kerb painting, chevron markers | Nationally standardised, nationally distinctive. |
| 3 | Traffic signal mounting, lens arrangement, backboards | Overhead versus pole-side, horizontal versus vertical, extra lenses — all national conventions. |
| 4 | Signage typeface and road-sign standard | Which sign standard a country adopted, and its specific alphabet. |
| 4 | Satellite dish elevation and azimuth | Constrains latitude, and the orbital slot indicates which service region. |
| 5 | Architecture, roofing material, window and balcony conventions, rooftop tanks and heaters | Region and climate band. |
| 5 | Vegetation and biome | Latitude band, climate, hemisphere. Careful: ornamental planting is global. |
| 6 | Terrain and horizon profile | Only useful once you have a candidate region — then it is decisive. |

Every variation and what it implies:
[reference/regional-indicators.md](reference/regional-indicators.md).

## Method

1. **Inventory.** Write a numbered list of every clue in the frame before you
   search anything. Include the negatives — no snow, no palms, no overhead wires
   — because negatives eliminate regions just as well. Zoom in on every sign,
   every vehicle, every pole. Run the preprocessing recipes in
   `find-the-original-image` to read underexposed or small detail.
2. **Fix the country.** Combine your tier-1 and tier-2 clues until they agree. If
   two contradict — Cyrillic signage with right-hand-drive cars — that
   contradiction is a finding: an imported-vehicle market, a border region, or a
   composited image.
3. **Read the text properly.** Transcribe, then translate, then search the
   transcription verbatim in the local language. Searching a translation loses
   you the match. If the script is unfamiliar, get the script identified before
   you attempt letters — Georgian, Armenian, Amharic, Khmer, Thai, Lao and
   Sinhala are all frequently misidentified as each other's neighbours by people
   guessing.
4. **Narrow to a locality.** Named businesses go into a mapping search restricted
   to the country. Chains are useful in reverse: a chain that only operates in
   three provinces eliminates the rest of the country.
5. **Query the map for the geometry, not the place.** When you have no names but
   you do have structure — a water tower next to a rail crossing next to a
   football pitch — query OpenStreetMap features directly with Overpass rather
   than panning around. This is the step most people skip and the one that most
   often works.

```
[out:json][timeout:90];
area["ISO3166-1"="RO"]->.a;
nwr["man_made"="water_tower"](area.a)->.t;
foreach.t -> .w (
  nwr(around.w:400)["leisure"="pitch"]["sport"="soccer"];
  out center;
);
```

6. **Confirm in imagery.** Match the candidate against satellite/aerial *and*
   street-level sources. Compare invariants: building footprint shape, roof
   colour, the count and spacing of windows, kerb line, tree positions, the exact
   arrangement of a fence. Do not match on things that change — parked cars,
   awnings, signage, foliage density.
7. **Chronolocate.** Sun position for time of day and date band, season from
   vegetation, weather archives for corroboration. Procedure in
   [reference/chronolocation.md](reference/chronolocation.md).
8. **Score it.** Three independent features aligning, or stop.

## Imagery sources and where each one wins

| Source | Reach for it when |
|---|---|
| Google Earth (desktop) | Default satellite work. The historical-imagery timeline is the reason to use the desktop client over the browser: it dates construction, demolition and earthworks. |
| Google Street View | Default street-level, in the countries it covers. Time-machine feature gives you dated captures of the same spot. |
| Yandex Maps and Panoramas | Russia, Belarus, Kazakhstan, Central Asia, the Caucasus, Turkey. Panorama coverage and satellite detail there routinely exceed Google's, and Yandex's imagery is sometimes from a different date, which is useful on its own. |
| Mapillary | Crowdsourced street-level. Covers roads, tracks and countries Street View cars never drove. Often the only street-level imagery for rural areas and much of Africa, South Asia and the Balkans. |
| KartaView | Second crowdsourced street-level set with different contributor geography. Check it when Mapillary is empty. |
| Bing Maps aerial and Streetside | A different capture date and sometimes a better angle. Oblique views help with building heights. |
| Apple Maps | Look Around coverage and high-quality 3D in major cities. |
| Esri World Imagery, with its Wayback archive | Versioned historical basemap imagery — a second, independent historical timeline when Google's is thin. |
| Copernicus/Sentinel browsers | Sentinel-2 optical at ten-metre resolution with a revisit measured in days. Too coarse for a building, ideal for dating a change: a fire scar, a flood, a new dirt road, a filled reservoir. |
| Landsat archive (USGS) | Thirty-metre resolution but a multi-decade record. For "when did this quarry appear". |
| NASA FIRMS | Thermal anomaly detections with timestamps. Dates fires, flares and large explosions to within hours. |
| Declassified historical imagery via USGS EarthExplorer | Pre-satellite-era-commercial coverage for very old questions. |
| National and municipal orthophoto portals | Frequently far higher resolution than any global provider, and dated. Search for the country's cadastral or survey agency viewer. |
| OpenStreetMap plus Overpass | Query by feature type rather than browsing. Also the only source for many footpaths, power lines and small structures. |
| Panorama generators from elevation models | Synthesises the horizon as seen from a given coordinate and bearing, for ridgeline matching. |

## Where this goes wrong

- **Confirmation bias is the failure mode of this discipline.** You will find a
  building that looks right and then start explaining away the differences. Set
  your falsification criteria *before* you look: "if the pole on the left is on
  the wrong side of the road, this candidate is dead." Then honour them.
- **Imagery is dated, and you are comparing across time.** A missing building may
  have been demolished; a present one may be newer than the photo. Check the
  capture date of the imagery, and check the historical timeline before you reject
  a candidate.
- **Ornamental and introduced vegetation lies constantly.** Eucalyptus grows on
  five continents. Palms are planted far outside their native range. Vegetation is
  a tier-five clue for a reason — it corroborates, it does not decide.
- **Global brands and franchised signage tell you almost nothing** except where a
  company operates. A ubiquitous fast-food logo is not a clue; the local-language
  sub-brand and phone number on the same sign are.
- **Compression invents detail.** Text you "read" at the JPEG artifact level is
  frequently not there. If a plate or a sign only becomes legible after upscaling,
  it is a hypothesis, not a reading. Go back to the original pixels.
- **Reflections and mirrors flip everything.** Text in a shop window, or a scene
  shot into a mirror, reverses. So does a mirrored repost. If the driving side and
  the text direction disagree, suspect a flip before you suspect a country.
- **Photos are not necessarily of one place.** Composites exist, and a video can
  be cut from footage of several locations. Geolocating one frame does not
  geolocate the video. Verify frames independently, and hand suspicion to
  `is-this-photo-real`.
- **Border regions and enclaves break single-clue logic.** Signage, plates,
  currency and infrastructure all mix within a few kilometres of a border, and in
  territories with disputed or transitional administration.
- **The claim shapes what you see.** If you are told the photo is from a
  particular city, you will find that city. Try to do the inventory before you
  read the caption, and when you can't, run the exercise as though the caption
  said somewhere else.
- **Long lenses compress and wide lenses stretch.** Apparent distance between a
  foreground subject and a background mountain is a function of focal length. Do
  not judge "how close the hills are" without accounting for it.

## Confidence grading

- **Confirmed location** — a specific coordinate where at least three mutually
  independent, non-transient features match reference imagery: for example
  building footprint geometry, the position and count of utility poles, and
  terrain profile. Independence is the requirement — three photos of the same sign
  is one feature, not three. You should be able to reproduce the camera position
  and bearing and state a radius in metres.
- **Probable location** — the correct locality with a plausible specific site;
  two independent features match, or three match but one reference source is
  undated or low-resolution. Express as a named place plus a radius, not a
  coordinate.
- **Region only** — country or province established from tier-one and tier-two
  clues with no site match. This is a perfectly respectable result and is often
  all a case needs. Say "somewhere in this province", not a point.
- **Unconfirmed** — a candidate that looks right but rests on transient features,
  a single matching element, or your own sense of resemblance.
- **Excluded** — you can affirmatively rule the claimed location out. Often
  easier and more valuable than finding the true one; a disproof needs only one
  hard contradiction, such as driving side.

Always report a radius with a coordinate. A bare six-decimal coordinate implies
sub-metre certainty you do not have.

## Worked example

An image is circulated as an attack on a fuel depot "in country A". No metadata.

Inventory: white centre line, right-hand traffic, concrete utility poles with a
single horizontal crossarm and stubby brown insulators, a warning sign in a Latin
script with a diacritic that does not exist in country A's language, one shop sign
partly legible, low scrubby vegetation, bare deciduous trees, snow patches in
shadowed ground only, a mountain ridge on the left horizon.

The diacritic already contradicts the claim — that is the finding that matters.
Script and orthography narrow to two neighbouring countries. The pole and
insulator style matches one of them.

The shop sign OCRs to a fragment. Searching the fragment as a business name gives
a chain with outlets in one province. Overpass query for fuel depots within that
province returns eleven candidates.

First candidate looks right in satellite view — same tank count. Killed by the
falsification test: the access road approaches from the wrong side and the ridge
would be behind the camera. Dead end, and a good one, because it was cheap.

Fourth candidate matches on tank arrangement, the perimeter fence corner, and the
ridgeline profile generated from elevation data for that viewpoint. Street-level
crowdsourced imagery from a nearby road shows the same pole line.

Chronolocation: shadow azimuth and a shadow-length ratio off the fence post give
mid-morning and a solar elevation consistent with two date bands. Snow in shade
only, plus bare deciduous trees, selects the late-winter band over the
early-autumn one. A weather archive for the nearest station shows precipitation
days earlier and clear skies that morning, consistent.

Result: location **confirmed**, 100 m radius, in country B not country A. Date
**probable** to a two-week window. Time of day **probable**, mid-morning local.

## Pivots

| What you got | Send to |
|---|---|
| Coordinates and radius | `where-was-this-taken`, `write-the-intel-brief` |
| Business name, chain, municipal body | `x-ray-a-company`, `who-really-owns-it` |
| Phone number from signage | `whose-number-is-this` |
| Company website on a sign or vehicle | `who-owns-this-domain`, `recon-a-domain-passively` |
| Named individuals visible or credited | `find-anyone` |
| Suspected composite or generated scene | `is-this-photo-real` |
| Need for earlier copies to date the scene | `find-the-original-image`, `read-deleted-pages` |
| Aircraft or vessel identifiable in frame | `track-planes-and-ships` |
| Multiple locations to relate to one another | `graph-the-network` |

## Legal and ethical notes

Reading public imagery and public map data is passive and lawful. Two limits are
real. First, geolocating a private individual's home, school or routine from their
own posted photographs is the core mechanic of stalking, and the fact that the
technique is impressive does not make the output legitimate; do it for
missing-persons work, authorized investigation, threat assessment, or to show
someone their own exposure, and not otherwise. Publish a rounded location or a
region rather than a doorstep coordinate. Second, in conflict work, publishing a
precise location can endanger the people in the frame or make them a target. Both
of these are judgement calls you must make explicitly and record. See
[../../ETHICS.md](../../ETHICS.md).

---

## Supporting file: reference/chronolocation.md

# Chronolocation method sheet

Chronolocation answers *when*. It almost always requires that you already know
*where*, because the sun's position is a function of location as well as time. So
geolocate first, then come back here. The rare exception runs the other way: if
you know the date and time from an independent source, sun geometry constrains
latitude.

What this method actually produces, honestly: **time of day to within tens of
minutes, and date to within a band of days to weeks — two bands, not one.** Anyone
claiming a single calendar date from shadows alone has either used another clue or
is overstating.

## Step 1 — Establish hemisphere and rough time from shadow behaviour

Before any arithmetic:

- In the northern hemisphere, north of the Tropic of Cancer, the sun is always in
  the southern half of the sky. Shadows at local solar noon point **true north**,
  and over the course of a day shadows sweep **clockwise**. South of the Tropic of
  Capricorn, both reverse: noon shadows point true south and sweep
  anticlockwise.
- Between the tropics the sun passes overhead twice a year, so noon shadows can
  point either way depending on the date. Do not assume hemisphere from shadow
  direction in the tropics.
- Short shadows mean high sun: near midday, and/or low latitude, and/or summer.
  Long shadows mean the opposite. A shadow much longer than its object means the
  sun is below 45° — early, late, high latitude, or winter.
- If you have video or a sequence of stills, the *direction of rotation* of the
  shadows is the cheapest hemisphere determination available, and it is unambiguous.

## Step 2 — Measure the shadow azimuth

You need the compass bearing the shadow points along.

1. Locate the scene first, then open the satellite view of that exact spot with
   north up.
2. Identify a ground line visible in both the photograph and the satellite image —
   a kerb, a wall, a fence, a road centreline, a building edge. Read that line's
   true bearing off the map.
3. Measure the angle between that reference line and the shadow *in the
   photograph*, correcting for the oblique view. Working on a plan-view sketch is
   more reliable than eyeballing the photo.
4. Shadow bearing plus reference bearing gives the shadow's true azimuth.

Then: **the sun's azimuth is the shadow's azimuth plus 180°** (mod 360). A shadow
falling toward 040° means the sun bore 220°.

Sanity checks that catch real mistakes: all shadows cast by vertical objects on
level ground in one photograph must be **parallel**, because the sun is effectively
at infinity. Converging shadows mean either the ground is not level, the objects are
not vertical, or the scene is lit artificially or composited — hand that to
`is-this-photo-real`. And shadows on a slope are lengthened or shortened by the
slope; only measure length on ground you can confirm is flat.

## Step 3 — Measure the solar elevation angle

For a vertical object of height `h` casting a shadow of length `L` on level ground:

```
solar elevation = arctan(h / L)
```

So an object whose shadow is exactly as long as it is tall sits under a 45° sun; a
shadow twice the height means about 27°; half the height means about 63°.

Getting `h` and `L` from a photograph is where the error comes from:

- Best case: object and shadow both roughly perpendicular to the camera axis, on
  visibly flat ground, with the whole shadow visible. Measure in pixels and take
  the ratio.
- Use an object whose height you can establish rather than assume. A standing adult
  is roughly 1.7 m but posture and footwear cost you several centimetres. A
  standard interior door is about 2 m. A shipping container is 2.59 m tall in
  standard height, 2.90 m high-cube. Traffic-sign and signal mounting heights are
  specified in national standards — look up the standard for the country you
  identified rather than guessing.
- Better than any assumed height: measure the same object's shadow in reference
  imagery you can date, or use two objects and check they give the same elevation.
- If the shadow runs away from or toward the camera, the foreshortening will make
  your `L` badly wrong. Find a different object.

Propagate the error honestly. A 20% error in `L` around a 45° sun moves your
elevation by roughly eight degrees, which is a lot of calendar.

## Step 4 — Solve for time and date

With coordinates, an azimuth and an elevation, use a solar position calculator —
SunCalc (suncalc.org) for a fast interactive read with a shadow-direction overlay,
or the NOAA Solar Calculator for a numerical answer. Set the location, then sweep
date and time until both the computed azimuth and the computed elevation match your
measurements.

Two constraints, two unknowns (time of day, day of year), so the geometry is
solvable — with a catch.

**The two-solutions-per-year problem.** Solar position depends on the sun's
declination, which sweeps from about −23.44° to +23.44° and back every year. Every
declination value except the two solstice extremes occurs **twice**: once while the
sun is moving north and once while it is moving south, symmetric about the
solstice. So your solution is always a *pair* of date bands — for example a band in
late April and a matching band in mid-August. Both fit the shadows perfectly.

An approximation good enough for a first pass, with `N` as day of year:

```
declination ≈ -23.44° × cos( 360/365 × (N + 10) )
```

And at local solar noon:

```
noon elevation = 90° - | latitude - declination |
```

which is the form to use if you have the date and want latitude instead.

**Date resolution is wildly uneven across the year, and this matters more than
people realise.** Near the equinoxes declination changes by roughly 0.4° per day,
so a shadow measurement good to a degree gives you a date to within a few days.
Near the solstices declination barely moves for weeks, so the same measurement
gives you a month or worse. Say which regime you are in when you report.

**Converting solar time to clock time.** The calculators handle this, but know what
they are doing, because it is where a "two hour discrepancy" usually comes from:

- Local solar noon differs from clock noon by four minutes per degree of longitude
  away from the timezone's central meridian, which in wide timezones is over an
  hour.
- The equation of time adds a seasonal offset of up to roughly a quarter of an hour
  either way.
- Daylight saving, where observed, shifts an hour — and whether it was in force on
  a given date is itself a date clue.
- Some countries run a single timezone across a huge longitude span, so solar and
  clock time diverge dramatically. If your case is in one of them, work in solar
  time and convert only at the end.

## Step 5 — Break the two-date ambiguity

This is the step that produces a usable answer. The sun cannot do it; the rest of
the frame can.

- **Deciduous foliage state.** Bare, budding, full leaf, autumn colour, leaf fall.
  A late-April and a mid-August solution look completely different on a birch. This
  is the single most effective discriminator in temperate latitudes.
- **Snow, and *where* the snow is.** Fresh even cover versus patches surviving only
  in shade versus dirty compacted ridges at road edges distinguishes early winter,
  late winter and a thaw.
- **Crop stage.** Bare soil, green shoots, full height, harvested stubble, ploughed.
  Combined with a known crop and region this is tight.
- **Water level** in rivers and reservoirs, and the visible tide line on a coast.
- **Human seasonal markers.** Clothing, heating, awnings and outdoor seating,
  Christmas or Ramadan or national-holiday decoration, school in or out of session,
  seasonal retail displays, sports fixtures in season.
- **Dated objects in frame.** A newspaper, a poster with an event date, a
  television chyron, a wall calendar, a clock, a receipt, an expiry date. These
  outrank everything else here, so look for them first.
- **Vehicle registration series and model years.** A plate from a series introduced
  in a known year makes the photo no earlier than that year. So does the newest
  vehicle model visible.
- **Construction state.** Cross-reference against dated historical imagery: if a
  building in the frame is half-built, the imagery timeline brackets the date
  directly, and often more tightly than the sun ever will.

## Step 6 — Corroborate with weather

Weather turns a date band into a date. Get the archive for the nearest reporting
station and compare against what the image shows: cloud cover, precipitation,
standing water, wet or dry road surface, wind direction from flags and smoke,
visibility, whether the ground is frozen.

Sources: Ogimet serves historical METAR and SYNOP observations by station; the
Iowa Environmental Mesonet hosts a large downloadable ASOS/METAR archive; NOAA's
NCEI holds the Integrated Surface Database; Meteostat aggregates station data with
an API; rp5.ru is the practical archive for Russian and post-Soviet stations. For
locations with no nearby station, the ERA5 reanalysis distributed through the
Copernicus Climate Data Store gives modelled hourly conditions on a grid.

Use it as elimination. If your date band contains one clear morning and four wet
ones, and the image shows dry pavement and hard shadows, you have your day. State
the station used and its distance from the scene; a station 60 km away across a
mountain range is not evidence about your street.

## Step 7 — Night imagery

- **Moon phase, and the orientation of the terminator**, give a date band
  independently of the sun. Illuminated fraction narrows the phase; which side is
  lit plus the moon's altitude and azimuth narrows the time. SunCalc's companion
  moon functions and planetarium software both compute this.
- **Star field.** With enough visible stars, planetarium software such as
  Stellarium can be run backwards: set the candidate location and sweep time until
  the pattern, altitudes and azimuths match. This is genuinely decisive when the
  sky is clear and the exposure is long enough, and useless in a city.
- **Artificial-light flicker in video.** Rolling brightness bands from a mains-lit
  scene reflect mains frequency, which is 50 Hz across most of the world and 60 Hz
  in North America, much of Central America and the Caribbean, Taiwan, Korea, Saudi
  Arabia, the Philippines and parts of Brazil and Japan — Japan being split, 50 Hz
  in the east and 60 Hz in the west. That is a *location* clue extracted from a
  temporal artifact. Matching the fine frequency drift against grid records to fix
  an absolute time is a real forensic technique, but the reference recordings are
  not publicly available for most grids, so treat it as out of reach unless you have
  that data.

## Step 8 — Dating a scene rather than a photograph

Sometimes the question is "when did this change happen", not "when was this taken".
Different tooling:

- Google Earth's desktop historical imagery timeline and the Esri World Imagery
  Wayback archive both give you versioned, dated basemaps. Step through them to
  bracket construction, demolition, earthworks or damage.
- Sentinel-2 time series in a Copernicus or Sentinel Hub browser gives a
  ten-metre-resolution optical revisit every few days — coarse for buildings,
  excellent for fire scars, flooding, new roads, reservoir levels and vegetation
  change. Landsat extends the same approach back decades at thirty metres.
- Vegetation indices computed over that time series date leaf-on and leaf-off
  transitions for the specific field or woodland in your frame, which is a much
  better seasonal reference than general regional knowledge.
- NASA FIRMS thermal-anomaly detections carry timestamps and will date a fire,
  flare or large explosion to within hours.
- Street-level imagery capture dates bracket changes at street scale, and the
  Street View time machine gives you several dated passes of the same spot.
- Aircraft or vessels visible in frame can be identified and their historical track
  looked up — see `track-planes-and-ships` — which is an absolute timestamp if you
  can pin the object.

## Reporting

State separately, each with its own grade:

- **Time of day**, as a range in local clock time, and say whether you converted
  from solar time and what offset you applied.
- **Date**, as one or two bands, naming which discriminator you used to drop the
  second band — and if you could not drop it, report both.
- **What you assumed.** Object height, ground flatness, which reference bearing,
  which weather station and how far away. Every one of these is a place a reviewer
  can challenge you, and pre-empting it is what makes the finding hold.

Grade **confirmed** only when sun geometry, an independent seasonal indicator and a
dated external record (weather, imagery timeline, or an object in frame) all agree.
Two of the three is **probable**. Sun geometry alone, with the two-band ambiguity
unresolved, is **unconfirmed** — and still worth reporting, because it excludes
most of the year.

---

## Supporting file: reference/regional-indicators.md

# Regional indicator field guide

Grouped by clue type. Each entry gives the variation you can see and what it
implies. Treat every line as a *narrowing* statement, never a proof — the whole
method depends on stacking independent narrowings.

Two community references are worth keeping open alongside this: geohints.com
catalogues country-by-country physical indicators with photographs, and plonkit.net
maintains detailed per-country guides. Both were built by the competitive
geolocation community and are more exhaustive on visual minutiae than any
intelligence-agency handbook you will find in public.

## Language, script and orthography

Identify the script first, the language second, the country third. Most errors
happen because someone skipped to the third step.

| What you see | Implies |
|---|---|
| Latin with `ș ț ă î â` | Romanian — Romania or Moldova. |
| Latin with `ő ű` | Hungarian. With `ą ę ł ń ś ź ż` — Polish. With `ě š č ř ž ů` — Czech. With `ĺ ľ ŕ ô` — Slovak. |
| Latin with `å ä ö` | Swedish or Finnish. With `å æ ø` — Norwegian or Danish. Finnish shows very long words and doubled vowels. |
| Latin with `ğ ş ı İ` | Turkish or Azerbaijani. The dotless `ı` is the giveaway. |
| Latin with `ẽ ơ ư` and stacked tone marks | Vietnamese. |
| Latin with `ñ` and inverted `¿ ¡` | Spanish. Inverted punctuation is near-diagnostic. |
| Latin with `ã õ ç` | Portuguese. Brazil versus Portugal is decided by other clues, not the script. |
| Cyrillic with `і ї є ґ` | Ukrainian. With `ў і` — Belarusian. With `ђ ћ љ њ џ ј` — Serbian or Macedonian. With `ә ғ қ ң ө ұ ү һ` — Kazakh. |
| Cyrillic plain, no extra letters | Russian, Bulgarian or the Russian-language layer of a multilingual state. Bulgarian uses distinctive lowercase letterforms in signage. |
| Arabic script with `پ چ ژ گ` | Persian, or Urdu/Pashto/Kurdish depending on other letters. Urdu is typically set in the sloping Nastaliq style, which is visually unmistakable. |
| Arabic script, no Persian letters | Arabic. Dialect and country come from vocabulary, government logos and plate formats, not the script. |
| Hebrew | Israel. |
| Devanagari | Hindi, Marathi or Nepali. The horizontal headline connecting letters is the marker. |
| Bengali, Tamil, Telugu, Kannada, Malayalam, Gurmukhi, Gujarati, Odia, Sinhala | Each maps to specific Indian states, or to Bangladesh and Sri Lanka. Multi-script signage is the norm in India and the combination identifies the state. |
| Thai, Lao, Khmer, Burmese | Their respective countries. Lao is visually simpler than Thai; Khmer has tall stacked subscripts; Burmese is dominated by circular forms. |
| Han characters, simplified | Mainland China, Singapore. |
| Han characters, traditional | Taiwan, Hong Kong, Macau. Hong Kong and Macau add Cantonese-specific characters and, in Macau, Portuguese. |
| Han plus kana (hiragana/katakana) | Japan. |
| Hangul | Korea. |
| Georgian, Armenian, Amharic/Ge'ez | Their respective countries. All three are unique scripts with no neighbours. |

Beyond script: check the *conventions*. Which language comes first on bilingual
signage tells you the administrative hierarchy. Metric versus imperial units.
Decimal comma versus decimal point. Date order. Whether currency symbols precede
or follow the amount. Thousands separated by space, comma, or full stop.

## Phone numbers

A phone number on a shop sign or a van is a tier-one clue and people ignore it.

- **Country code**, if written internationally, ends the question. `+7` Russia and
  Kazakhstan; `+380` Ukraine; `+90` Turkey; `+380`-style three-digit codes are
  mostly Europe and the Caribbean; `+2xx` Africa; `+5xx` South America; `+6xx`
  Southeast Asia and Oceania; `+8xx`/`+9xx` East and South Asia.
- **Digit grouping** is a national habit. French numbers group in pairs. German
  numbers separate area code from subscriber with a slash or space and vary in
  length. UK mobiles start `07` and group 5+6. Dutch numbers group 3+4 or 2+7.
  North American numbers are rigidly 3-3-4.
- **Trunk prefix**: a leading `0` is standard across Europe, Asia and Oceania and
  absent in North America. A leading `8` is Russian and Kazakh.
- **Mobile prefixes** narrow further: `06`/`07` France, `07` UK, `09` Japan and
  New Zealand, `08` Indonesia, `01x` Korea, `9xx` India.
- **Emergency numbers** on public signage: `112` across the EU and much of the
  world; `999` UK, Ireland, Hong Kong, Malaysia, Singapore; `911` North America
  and increasingly Latin America; `000` Australia; `110` and `119` Japan; `119`
  and `112` Korea; `102`/`103` in several post-Soviet states.

Feed any number you read to `whose-number-is-this`.

## Licence plates

Read shape, aspect ratio, background colour, text colour, any coloured band, and
character grouping. Plate design changes over decades, so a plate also dates a
vehicle and therefore bounds the photograph.

| Feature | Implies |
|---|---|
| Blue vertical band with a circle of stars and a one-to-three-letter code | EU or EU-aligned. The code is the country. |
| White front and yellow rear | UK, and a few others. Yellow front *and* rear is the Netherlands and Luxembourg. |
| Long narrow plate, white with black, plus a small flag band | Russia, Belarus, Kazakhstan and neighbours. Regional number in the right-hand block. |
| Square or two-line plate | Common in Japan, Korea, much of continental Europe on vehicles without a long front recess, and standard in several Gulf states. |
| White with green characters | Japan, private car. Yellow with black is a kei car; green background with white is commercial. |
| Blue background with white characters | China, conventional private vehicle. Green is a new-energy vehicle; yellow is a truck, bus or learner. |
| White with black, plus a distinct state graphic, wide variety of designs | United States. The variety itself is the clue — no other country tolerates it. |
| Rear plate with a separate coloured validation sticker | North America. |
| Yellow rear with black characters and a country oval | Several African and Middle Eastern states; check the script. |
| White with a blue header strip carrying a country name and Mercosur logo | Argentina, Brazil, Uruguay, Paraguay, Bolivia. |
| White with black for private, yellow with black for commercial, green for electric | India and several South Asian neighbours. |
| Arabic numerals alongside Latin ones | Gulf states, Egypt, and much of North Africa and the Levant. |

Per-country galleries exist online — worldlicenseplates.com is the long-standing
reference — and are worth consulting rather than guessing.

## Driving side and road markings

**Driving side.** Left-hand traffic covers the UK and Ireland, Malta and Cyprus,
most of southern and eastern Africa, South and Southeast Asia including India,
Pakistan, Bangladesh, Sri Lanka, Nepal, Thailand, Malaysia, Singapore, Indonesia,
Hong Kong and Macau, Japan, Australia, New Zealand and most of the Pacific, plus
Guyana, Suriname and the Caribbean's former British territories. Everywhere else
drives on the right.

Read it from the **steering wheel of a parked car**, from which side pedestrians
step off a kerb, from the offset of a bus door, or from the direction diagonal
parking is angled. Reading it from moving traffic on a one-way street is how people
get it wrong. Note the trap: right-hand-drive imported vehicles are common in
several right-hand-traffic countries, notably in the post-Soviet Far East, parts of
Africa and Central Asia, so one car's wheel position is weaker than the road
geometry.

**Centre lines.** Yellow centre lines with white edge and lane lines indicate
North America, Mexico and much of Central America, Japan, South Korea, Norway, and
several South American countries including Brazil and Chile. All-white markings
indicate most of Europe including Sweden and Finland, the UK, Australia, New
Zealand, and much of Asia and Africa. Norway using yellow while Sweden uses white
is one of the classic Scandinavian discriminators.

**Other marking conventions worth reading:**

- Dash length and gap rhythm are standardised nationally and differ visibly.
- Whether edge lines exist at all; whether they are solid, dashed, or absent on
  minor roads.
- Zebra crossing stripe width and whether the crossing is flanked by dashed
  approach lines or by studs.
- Kerb painting: alternating black-and-white kerbstones are characteristic of
  several post-Soviet and Middle Eastern countries; red-and-white indicates a
  parking prohibition in much of Europe; painted kerb colour codes in the US
  indicate parking rules.
- Bus and cycle lane colouring: red asphalt for cycle lanes in the Netherlands and
  Denmark, green in several other countries, blue bus lanes in Japan.
- Stop-line and give-way geometry: a row of triangles ("shark's teeth") for
  give-way is a Vienna Convention convention widely used in Europe and absent in
  North America.

## Utility poles and overhead lines

Poles are the most underused clue in the frame. They are cheap, long-lived,
installed to a national standard, and visible in almost every outdoor photo.

| Feature | Implies |
|---|---|
| Wooden poles, pole-mounted cylindrical transformers, many separate conductors | North America. Cylindrical "can" transformers hung on the pole are a strong North American and Philippine indicator. |
| Concrete poles, prestressed, often with a slight taper and visible casting marks | Eastern Europe, the post-Soviet states, Israel, much of Latin America, South and Southeast Asia. |
| Concrete poles carrying an unusually dense mass of equipment, many small transformers, extensive cabling | Japan. Japanese distribution poles carry more visible hardware than anywhere else. |
| Steel lattice or tubular steel distribution poles | Parts of Western Europe, Israel, and increasingly common as replacements everywhere. |
| Very few overhead wires anywhere | Undergrounded distribution: most of urban Netherlands, Germany, Denmark, the UK, Singapore, and new-build areas globally. Absence of poles is itself a tier-three clue. |
| Insulators as small brown or grey ceramic pin type | Common across Europe and Asia. |
| Insulators as glass, often aqua or clear discs | Historically North American and post-Soviet; glass suspension discs are still widespread in the former USSR. |
| Long polymer insulators, grey ribbed | Modern installation, globally. Dates the line rather than locating it. |
| Crossarm count and geometry — single, double, stacked, none | Nationally conventional. Compare against reference photos for the candidate country. |
| Guy wires and their anchor style; pole numbering plates | Numbering plates carry utility names and asset numbers, which are searchable text. |

Also read: streetlight fixture shape and mounting arm curvature, whether lights are
mounted on the power poles or on separate posts, and lamp colour. High-pressure
sodium's orange, mercury vapour's blue-green and LED's white indicate era as much
as place, and a mixed installation dates a photograph.

## Bollards, guardrails, and roadside furniture

Bollards are nationally standardised, distinctive, and everywhere. The competitive
geolocation community has documented them exhaustively; consult a bollard gallery
rather than trusting memory.

- **Bollard form**: plastic flexible posts, concrete posts, painted steel tubes,
  wooden posts, and their reflector shape, colour and count. The reflector's shape
  and whether it differs left from right is often the discriminator.
- **Chevron and delineator markers** on curves: chevron count, colour, backing
  board shape.
- **Guardrails**: W-beam versus thrie-beam versus cable barrier; post spacing;
  whether the rail is galvanised bright or painted; the specific end-terminal
  design. Concrete step barriers are common in southern Europe and the Middle East.
- **Kilometre and mile posts**: shape, colour and numbering format are national.
  Many carry a road number that is directly searchable.
- **Snow poles and reflective height markers** indicate a snow-clearing regime,
  which narrows latitude and altitude.
- **Fire hydrants**: above-ground pillar hydrants in North America, the UK,
  Australia and Japan, with distinct national shapes and colours; recessed
  underground hydrants marked by a small plate in much of continental Europe.
- **Manhole and utility covers** carry municipality names, utility names and
  standards codes — readable text and therefore tier one when legible.

## Traffic signals

- **Mounting**: suspended over the intersection on a mast arm or span wire is North
  American, Japanese and common in parts of Asia. Mounted on a pole at the kerb
  facing the stop line is the European convention.
- **Orientation**: horizontal signal heads are common in North America, Japan and
  parts of the Netherlands; vertical is the norm across most of Europe.
- **Backboards**: a yellow-outlined black backboard behind the lenses is
  characteristic of several countries; its presence, colour and border differ.
- **Lens count and arrangement**: extra lenses for filter arrows, a separate
  smaller repeater head at driver height, a countdown timer, or a horizontal bar of
  pedestrian lights. Repeater heads low on the pole are a European habit.
- **Pedestrian signals**: the pictogram itself is distinctive — the East German
  Ampelmann, the Dutch and Scandinavian figures, the Japanese, the North American
  hand-and-figure combination, and countdown timers.
- **Signal pole colour and cross-section**, and whether signal heads carry a
  visored hood.

## Road signs

Two families dominate. The Vienna Convention family uses red-bordered triangles
for warnings, red-bordered circles for prohibitions, and blue circles for
mandatory instructions — most of Europe, much of Asia, Africa and South America.
The North American MUTCD family uses yellow diamonds for warnings and white
rectangles for regulation, and is followed in the United States, Canada, Mexico,
Australia and New Zealand in varying degrees.

Then the details:

- **Stop sign text**: the octagon is near-universal but the word differs — the
  local language, sometimes English regardless of language, `ARRÊT` in Quebec. Japan
  uses a red inverted triangle with Japanese text rather than an octagon.
- **Warning triangle proportions and border thickness** differ measurably between
  standards.
- **Motorway sign colour**: green in Italy, Spain and Japan; blue in France,
  Germany, Poland and much of Europe; green in the US for guide signs; and the
  reverse assignments between motorway and non-motorway differ by country in ways
  that are diagnostic.
- **Route number shield shape**: the US interstate shield, the UK's route patches,
  the European E-road green rectangle, the Chinese and Japanese national route
  shields, Australian state shields.
- **Typeface** is a fingerprint. The UK and Ireland use Transport. The US uses
  Highway Gothic, with Clearview on some signage. Germany and much of central
  Europe use DIN 1451. Sweden uses Tratex and Norway Trafikkalfabetet. Italy uses
  Alfabeto Normale and Stretto. France, the Netherlands, Switzerland, Spain,
  Portugal and Denmark each have their own official alphabet. Learning to recognise
  three or four of these gives you a country from a single blurred sign.
- **Sign post construction**: single round post, twin square posts, U-channel,
  and whether posts are galvanised or painted.

## Satellite dishes

An underused, quantitative clue. A dish points at a geostationary satellite, so:

- **Elevation angle** above the horizon depends on the observer's latitude and the
  longitude difference to the satellite. Near the equator, dishes point nearly
  straight up; at high latitudes they point low toward the equator. A dish at 20°
  elevation puts you a long way from the tropics; one at 70° puts you close to
  them.
- **Azimuth** (which way they face) plus elevation identifies the orbital slot,
  and orbital slots serve specific regions and specific broadcasters. If every dish
  in a street points southeast at a moderate elevation, that is a constraint you
  can solve.
- **Hemisphere** falls out immediately: dishes point generally south in the
  northern hemisphere and generally north in the southern.
- **Dish density, size and colour**, and whether they are wall- or roof-mounted,
  also carry regional signal.

## Buildings, roofs and utilities

| Feature | Implies |
|---|---|
| Terracotta pantiles or barrel tiles, low pitch | Mediterranean basin, Latin America, Middle East. |
| Slate or dark tile, steep pitch | Northwestern Europe. Steepness tracks snow and rain load. |
| Asphalt shingle | North America overwhelmingly. |
| Corrugated metal sheeting | Sub-Saharan Africa, South and Southeast Asia, Latin America, rural Australia and New Zealand, and informal settlements globally. |
| Flat concrete roofs with parapets | Middle East, North Africa, South Asia, Latin America. |
| Black plastic water tanks on roofs | Middle East, Israel, Egypt, and widely in South Asia and Latin America where supply is intermittent. Tank colour and shape vary by market. |
| Solar water heaters — a panel with a horizontal cylinder above it | Israel, Cyprus, Greece, Turkey, China, and increasingly widely. In Israel they are effectively universal on older buildings. |
| Split-system air-conditioner outdoor units, densely wall-mounted | Hot climates; the mounting convention and bracket style differ regionally. |
| Rolling shutters on every window | Southern and central Europe, notably Italy, Spain, France, Germany, Israel. |
| Window shutters as hinged wooden or metal leaves | Mediterranean, central Europe. |
| Enclosed glazed balconies | Post-Soviet states, Turkey, Nordic countries, Israel. Balcony glazing style is a strong post-Soviet indicator. |
| Prefabricated concrete panel apartment blocks with visible panel seams | Post-Soviet states and central Europe, plus East Asian public housing. |
| Chimney form and count; whether roofs have chimneys at all | Heating regime, therefore climate. |
| Fenced front gardens versus open lawns | Cultural, and strongly regional in Europe versus North America. |
| Electrical socket type, if any interior is visible | Type A/B North America, Japan, parts of Latin America; Type G UK, Ireland, Malaysia, Singapore, Hong Kong, Gulf states; Type F Schuko across much of Europe; Type C widely; Type I Australia, New Zealand, China, Argentina; Type L Italy; Type J Switzerland; Type K Denmark; Type M southern Africa; Type N Brazil and South Africa. |

Sports pitches are a fast cultural pin: cricket, baseball, basketball, hurling,
Australian rules, ice hockey rinks, and football pitch dimensions and goal styles
each concentrate in identifiable regions.

## Vegetation, biome and terrain

Use this to corroborate a hypothesis, not to form one — the global horticultural
trade has put most ornamental species on most continents.

- **Boreal**: birch, spruce, pine, understory of low shrubs; long shadows even at
  midday in winter. Scandinavia, Russia, Canada, Alaska.
- **Temperate deciduous**: oak, beech, maple, ash; the leaf-off state is itself a
  season clue. Europe, eastern North America, East Asia.
- **Mediterranean**: olive, cypress, holm oak, maquis scrub, dry summer grass.
  Mediterranean basin, coastal California, central Chile, the Cape, southern
  Australia — a five-way ambiguity that only other clues resolve.
- **Arid and semi-arid**: acacia, agave and cactus in the Americas only as
  natives, date palms, sparse tussock.
- **Tropical**: broad-leaved evergreens, banana, rubber, oil palm plantation rows,
  paddy terracing.
- **Savanna**: flat-crowned acacia, baobab, tall grass, dry-season burn scars.
- **Diagnostic natives worth knowing**: cactus is native only to the Americas;
  eucalyptus is native to Australasia but planted worldwide; baobab points to
  Africa, Madagascar or northwestern Australia; Norfolk pines and Araucaria are
  distinctive; birch does not grow in the tropics.
- **Agriculture**: field shape and size, terracing, greenhouse density, vine
  training method, irrigation type — centre-pivot circles, flood channels, drip
  lines — and crop identity are all regional.

**Terrain.** Once you have a candidate region, horizon matching becomes the
strongest available confirmation. Generate a synthetic panorama from an elevation
model for a candidate coordinate and bearing and compare ridgeline shape, notch
positions and relative peak spacing against the photograph. A ridgeline is
effectively a barcode: it is unique to a viewpoint, it does not change, and it
cannot be faked by an editor without effort. Elevation data for this comes from
public global models such as SRTM and the Copernicus DEM.

---

## Supporting file: ETHICS.md

# Ethics, Legality & Authorized Scope

OSINT is powerful. These skills are built for **lawful, authorized, defensive
work**: threat intelligence, fraud investigation, due diligence, journalism,
missing-persons research, penetration-test reconnaissance, and personal digital
self-defense.

Every workflow skill opens with an **authorized scope** gate. Honor it.

## The rules

1. **Passive by default.** Prefer observation over interaction. Never log in to,
   probe, exploit, or send traffic to a target's private systems without written
   authorization. Reading a public profile is OSINT; brute-forcing a login is a
   crime.
2. **Stay legal in your jurisdiction.** Computer-misuse, wiretap, stalking,
   harassment, and data-protection laws (GDPR, CCPA, etc.) all apply to
   research. When unsure, stop and get counsel.
3. **No harassment, doxxing, or stalking.** Do not use these skills to locate,
   intimidate, or expose private individuals for harm. Aggregating someone's
   personal data to threaten them is abuse, full stop.
4. **Minimize and protect data.** Collect only what the objective requires.
   Store case data encrypted, share on need-to-know, and delete when done.
5. **Corroborate before you conclude.** A single selector match is a lead, not a
   fact. Attribution requires multiple independent, corroborating sources.
6. **Respect terms of service and rate limits.** Automated scraping can be
   illegal or get you banned. Use official APIs where they exist.

## Not for

Stalking, harassment, doxxing, unauthorized access, or any activity prohibited
by law. If your objective is to harm a person, these skills are not for you.

By using this repository you accept full responsibility for how you apply it.
The authors provide it "as is" with no warranty (see [LICENSE](LICENSE)).
