How to calculate Monthly Active Users (MAU)

Monthly active users is the number of distinct users who perform a qualifying action in your product within a calendar month.

Formula

MAU = count of distinct users with at least one qualifying event in the month

SQL query

This example assumes: events(id, user_id bigint, event_name text, occurred_at timestamptz). It is written in PostgreSQL syntax; date functions differ slightly in MySQL, BigQuery and SQLite, and your column names will differ from these.

SELECT DATE_TRUNC('month', occurred_at)::date AS month,
       COUNT(DISTINCT user_id) AS mau
FROM events
WHERE event_name NOT IN ('email_opened', 'push_received')
GROUP BY 1
ORDER BY 1;

Common mistakes that make Monthly Active Users (MAU) wrong

  • A calendar month and a rolling 30 days give different answers; say which one you report.
  • The current month is partial, so its MAU is understated until the month closes.
  • Merged or duplicate user ids across devices inflate the count.

Ask for Monthly Active Users (MAU) in plain English

Instead of writing the query yourself, you can type the question. SchemaChat turns it into SQL against your connected database or uploaded file, runs it, and shows the SQL and the figures it used so you can check the answer before you share it. It does not replace your judgement about the definition: check that the query matches the formula your business uses.

  • How many monthly active users did we have in each of the last 12 months?
  • How did MAU change from last month to this month?

Frequently asked questions

What is Monthly Active Users (MAU)?
Monthly active users is the number of distinct users who perform a qualifying action in your product within a calendar month.
How do you calculate Monthly Active Users (MAU)?
MAU = count of distinct users with at least one qualifying event in the month. The SQL example on this page shows the same calculation against a simple table.
What commonly goes wrong when calculating Monthly Active Users (MAU)?
A calendar month and a rolling 30 days give different answers; say which one you report.