Protect your privacy from AI-powered GeoGuessr tools.
GeoMask lets you upload photos intended for social media, then automatically replaces the identifiable background view (e.g., your window's scenery) with a decoy — a different city, a Swiss mountain village, or a custom scene of your choice.
- 🌐 Replace window views with AI-generated decoy locations
- 🏙️ Choose from presets: cityscapes, nature, mountains, seaside, etc.
- 🔒 Prevent AI-based geolocation or doxxing
- 🖼️ High-resolution output ready for social media
- 🧠 Powered by local or cloud-based AI image generation
- Backend: Python (FastAPI), OpenAI API, OpenCV, PIL
- Frontend: React, Styled Components, Framer Motion
- AI: OpenAI DALL-E, Stable Diffusion (optional)
- Deployment: Docker, Docker Compose
- Testing: Pytest, React Testing Library
git clone https://github.com/makalin/GeoMask.git
cd GeoMask
chmod +x scripts/start.sh
./scripts/start.sh# Backend
pip install -r requirements.txt
cp env.example .env
# Edit .env with your OpenAI API key
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
# Frontend (in another terminal)
cd frontend
npm install
npm startdocker-compose up -d1️⃣ Upload a photo with a window or background you want to mask
2️⃣ Choose a decoy scene or let GeoMask randomize it
3️⃣ Download the protected photo — ready for posting!
See the power of GeoMask in action:
Left: Original photo with identifiable background | Right: GeoMasked version with AI-generated decoy scene
Modern AI tools can analyze window views, skyline patterns, and environmental cues in photos to guess your location — sometimes within meters. GeoMask ensures your privacy by swapping these views with decoy scenes.
- Window Detection: Automatically identifies windows and background areas
- AI Generation: Creates realistic replacement backgrounds using AI
- Seamless Blending: Merges the new background with your original photo
- Privacy Protection: Your location remains hidden from AI analysis
# Install development dependencies
make install-dev
# Run tests
make test
# Format code
make format
# Lint code
make lint
# Start development servers
make start- API Documentation - Complete API reference
- Deployment Guide - Production deployment instructions
- Project Structure - Detailed project overview
- Random: AI chooses from various locations
- City: Urban cityscapes and skyscrapers
- Mountain: Swiss alpine villages and peaks
- Beach: Tropical beaches and coastal views
- Forest: Dense forests and natural landscapes
- Desert: Desert landscapes and dunes
- Custom: Your own scene description
- Real-time Processing: Fast image processing with progress feedback
- High Quality Output: 8K resolution support with professional quality
- Secure Processing: Files are processed securely and not stored permanently
- Multiple Formats: Supports JPEG, PNG, GIF, BMP, TIFF, WebP
- Responsive Design: Works on desktop, tablet, and mobile
MIT License - see LICENSE file for details.
We welcome contributions! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone and setup
git clone https://github.com/makalin/GeoMask.git
cd GeoMask
make setup
# Install dependencies
make install-dev
# Run tests
make test
# Start development
make start- Issues: GitHub Issues
- Documentation: docs/ directory
- API Reference: docs/API.md
- OpenAI for DALL-E image generation
- FastAPI for the excellent web framework
- React community for the amazing frontend ecosystem
- OpenCV for image processing capabilities

