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 × 100SQL 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?