DAU, MAU, and stickiness: simple math with three hidden traps
Dividing DAU by MAU is one line of SQL. Getting a number that actually MEANS something takes knowing three things that go wrong first.
Two of the most common numbers in product analytics: DAU (Daily Active Users: how many distinct people used the product today) and MAU (Monthly Active Users: how many used it in the last 30 days). Divide one by the other and you get stickiness, roughly, "of everyone who shows up in a month, what fraction shows up on a typical day?"
🎯 Explain Like I'm Hired DAU is "how many different people used it today." MAU is "how many different people used it in the last 30 days." Stickiness (DAU ÷ MAU) tells you how often the typical monthly user actually shows up. Example: stickiness of 50% (common for something checked daily, like messaging) means a typical monthly user is active about 15 of those 30 days. Stickiness of 10% (common for something used occasionally, like paying a bill) means they only show up around 3 days.
SELECT
COUNT(DISTINCT CASE WHEN activity_date = CURRENT_DATE THEN user_id END) AS dau,
COUNT(DISTINCT CASE WHEN activity_date >= CURRENT_DATE - 29 THEN user_id END) AS mau
FROM user_activity;
Sign up to keep reading
Sign up free to unlock the worked examples, edge cases, and interview traps below.