How to calculate DAU/MAU Stickiness

DAU/MAU stickiness is the ratio of daily to monthly active users, showing how often monthly users come back each day.

Formula

Stickiness % = average daily active users ÷ monthly active users × 100

SQL query

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

WITH daily AS (
  SELECT occurred_at::date AS day, COUNT(DISTINCT user_id) AS dau
  FROM events
  WHERE occurred_at >= DATE '2026-09-01' AND occurred_at < DATE '2026-10-01'
  GROUP BY 1
), monthly AS (
  SELECT COUNT(DISTINCT user_id) AS mau
  FROM events
  WHERE occurred_at >= DATE '2026-09-01' AND occurred_at < DATE '2026-10-01'
)
SELECT (SELECT AVG(dau) FROM daily) * 100.0 / NULLIF(monthly.mau, 0) AS stickiness_pct
FROM monthly;

Common mistakes that make DAU/MAU Stickiness wrong

  • 'Active' must mean a meaningful action, not just opening the app.
  • Products used mainly on weekdays look less sticky if weekends are averaged in.
  • Counting by device instead of by user inflates both numbers differently.

Ask for DAU/MAU Stickiness 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.

  • What is our DAU/MAU for last month?
  • Does stickiness differ by plan?

Frequently asked questions

What is DAU/MAU Stickiness?
DAU/MAU stickiness is the ratio of daily to monthly active users, showing how often monthly users come back each day.
How do you calculate DAU/MAU Stickiness?
Stickiness % = average daily active users ÷ monthly active users × 100. The SQL example on this page shows the same calculation against a simple table.
What commonly goes wrong when calculating DAU/MAU Stickiness?
'Active' must mean a meaningful action, not just opening the app.