Overpass Status Monitor

Monitor the health and performance of Overpass API servers in real-time.

If you find this tool useful, please consider buying me a coffee!

Overview

Overpass API Status Monitor is a client-side tool for monitoring Overpass API servers. It tracks server health, query performance, and data freshness without requiring any backend.

All data is stored in your browser's localStorage and persists across page reloads.

Adding Servers

The site operator may have pre-configured default servers. These will appear automatically on your first visit. You can add more servers or remove the defaults as needed.

Click Add Server to add servers to monitor. You can:

Server URLs should point to the Overpass API endpoint (e.g., https://overpass-api.de).

Note
The site operator may disable adding custom servers. If the Add Server button is not visible, only the pre-configured servers can be monitored. Check the About modal for any active restrictions.

Layouts

Card View

Detailed view showing all metrics for each server in a card format. Best for monitoring a small number of servers.

Card view showing server metrics

Table View

Compact view with servers in rows. Hides the header, landmarks section, and API log for focused monitoring. Best for many servers.

Table view showing multiple servers

Use the Columns dropdown to show/hide specific metrics.

Latency

Round-trip time to fetch the server's status endpoint (/api/status). Measured in milliseconds.

StatusThreshold
Green< 500ms
Orange500ms - 1000ms
Red> 1000ms

Query Slots

Available query slots on the server. Each Overpass query uses one slot. When all slots are in use, new queries are queued.

StatusCondition
GreenSlots available
Orange1-2 slots remaining
RedNo slots available
Note
Query slots are an optional rate-limiting feature configured by the server operator. Not all servers enable this feature. When disabled or unavailable, this metric is blank.

Active Queries

Number of queries currently running on the server. High numbers indicate heavy server load.

StatusThreshold
Green< 5 queries
Orange5 - 10 queries
Red> 10 queries

Data Age

How old the OpenStreetMap data is on the server. Based on the timestamp_osm_base value from the status endpoint.

StatusThreshold
Green< 30 minutes
Orange30 min - 24 hours
Red> 24 hours
Jumping values
If data age fluctuates wildly (e.g., 1 min to 5 days), the server likely uses load balancing with multiple backends that have different data freshness. Each request may hit a different backend.

Version

The Overpass API software version running on the server (e.g., 0.7.62).

StatusCondition
GreenLatest version among monitored servers
OrangeBehind latest version

Card view also shows the short git commit hash (e.g., e83c1b4) from the Overpass API source code repository. This identifies the exact build and can differ between servers running the same version number. The time since last version upgrade is also displayed when detected.

Color Coding

Each metric uses color to indicate status:

In card view, the left border color reflects the worst status among all metrics.

Sparkline Graphs

Enable graphs via Graphs: On dropdown. Sparklines appear for:

Hover over any graph to see a larger popup with:

History stores the last 100 data points per server. Sparklines display the most recent 20 points. Data persists across page reloads.

Load Balancing Detection

Some Overpass servers use load balancing with multiple backend servers. The monitor detects this by tracking the "Announced endpoint" from each status response.

When a different backend is detected:

Why monitor individual backends?
Load-balanced servers may have backends with different data freshness or performance. Adding them individually lets you monitor each backend's health separately and identify problematic nodes.
Detection limitations
Backend detection relies on the server's "Announced endpoint" field in its status response. This only works when the backend server identifies itself. Some load balancing methods cannot be detected:
  • DNS-based balancing — The domain resolves to multiple IP addresses. Each request may hit a different server, but they all appear as the same URL.
  • Reverse proxy — A load balancer sits in front of backend servers but doesn't pass through their identity.
If no endpoint is shown, the server may still be load balanced — you might notice this through fluctuating data age values.

HTTP Cache Detection

Some Overpass servers have HTTP caching (e.g., nginx proxy cache) in front of them. This can cause the Data Age metric to appear stuck or stale, even when the actual Overpass data is fresh.

The problem

When an HTTP cache sits in front of an Overpass server, repeated queries for the same data return cached responses. Since the monitor normally queries node(1) to check server metadata, a cache may return the same timestamp_osm_base value for hours or even days — making the data appear stale when the actual Overpass database is freshly updated.

How we detect it

The monitor uses a two-step detection process:

  1. Track consecutive timestamps: After each refresh, the monitor compares the new timestamp_osm_base with the previous value. If the same timestamp appears twice in a row, it triggers a cache test.
  2. Cache-bust test: The monitor sends a second query using a random node ID (e.g., node(1847293) instead of node(1)). Since this query hasn't been cached, it bypasses the HTTP cache and returns the real timestamp.
  3. Compare results: If the cache-bust query returns a fresher timestamp than the normal query, HTTP caching is confirmed.

Example from testing

Here's what we observed when testing a server with nginx proxy caching enabled:

StepQueryResult
1. Normal query[out:json];node(1);out meta;timestamp_osm_base: 2026-01-14T07:26:15Z
2. Refresh (3 min later)[out:json];node(1);out meta;timestamp_osm_base: 2026-01-14T07:26:15Z (same!)
3. Cache-bust test[out:json];node(1019429);out meta;timestamp_osm_base: 2026-01-14T07:27:11Z (fresher)

The normal query returned the same timestamp twice because it hit the HTTP cache. The random node ID query bypassed the cache and revealed the actual data age — nearly a minute fresher.

What cached responses look like

Signs that a server may have HTTP caching:

Cache indicator

When HTTP caching is detected on a server:

Cache-busting

When you enable cache-busting for a server, the monitor uses randomized query node IDs instead of the standard node(1). This bypasses the HTTP cache and returns fresh timestamp_osm_base values.

When to use cache-busting
Cache-busting is useful when you need accurate data age readings. However, it slightly increases query variation. The setting is saved per-server and persists across page reloads.
Pre-configuring cache-busting
If you host your own instance and know a server has HTTP caching, you can pre-enable cache-busting in config.json by adding "cacheBusting": true to the server entry. See Server Config File for details.

Landmark Tests

Test server response by querying for famous landmarks around the world:

Click Run Tests to query all servers, or click a landmark card to test just that location.

Custom Ordering

In card view, drag and drop server cards to reorder them. Your custom order is saved and persists across reloads.

Use the Sort dropdown to sort by:

Sharing Configuration

In the About modal, copy your configuration URL to share your setup with others. The URL includes:

Export/Import

In the About modal:

Auto-Refresh

The monitor can automatically refresh server status at regular intervals. Use the Refresh dropdown to select an interval:

Be considerate
Public Overpass servers are a shared resource. Use 3 minutes or longer to avoid unnecessary load. Shorter intervals are best reserved for monitoring your own self-hosted servers.
Note
The site operator may enforce a minimum refresh interval. If some options are not available in the dropdown, a minimum has been set. Check the About modal for any active restrictions.

API Log

The collapsible API Log panel at the bottom of the page shows all requests made to Overpass servers. Click the header to expand or collapse it.

Each log entry shows:

Click any log entry to view the full request and response details. Use the Clear button to reset the log. You can also filter logs by clicking the log icon on a specific server card.

URL Parameters

Configure the monitor via URL query parameters:

ParameterValuesExample
serversComma-separated names or URLs?servers=Main,Z,Coffee
layoutcard, table?layout=table
sortcustom, name, latency, version?sort=latency
refreshSeconds: 0, 60, 120, 180, 300, 600, 1800, 3600?refresh=300
graphson, off?graphs=on
themelight, dark?theme=dark

Example URLs

Preset Servers

NameURLDescription
Mainoverpass-api.dePrimary public instance
Zz.overpass-api.deAlternative endpoint
LZ4lz4.overpass-api.deCompressed responses
Coffeeoverpass.private.coffeeCommunity instance
Japanoverpass.osm.jpJapan-based instance
Swissoverpass.osm.chSwitzerland-based instance

Server Config File

If you host your own instance of Overpass Status, you can configure defaults by creating a config.json file in the same directory as index.html.

Options

OptionDescription
serversArray of default servers for new visitors
servers[].nameDisplay name for the server
servers[].urlURL of the Overpass server
servers[].cacheBustingSet to true if the server has HTTP caching (e.g., nginx proxy). Enables cache-busting queries automatically.
minRefreshMinimum refresh interval in seconds (restricts dropdown options)
allowCustomServersSet to false to prevent users from adding their own servers
showHelpSet to false to hide the help link
showAboutSet to false to hide the about button
Simple Status Page
To create a minimal status-only page for your Overpass server, set allowCustomServers, showHelp, and showAbout all to false. This hides all navigation and editing options, showing only the server status.

Example

{
  "servers": [
    { "name": "My Server", "url": "https://overpass.example.com" },
    { "name": "Cached Server", "url": "https://overpass2.example.com", "cacheBusting": true }
  ],
  "minRefresh": 180,
  "allowCustomServers": false,
  "showHelp": false,
  "showAbout": false
}

Copy config.example.json to config.json and edit as needed.

Site Restrictions
The site operator may restrict certain features. When restrictions are active, they are displayed in the About modal. Default servers only apply to new visitors, but minRefresh and allowCustomServers settings always apply to all users.

View the source code on GitHub.

If you find this tool useful, consider buying me a coffee