Privacy tools / Consumer web

Geotag.World: Reading, Editing and Stripping Photo Location Data

CodesSavvy productPrivacy tools / Consumer webLive since Oct 2025

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

Next.js 15React 18TypeScriptTailwindnext-intlexifrheic2any with heic-to fallbackMapLibre + OpenFreeMapGeoapifySupabasePolarResendVercel

Related Services

More Case Studies

AI / Consumer

Pokepal

Product Startup, United States · 6 weeks

Supports English and Japanese card scanning

Read case study
Health content / i18n

Dyadfit

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 study
Web3 / FinTech

Nftcomplete

Product Startup, United States · 8 weeks

Aggregates OpenSea, Magic Eden, Rarible, Reservoir & Alchemy into one live view

Read case study
Health & Fitness

Efn

Fitness Startup, France · Ongoing (from March 2026)

Live on App Store and Google Play

Read case study
Location Tech / AI

Dripmap

Startup Founder, United States · 5 weeks

MVP live in 5 weeks from signed scope

Read case study
Productivity / Mobile

Notepd

Product Founder, United States · 8 weeks

Installs natively on iOS and Android home screens straight from the browser

Read case study
Dating & Matchmaking

Matchportalen

Matchmaking Agency, Norway · 10 weeks

Retired a spreadsheet-and-email process, live in the agency's daily operations

Read case study
AI / Productivity

Proposalgenie

SaaS Startup, US · 6 weeks

Live SaaS product at proposalgenie.ai, shipped production-ready

Read case study
Food & Beverage / Hospitality

Culineer

Restaurant Tech Startup, UAE · 8 weeks

Multi-tenant platform with QR menus and real-time order flow, shipped in 8 weeks

Read case study
AI / Document Intelligence

Air-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 study
AI / Field Services

Ai-inspection-pipeline

Confidential — under NDA · Ongoing

Live in production on both the iOS App Store and Google Play

Read case study
DevOps / Observability

Production-debug-no-access

Confidential — under NDA · Fixed scope

Live production fault diagnosed and fixed without hosting or dashboard access

Read case study
Free · no obligation

Have a similar project?

Let's talk about how we can build something like this for you. Free 30-minute consultation, no obligations.