Geotag.World: Reading, Editing and Stripping Photo Location Data
Overview
Every photo can carry GPS and EXIF data that shows where it was taken. People share photos without knowing it is there.
The Challenge
Geotag.World is a CodesSavvy product, not a client engagement. It reads a photo's GPS and EXIF data, shows the place on a map, and lets you edit or strip the data. The tools that find the location, view EXIF, check privacy, remove GPS, strip EXIF and strip C2PA (AI content credentials) are free. Adding or editing GPS costs credits. The hard part was not the first version. It was keeping a multi-language, paid, browser-heavy product correct as it grew.
Our Solution
The first commit was on 22 Sep 2025. Supabase credits arrived in Feb 2026. Atomic deduction and tighter row-level security followed on 1 May 2026, and a MapLibre map on 14 May. Payments moved from Lemon Squeezy to Polar in May 2026. HEIC support followed in Jul 2026, decoded in the browser with libheif (heic2any, with heic-to on WebAssembly as the fallback). The hero A/B test ran from 18 Jul to 11 Aug 2026. Five languages (English, Spanish, French, Indonesian, Chinese) came on 20 Jul, then bulk mode on 27 Jul. Five problems shaped the build. (1) A language regression: the blog data had no locale field, so 37 English posts were served under four other language paths, with about 89% of the English body text appearing word for word on the Spanish page (measured on the Spanish blog pages in the 5 Sep 2026 audit). A Search Console URL audit of 245 sitemap URLs found 125 of 196 non-English URLs never crawled. We made the blog English-only, added noindex on the other locales, removed them from their sitemaps, moved hreflang into the head, added a crawlable footer language row, cut the sitemap from 245 to 93 URLs (the count at the time of the fix on 5 Sep 2026) and added end-to-end guards. Fixed on 5 Sep 2026. (2) C2PA credentials live in the JPEG APP11 segment, and the EXIF library only removed APP1. We wrote a byte-level JPEG segment stripper that drops APP1, APP11 and APP13 without re-encoding, and fixed the gap in two code paths. (3) A paid export could charge without delivering a file. We reworked it to deliver first, then charge, and added an end-to-end suite that runs against real Supabase accounts. (4) Firefox and Safari lost the photo after checkout. Photos are now stored as raw bytes, not Blobs, in IndexedDB, and we added Firefox and WebKit Playwright projects, plus a test that checks the stored bytes, because the first regression test passed on the broken build. (5) We do not redirect by browser language, because automatic redirects by browser language are discouraged in Google's guidance on localized versions. A suggestion banner is used instead.
Results
All Search Console and Google Analytics figures exclude Pakistan-origin traffic (the founders' own testing)
Search Console clicks per month in 2026: Mar 60, Apr 405, May 652, Jun 1,250, Jul 1,569, Aug 1,990 (measured, Google Search Console, sc-domain:geotag.world, pulled 24 Sep 2026)
Search Console impressions per month in 2026: Mar 6,183, Apr 28,589, May 41,021, Jun 44,662, Jul 47,759, Aug 66,116 (same source and date)
Last 28 days, 25 Aug to 21 Sep 2026: 2,841 clicks, 82,012 impressions, average position 8.6 (measured, Search Console)
Several 'remove geotag' and 'remove gps from photo' queries rank at positions 1.7 to 3.0 (measured, Search Console, same range)
Organic search is 64% of sessions over the last 28 days (measured, GA4, pulled 24 Sep 2026)
Untranslated blog pages: 47 of 57 indexed, 12 clicks from 1 Jul to 2 Sep 2026, 0.7% CTR. Translated pages: 14 of 14 indexed, 124 clicks, 13.2% CTR (measured, Search Console, before the 5 Sep 2026 fix). The comparison figures come from a Search Console audit pulled on 5 Sep 2026 and are not filtered by country
On 24 Sep 2026 the live site has 7 tool pages, 37 blog posts, 5 languages and 98 sitemap URLs (the live sitemap count on 24 Sep 2026; the 245 to 93 change above was the count at the time of the fix on 5 Sep 2026). The blog and legal pages are English-only
108 unit tests (Vitest), 139 Playwright tests including Firefox and WebKit projects, and a build gate that fails on missing translation keys (test counts as of 24 Sep 2026)
Tech Stack
Related Services
More Case Studies
Pokepal
Product Startup, United States · 6 weeks
Supports English and Japanese card scanning
Read case studyHealth content / i18nDyadfit
CodesSavvy product · Built in about 2 weeks
Status: pre-launch. The app is not built yet. There are no traction results, so it is too early to measure results
Read case studyWeb3 / FinTechNftcomplete
Product Startup, United States · 8 weeks
Aggregates OpenSea, Magic Eden, Rarible, Reservoir & Alchemy into one live view
Read case studyHealth & FitnessEfn
Fitness Startup, France · Ongoing (from March 2026)
Live on App Store and Google Play
Read case studyLocation Tech / AIDripmap
Startup Founder, United States · 5 weeks
MVP live in 5 weeks from signed scope
Read case studyProductivity / MobileNotepd
Product Founder, United States · 8 weeks
Installs natively on iOS and Android home screens straight from the browser
Read case studyDating & MatchmakingMatchportalen
Matchmaking Agency, Norway · 10 weeks
Retired a spreadsheet-and-email process, live in the agency's daily operations
Read case studyAI / ProductivityProposalgenie
SaaS Startup, US · 6 weeks
Live SaaS product at proposalgenie.ai, shipped production-ready
Read case studyFood & Beverage / HospitalityCulineer
Restaurant Tech Startup, UAE · 8 weeks
Multi-tenant platform with QR menus and real-time order flow, shipped in 8 weeks
Read case studyAI / Document IntelligenceAir-gapped-rag-platform
Confidential — under NDA · 18 days
Runs fully air-gapped on a local model — zero outbound calls, proven end-to-end
Read case studyAI / Field ServicesAi-inspection-pipeline
Confidential — under NDA · Ongoing
Live in production on both the iOS App Store and Google Play
Read case studyDevOps / ObservabilityProduction-debug-no-access
Confidential — under NDA · Fixed scope
Live production fault diagnosed and fixed without hosting or dashboard access
Read case studyHave a similar project?
Let's talk about how we can build something like this for you. Free 30-minute consultation, no obligations.