<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: geoguessing</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/geoguessing.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-04-28T15:07:22+00:00</updated><author><name>Simon Willison</name></author><entry><title>o3 Beats a Master-Level Geoguessr Player—Even with Fake EXIF Data</title><link href="https://simonwillison.net/2025/Apr/28/o3-geoguessr/#atom-tag" rel="alternate"/><published>2025-04-28T15:07:22+00:00</published><updated>2025-04-28T15:07:22+00:00</updated><id>https://simonwillison.net/2025/Apr/28/o3-geoguessr/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://sampatt.com/blog/2025-04-28-can-o3-beat-a-geoguessr-master"&gt;o3 Beats a Master-Level Geoguessr Player—Even with Fake EXIF Data&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Patterson (&lt;a href="https://simonwillison.net/2025/Apr/26/geoguessr/"&gt;previously&lt;/a&gt;) puts his GeoGuessr ELO of 1188 (just short of the top champions division) to good use, exploring o3's ability to guess the location from a photo in a much more thorough way than &lt;a href="https://simonwillison.net/2025/Apr/26/o3-photo-locations/"&gt;my own experiment&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Over five rounds o3 narrowly beat him, guessing better than Sam in only 2/5 but with a higher score due to closer guesses in the ones that o3 won.&lt;/p&gt;
&lt;p&gt;Even more interestingly, Sam experimented with feeding images with fake EXIF GPS locations to see if o3 (when reminded to use Python to read those tags) would fall for the trick. It spotted the ruse:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Those coordinates put you in suburban Bangkok, Thailand—obviously nowhere near the Andean coffee-zone scene in the photo. So either the file is a re-encoded Street View frame with spoofed/default metadata, or the camera that captured the screenshot had stale GPS information.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vision-llms"&gt;vision-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/o3"&gt;o3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoguessing"&gt;geoguessing&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="vision-llms"/><category term="o3"/><category term="geoguessing"/></entry><entry><title>Quoting Eliot Higgins</title><link href="https://simonwillison.net/2025/Apr/26/elliot-higgins/#atom-tag" rel="alternate"/><published>2025-04-26T20:40:19+00:00</published><updated>2025-04-26T20:40:19+00:00</updated><id>https://simonwillison.net/2025/Apr/26/elliot-higgins/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://bsky.app/profile/eliothiggins.bsky.social/post/3lnqjfcczsk2d"&gt;&lt;p&gt;We've been seeing if the latest versions of LLMs are any better at geolocating and chronolocating images, and they've improved dramatically since we last tested them in 2023. [...]&lt;/p&gt;
&lt;p&gt;Before anyone worries about it taking our job, I see it more as the difference between a hand whisk and an electric whisk, just the same job done quicker, and either way you've got to check if your peaks are stiff at the end of it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://bsky.app/profile/eliothiggins.bsky.social/post/3lnqjfcczsk2d"&gt;Eliot Higgins&lt;/a&gt;, Bellingcat&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/data-journalism"&gt;data-journalism&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bellingcat"&gt;bellingcat&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vision-llms"&gt;vision-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoguessing"&gt;geoguessing&lt;/a&gt;&lt;/p&gt;



</summary><category term="data-journalism"/><category term="ai"/><category term="bellingcat"/><category term="generative-ai"/><category term="llms"/><category term="vision-llms"/><category term="ai-ethics"/><category term="geoguessing"/></entry><entry><title>The GeoGuessr StreetView meta-game</title><link href="https://simonwillison.net/2025/Apr/26/geoguessr/#atom-tag" rel="alternate"/><published>2025-04-26T16:56:59+00:00</published><updated>2025-04-26T16:56:59+00:00</updated><id>https://simonwillison.net/2025/Apr/26/geoguessr/#atom-tag</id><summary type="html">
    &lt;p&gt;My post on &lt;a href="https://simonwillison.net/2025/Apr/26/o3-photo-locations/"&gt;o3 guessing locations from photos&lt;/a&gt; made it &lt;a href="https://news.ycombinator.com/item?id=43803243"&gt;to Hacker News&lt;/a&gt; and by far the most interesting comments are from SamPatt, a self-described competitive &lt;a href="https://www.geoguessr.com/"&gt;GeoGuessr&lt;/a&gt; player.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://news.ycombinator.com/item?id=43803243#43804551"&gt;a thread&lt;/a&gt; about meta-knowledge of the StreetView card uses in different regions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The photography matters a great deal - they're categorized into "Generations" of coverage. Gen 2 is low resolution, Gen 3 is pretty good but has a distinct car blur, Gen 4 is highest quality. Each country tends to have only one or two categories of coverage, and some are so distinct you can immediately know a location based solely on that (India is the best example here). [...]&lt;/p&gt;
&lt;p&gt;Nigeria and Tunisia have follow cars. Senegal, Montenegro and Albania have large rifts in the sky where the panorama stitching software did a poor job. Some parts of Russia had recent forest fires and are very smokey. One road in Turkey is in absurdly thick fog. The list is endless, which is why it's so fun!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sam also has &lt;a href="https://news.ycombinator.com/item?id=43803243#43804197"&gt;his own custom Obsidian flashcard deck&lt;/a&gt; "with hundreds of entries to help me remember road lines, power poles, bollards, architecture, license plates, etc".&lt;/p&gt;
&lt;p&gt;I &lt;a href="https://news.ycombinator.com/item?id=43805123"&gt;asked Sam&lt;/a&gt; how closely the GeoGuessr community track updates to street view imagery, and unsurprisingly those are a &lt;em&gt;big&lt;/em&gt; deal. Sam pointed me to &lt;a href="https://www.youtube.com/watch?v=XLETln6ZatE"&gt;this 10 minute video review&lt;/a&gt; by zi8gzag of the latest big update from three weeks ago:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is one of the biggest updates in years in my opinion. It could be the biggest update since the 2022 update that gave Gen 4 to Nigeria, Senegal, and Rwanda. It's definitely on the same level as the Kazakhstan update or the Germany update in my opinion.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/geospatial"&gt;geospatial&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hacker-news"&gt;hacker-news&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/streetview"&gt;streetview&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoguessing"&gt;geoguessing&lt;/a&gt;&lt;/p&gt;



</summary><category term="geospatial"/><category term="hacker-news"/><category term="streetview"/><category term="geoguessing"/></entry><entry><title>Watching o3 guess a photo's location is surreal, dystopian and wildly entertaining</title><link href="https://simonwillison.net/2025/Apr/26/o3-photo-locations/#atom-tag" rel="alternate"/><published>2025-04-26T12:59:10+00:00</published><updated>2025-04-26T12:59:10+00:00</updated><id>https://simonwillison.net/2025/Apr/26/o3-photo-locations/#atom-tag</id><summary type="html">
    &lt;p&gt;Watching OpenAI's new o3 model guess where a photo was taken is one of those moments where decades of science fiction suddenly come to life. It's a cross between the &lt;a href="https://tvtropes.org/pmwiki/pmwiki.php/Main/EnhanceButton"&gt;Enhance Button&lt;/a&gt; and &lt;a href="https://tvtropes.org/pmwiki/pmwiki.php/Main/OmniscientDatabase"&gt;Omniscient Database&lt;/a&gt; TV Tropes.&lt;/p&gt;
&lt;p&gt;The process is simple. Snap a photograph of somewhere, ideally without putting any obvious landmarks in there. Feed it to &lt;a href="https://www.chatgpt.com/"&gt;ChatGPT&lt;/a&gt; o3 or o4-mini (currently only available on the $20/month Plus plan) and prompt "Guess where this photo was taken". Let it churn.&lt;/p&gt;
&lt;p&gt;(I found I needed to turn off all of ChatGPT's memory features first or it would cheat and use context from my previous conversations.)&lt;/p&gt;
&lt;p&gt;I gave it this photo, taken while sat at an outside bar near my home in El Granada, California. I think it's a pretty solid challenge: not many identifying features, just a bit of road, an anonymous house and some hills in the background:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2025/guess-location.jpg" alt="Residential scene with a cream-colored house with gray roof, white picket fence, and two white vehicles parked nearby. In the foreground is a glass-enclosed fire table and orange flowers. Background shows hills under an overcast sky with power lines crossing above. A person in red stands between vehicles near a yellow directional sign." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;... and off it went.&lt;/p&gt;
&lt;p&gt;I've shared &lt;a href="https://chatgpt.com/share/680c6160-a0c4-8006-a4de-cb8aff785f46"&gt;the full transcript here&lt;/a&gt; - be sure to expand the "Thought for 6m 48s" link to see the full details of how it attacked the problem.&lt;/p&gt;
&lt;p&gt;It starts with a very weird mistake: it briefly pretends that it can't see the image at all:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The user uploaded an image and is asking me to guess the location. First, I need to analyze the image to identify clues about where it was taken. Since I can't actually see images, I’ll rely on the metadata. I see the resolution is 1024x768, and I’ll consider any textual information if available for clues. Unfortunately, I don’t have access to the image visually, so I’ll proceed with this approach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then it snaps out of that and starts using its vision abilities:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The image shows a residential neighborhood with small houses, one of which is light green with a white picket fence and a grey roof. The fire pit and signposts hint at a restaurant or cafe, possibly near the coast. The environment, with olive trees and California poppies, suggests a coastal California location, perhaps Central Coast like Cambria or Morro Bay. The pastel-colored houses and the hills in the background resemble areas like Big Sur. A license plate could offer more, but it's hard to read.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now here's where it leaps straight into science fiction:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Alright, I’m going to zoom into the license plate to try to confirm the state, as it could help identify the location more precisely. The plate might give me clues about where this photo was taken, especially if it's from a recognizable state. Let’s see if that's visible enough to be useful!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It runs some Python code!&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;# crop license plate area&lt;/span&gt;
&lt;span class="pl-s1"&gt;w&lt;/span&gt;, &lt;span class="pl-s1"&gt;h&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;img&lt;/span&gt;.&lt;span class="pl-c1"&gt;size&lt;/span&gt;
&lt;span class="pl-c"&gt;# approximate area: roughly center x maybe 1700? Actually width is likely &amp;gt; 3024? Let's print size&lt;/span&gt;
&lt;span class="pl-en"&gt;print&lt;/span&gt;(&lt;span class="pl-s1"&gt;img&lt;/span&gt;.&lt;span class="pl-c1"&gt;size&lt;/span&gt;)

(&lt;span class="pl-c1"&gt;3456&lt;/span&gt;, &lt;span class="pl-c1"&gt;4608&lt;/span&gt;)&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Frustratingly the shared conversation doesn't include most of the other Python it used (the sharing feature is still quite buggy). Here's a screenshot of what happened next:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2025/zoom-crop.jpg" alt="| want to crop a small bounding box around the license plate. The car behind the picket fence is likely near the center, so I'll focus on that area. I'll define the region with approximate coordinates: x 1500 to 2000 and y 2500 to 3000. By selecting this region, I can better evaluate the plate and see if it's clearer to identify. Let's manually crop and inspect it. Then it says Analyzing Data, and runs Python code: crop = img.crop( (1300, 2400, 2200, 3200)); plt.imshow (crop); plt.axis( off&amp;quot;); Output is (-0.5, 899.5, 799.5, -0.5). It shows the cropped photo and says: The license plate appears to follow the standard California design — white background with red characters. To be sure, I'll zoom in on the area around the plate to check for more details and confirm the state. This could give me a stronger clue as to where the photo was taken. Let's see if it's clearer now!" style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;It kept running like this for &lt;em&gt;six more minutes&lt;/em&gt; - cropping and zooming to an area of the photo, musing about what it could see, comparing it to previous observations and then cropping and zooming and analyzing again.&lt;/p&gt;
&lt;p&gt;To cut straight to the end, here's the final answer it came up with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m getting strong Central-Coast-California vibes from this scene:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Clue&lt;/th&gt;
&lt;th&gt;What it suggests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;California-style license plate on the SUV&lt;/td&gt;
&lt;td&gt;We’re almost certainly in CA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Masses of blooming California poppies, an olive tree, and a cool, marine-layer sky&lt;/td&gt;
&lt;td&gt;Typical coastal‐central-CA vegetation and weather&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low pastel beach cottages with white picket fences and a rope-and-post patio rail&lt;/td&gt;
&lt;td&gt;Common architecture in the little beach towns between Santa Cruz and Pismo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rolling green coastal range right behind town (no tall peaks, no snow)&lt;/td&gt;
&lt;td&gt;Fits the Santa Lucia / Santa Cruz coastal hills&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Put together, that points to one of the small Highway 1 villages. The mix of cottages and the immediate backdrop of hills feels most like &lt;strong&gt;Cambria, California&lt;/strong&gt; (just north of Morro Bay and Cayucos). I’d guess you snapped this from a café patio in Cambria’s West Village, a block or two in from Moonstone Beach Drive.&lt;/p&gt;
&lt;p&gt;(If I’m off, my next guess would be Half Moon Bay–El Granada further north—but Cambria is my first instinct!)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;How did it do? Central Coast California was exactly right. Cambria, California was about 200 miles off... but the "my next guess" was spot on! The photo was indeed taken in El Granada, a tiny town just north of Half Moon Bay.&lt;/p&gt;
&lt;p&gt;I'm confident it didn't cheat and look at the EXIF data on the photograph, because if it had cheated it wouldn't have guessed Cambria first. If you're still suspicious, try stripping EXIF by taking a screenshot and run an experiment yourself - I've tried this and it still works the same way. &lt;strong&gt;Update:&lt;/strong&gt; vessenes on Hacker News &lt;a href="https://news.ycombinator.com/item?id=43732506#43732866"&gt;reported&lt;/a&gt; an instance where it did use the &lt;a href="https://pillow.readthedocs.io/en/stable/reference/ExifTags.html"&gt;ExifTags&lt;/a&gt; package and lie about it, but it was at least visible &lt;a href="https://chatgpt.com/share/6802e229-c6a0-800f-898a-44171a0c7de4"&gt;in the thinking trace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;o3 certainly isn't the only model that can do this: I've tried similar things with Claude 3.5 and 3.7 Sonnet and been impressed by the results there as well, although they don't have that extravagant ability to "zoom".&lt;/p&gt;

&lt;p&gt;How much does the zooming actually help? My suspicion is that the model's vision input operates at quite a low resolution, so cropping closer to a license plate does have a meaningful impact on the process. I'm not sure it justifies 25 separate cropping operations for one photo though, that feels a little performative to me.&lt;/p&gt;

&lt;p&gt;Here's &lt;a href="https://claude.ai/share/231756c9-6fe6-4f63-9f34-c6c7e1299a44"&gt;Claude 3.7 Sonnet "extended thinking"&lt;/a&gt; guessing "a small to mid-sized California coastal town". I tried &lt;a href="https://gemini.google.com/"&gt;Gemini&lt;/a&gt; but it cheated and said "Given that my current location context is El Granada, California..." - so I tried Gemini 2.5 Pro via their API &lt;a href="https://gist.github.com/simonw/6a5a9407326d8366105f95e5524f3694"&gt;and got&lt;/a&gt; a confidently incorrect guess of "the patio of The Hidden Kitchen restaurant in Cayucos, California".&lt;/p&gt;

&lt;p&gt;What's different here with o3, &lt;a href="https://simonwillison.net/2025/Apr/21/ai-assisted-search/#o3-and-o4-mini-are-really-good-at-search"&gt;as with search&lt;/a&gt;, is that the tool usage is integrated into the "thinking" phase of the response.&lt;/p&gt;

&lt;p&gt;Tools that can be used as part of that dedicated chain-of-thought sequence are an astonishingly powerful new pattern for these models. I expect we'll see this from other vendors soon.&lt;/p&gt;

&lt;h4 id="what-to-make-of-this-"&gt;What to make of this?&lt;/h4&gt;
&lt;p&gt;First, this is &lt;strong&gt;really fun&lt;/strong&gt;. Watching the model's thought process as it churns through the photo, pans and zooms and discusses different theories about where it could be is &lt;em&gt;wildly entertaining&lt;/em&gt;. It's like living in an episode of CSI.&lt;/p&gt;
&lt;p&gt;It's also &lt;strong&gt;deeply dystopian&lt;/strong&gt;. Technology can identify locations from photographs now. It's vitally important that people understand how easy this is - if you have any reason at all to be concerned about your safety, you need to know that any photo you share - even a photo as bland as my example above - could be used to identify your location.&lt;/p&gt;
&lt;p&gt;As is frequently the case with modern AI, the fact that this technology is openly available to almost anyone has negative and positive implications. As with image generation, it's important that people can see what this stuff can do first hand. Seeing this in action is a visceral lesson in what's now possible.&lt;/p&gt;

&lt;h4 id="update-o3-does-have-rough-location-access"&gt;Update: o3 does have rough location access&lt;/h4&gt;
&lt;p&gt;I'm embarrassed that I didn't think to check this, but it turns out o3 does have &lt;a href="https://chatgpt.com/share/680ceb49-a184-8006-9979-d73169325297"&gt;a loose model of your location made available to it now&lt;/a&gt; - presumably as part of its improved search feature. It knows I'm in Half Moon Bay.&lt;/p&gt;
&lt;p&gt;The location guessing trick still works independently of that though. I tried it on photos
I'd taken thousands of miles from my location (EXIF stripped via screenshotting) - one in rural Madagascar (&lt;a href="https://static.simonwillison.net/static/2025/madagascar.jpg"&gt;photo&lt;/a&gt;, &lt;a href="https://chatgpt.com/share/680cec52-e0d4-8006-bf80-952888b018fd"&gt;transcript&lt;/a&gt;), one in urban Buenos Aires (&lt;a href="https://static.simonwillison.net/static/2025/buenos-aires.jpg"&gt;photo&lt;/a&gt;, &lt;a href="https://chatgpt.com/share/680cec1c-f0c4-8006-86c3-7dc70104bd3f"&gt;transcript&lt;/a&gt;), and it gave convincing answers for both.&lt;/p&gt;

&lt;p&gt;I've also seen examples from numerous other people replicating these results for their own diverse collections of photos.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vision-llms"&gt;vision-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/o3"&gt;o3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoguessing"&gt;geoguessing&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="vision-llms"/><category term="o3"/><category term="ai-ethics"/><category term="geoguessing"/></entry></feed>