Skip to main content
The OWASP Nest chapters map helps you discover local OWASP chapters near you. This guide explains how to use the interactive map and find chapters based on your location.

Overview

The chapters map provides:

Interactive Map

Pan, zoom, and explore chapters worldwide

Location-Based Search

Find chapters near you by sharing your location

Clustering

Grouped markers for better visualization

Chapter Details

Click markers to see chapter information

Accessing the Map

The chapters map is available at:
https://nest.owasp.org/chapters

Using the Interactive Map

1

Unlock the Map

Click the unlock button in the center to enable interaction.
The map is locked by default to prevent accidental scrolling while browsing the page.
2

Navigate the Map

Once unlocked, you can pan (click and drag), zoom (use +/- buttons or scroll wheel), or double-click to zoom in on a specific area.
3

View Chapter Details

Click any marker to see the chapter name, link to chapter page, and location information.
4

Lock the Map

Click outside the map or press Escape to lock it again.

Finding Nearby Chapters

Use location sharing to find chapters near you:
1

Enable Map Interaction

Click the unlock button to activate the map controls.
2

Share Your Location

Click the location icon in the top-left corner of the map.Your browser will prompt you to allow location access.
3

View Nearby Chapters

Once you share your location, your position appears as a green marker, the map zooms to show nearby chapters, and the closest 5 chapters are highlighted.
4

Reset Location Filter

Click the location icon again to reset and view all chapters.
Location data is only used in your browser and is never sent to the server.

Map Controls

Zoom Controls

  • + Button: Zoom in
  • - Button: Zoom out
  • Scroll Wheel: Zoom in/out (when unlocked)
  • Double-click: Zoom to specific area

Location Control

  • 📍 Icon: Share location or reset filter
  • Tooltip: Shows current state (Share location or Reset location filter)

Keyboard Controls

KeyAction
EscapeLock the map
+Zoom in
-Zoom out
Arrow keysPan the map

Marker Clustering

The map uses clustering to organize markers:

How Clustering Works

1

Zoomed Out View

When zoomed out, nearby chapters are grouped into numbered clusters showing how many chapters are in that area.
2

Intermediate Zoom

As you zoom in, clusters break apart into smaller groups.
3

Zoomed In View

When fully zoomed in, individual chapter markers appear.

Interacting with Clusters

  • Click a cluster: Zoom in to see individual chapters
  • Hover over cluster: See the number of chapters in that area

Chapter Information

Each chapter marker provides:
name
string
Official chapter name (e.g., OWASP London)
location
coordinates
Latitude and longitude coordinates
country
string
Chapter country
region
string
Geographic region
leaders
array
List of chapter leaders

Using Chapter Data via API

You can also access chapter location data programmatically:

List All Chapters

GET /api/v0/chapters/
Response includes:
{
  "results": [
    {
      "key": "www-chapter-london",
      "name": "OWASP London",
      "latitude": 51.5074,
      "longitude": -0.1278,
      "created_at": "2020-01-15T10:30:00Z",
      "updated_at": "2024-01-16T14:20:00Z"
    }
  ]
}

Get Chapter Details

GET /api/v0/chapters/{chapter_id}
Example:
curl "https://nest.owasp.org/api/v0/chapters/London"
Response:
{
  "key": "www-chapter-london",
  "name": "OWASP London",
  "latitude": 51.5074,
  "longitude": -0.1278,
  "country": "United Kingdom",
  "region": "Europe",
  "leaders": [
    {
      "key": "johndoe",
      "name": "John Doe"
    }
  ],
  "created_at": "2020-01-15T10:30:00Z",
  "updated_at": "2024-01-16T14:20:00Z"
}

Filtering Chapters by Location

Use the API to find chapters by geographic area:

Filter by Country

curl "https://nest.owasp.org/api/v0/chapters/?country=United+Kingdom"

Filter by Proximity (Custom Implementation)

import requests
from math import radians, sin, cos, sqrt, atan2

def haversine_distance(lat1, lon1, lat2, lon2):
    """Calculate distance between two points in kilometers."""
    R = 6371  # Earth's radius in km
    
    dlat = radians(lat2 - lat1)
    dlon = radians(lon2 - lon1)
    a = sin(dlat/2)**2 + cos(radians(lat1)) * cos(radians(lat2)) * sin(dlon/2)**2
    c = 2 * atan2(sqrt(a), sqrt(1-a))
    
    return R * c

def find_nearby_chapters(my_lat, my_lon, max_distance_km=100):
    # Get all chapters
    response = requests.get("https://nest.owasp.org/api/v0/chapters/")
    chapters = response.json()["results"]
    
    # Filter by distance
    nearby = []
    for chapter in chapters:
        if chapter["latitude"] and chapter["longitude"]:
            distance = haversine_distance(
                my_lat, my_lon,
                chapter["latitude"], chapter["longitude"]
            )
            if distance <= max_distance_km:
                chapter["distance_km"] = round(distance, 2)
                nearby.append(chapter)
    
    # Sort by distance
    nearby.sort(key=lambda x: x["distance_km"])
    return nearby

# Find chapters within 100km of London
nearby_chapters = find_nearby_chapters(51.5074, -0.1278, 100)

Map Technology

The chapters map uses:
  • OpenStreetMap: Base map tiles
  • Leaflet: Interactive mapping library
  • React Leaflet: React integration
  • MarkerClusterGroup: Marker clustering

Map Configuration

// Map bounds
minZoom: 1
maxZoom: 18
center: [20, 0]  // Default center

// World bounds
maxBounds: [
  [-85, -180],  // Southwest corner
  [85, 180]     // Northeast corner
]

Accessibility Features

Keyboard Navigation

Full keyboard support for all controls

Screen Readers

ARIA labels and semantic HTML

Focus Management

Visible focus indicators

Alternative Navigation

List view available for chapter browsing

Privacy and Location Data

When you share your location:
  1. Your browser provides coordinates to JavaScript
  2. Coordinates are used only to calculate distances
  3. No data is sent to the server
  4. No data is stored in cookies or localStorage
  5. Data is cleared when you refresh the page
Your browser will ask for permission before sharing location:
  • Allow: Map centers on your location
  • Deny: Map continues to work without location features
  • You can revoke permission in browser settings
OWASP Nest does not:
  • Track your location
  • Store location history
  • Share location with third parties
  • Require location to use the site

Troubleshooting

Possible causes:
  • Ad blocker blocking OpenStreetMap
  • JavaScript disabled
  • Network connectivity issues
Solutions:
  • Disable ad blocker for nest.owasp.org
  • Enable JavaScript
  • Check browser console for errors
Possible causes:
  • Browser permissions denied
  • HTTPS required for geolocation
  • Browser doesn’t support geolocation
Solutions:
  • Check browser location settings
  • Ensure you’re using HTTPS
  • Try a modern browser (Chrome, Firefox, Safari, Edge)
Possible causes:
  • Zoomed in too far
  • JavaScript error
Solutions:
  • Zoom out to see clustering
  • Refresh the page
  • Check browser console
Possible causes:
  • Many chapters in view
  • Low-end device
  • Browser extensions
Solutions:
  • Zoom in to reduce visible markers
  • Close other browser tabs
  • Disable unnecessary extensions

Best Practices

Finding Local Chapters
  1. Unlock the map
  2. Share your location
  3. Click the nearest marker
  4. Visit the chapter page to learn more
Exploring Globally
  1. Zoom out to see all continents
  2. Click cluster markers to zoom in
  3. Pan to different regions
  4. Use the list view for systematic browsing
Performance
  • Lock the map when not actively using it
  • Zoom in to reduce the number of visible markers
  • Use the list view for browsing many chapters

Build docs developers (and LLMs) love