Geolocate from pixels
Quick answer
- 01What is it?
- Geolocate and chronolocate a photo or video from visual evidence alone, plate and phone number formats, road markings, utility poles, bollards, signage typefaces, architecture and vegetation for place; shadow direction and length with SunCalc for time and date. It stands out by giving search and SEO workflows a defined shape, so the agent asks for better context and returns a more usable result.
- 02Inputs
- Context for search and SEO workflows: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result for search and SEO workflows: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add useosint/skills --skill geolocate-from-pixelsSkill instructions
The instruction file for this skill. The skill also includes other files you need to install to use it.
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.
Method
- 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-imageto read underexposed or small detail. - 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.
- 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.
- 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.
- 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;
);
- 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.
- Chronolocate. Sun position for time of day and date band, season from vegetation, weather archives for corroboration. Procedure in reference/chronolocation.md.
- 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.
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.
- Locate the scene first, then open the satellite view of that exact spot with north up.
- 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.
- 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.
- 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
Lbadly 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.
+7Russia and Kazakhstan;+380Ukraine;+90Turkey;+380-style three-digit codes are mostly Europe and the Caribbean;+2xxAfrica;+5xxSouth America;+6xxSoutheast Asia and Oceania;+8xx/+9xxEast 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
07and group 5+6. Dutch numbers group 3+4 or 2+7. North American numbers are rigidly 3-3-4. - Trunk prefix: a leading
0is standard across Europe, Asia and Oceania and absent in North America. A leading8is Russian and Kazakh. - Mobile prefixes narrow further:
06/07France,07UK,09Japan and New Zealand,08Indonesia,01xKorea,9xxIndia. - Emergency numbers on public signage:
112across the EU and much of the world;999UK, Ireland, Hong Kong, Malaysia, Singapore;911North America and increasingly Latin America;000Australia;110and119Japan;119and112Korea;102/103in 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ÊTin 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
- 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.
- 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.
- 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.
- Minimize and protect data. Collect only what the objective requires. Store case data encrypted, share on need-to-know, and delete when done.
- Corroborate before you conclude. A single selector match is a lead, not a fact. Attribution requires multiple independent, corroborating sources.
- 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).
Common questions
How do I install Geolocate from pixels in Cursor, Claude Code, or Codex?
Run npx skills add useosint/skills --skill geolocate-from-pixels in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Geolocate from pixels, not every skill in the repository.
Where does Geolocate from pixels come from and what license is it under?
Geolocate from pixels comes from the useosint/skills repository on GitHub. That repository has 22 GitHub stars. The skill is published under the MIT license.
Prefer plain text? Read the Geolocate from pixels guide as markdown.
Related skills
More from useosint