# Timezones and daily numbers

> Why today or a day's numbers might not match what you expect: reports use the site's timezone, visits end at midnight UTC, and how the API handles dates.

## Reports use the site's timezone

Every date range ("Today", "Last 7 days", custom dates) is made of calendar
days in the **site's timezone** (Site settings → General). Events are
stored in UTC, so changing the timezone re-buckets all history instantly,
and nothing is lost.

Common confusions:

- **Your browser is in another timezone.** The dashboard doesn't use your
  computer's timezone. "Today" starts at midnight where the site is set.
- **Comparing with another tool** (GA4, your server logs) that uses a
  different timezone shifts every day's totals. Align them first.
- **Different sites in one report** use their own timezones.

## Visits end at midnight UTC

Visits (and the visit key) never cross **midnight UTC**,
whatever the site's timezone, because the daily salt rotates then. A
visitor browsing across midnight UTC counts as two visits (and two
visitor-days). For sites far from UTC, this happens during local daytime,
for example 5 pm in California or 9 am in Tokyo, and slightly raises
visits for those hours.

## API

`from` and `to` are dates in the site's timezone. Response timestamps are
ISO 8601. Timeseries buckets are wall-clock times in the site's timezone
(see [Stats endpoints](/docs/api/stats)).
