Mark
Pricing Sign Up
← All posts

ARPDAU, ARPPU, and ARPU for games: how to calculate them

Mike Dalton By Mike Dalton ·

Two stacks of coins beside a dashboard card with a bar chart where one bar is much taller than the others.

ARPDAU, ARPPU, and ARPU all divide a game's revenue by a number of players. ARPDAU divides it by the players who played that day, ARPPU by the players who paid, and ARPU by all players. The revenue is the same in all three; only the denominator changes, and that is why the three numbers are so different.

ARPDAU, ARPPU, and ARPU at a glance

Metric Formula What it tells you Usual period
ARPDAU (average revenue per daily active user) Revenue on a day / players active that day How much the game earns from a typical day of play One day, or an average of days
ARPPU (average revenue per paying user) Revenue / players who paid How much a paying player spends One day or one month
ARPU (average revenue per user) Revenue / all players How much an average player is worth A month, or a cohort's first N days
Payer conversion Players who paid / active players What share of players pay One day or one month

A worked example

On one day, 1,000 players play your game and 25 of them buy something, for a total of $150:

  • ARPDAU is $150 / 1,000 = $0.15.
  • Payer conversion is 25 / 1,000 = 2.5%.
  • ARPPU is $150 / 25 = $6.00.

ARPDAU is always payer conversion multiplied by ARPPU: 2.5% × $6.00 = $0.15. So when ARPDAU changes, you can tell whether more players paid or the players who paid spent more.

ARPU over a month is not the average of the daily ARPDAU values. A player who plays on 10 days of the month counts 10 times in the daily denominators but once in the monthly one, so monthly ARPU is much higher than ARPDAU. In the example game below, ARPDAU over the last 30 days was $0.17, while revenue divided by everyone who played in those 30 days, the monthly ARPU, was $0.47. Payer conversion moves the same way: about 3% of players paid on a typical day, but 7.5% of the month's players paid at least once.

Details that change the number

Two teams can calculate ARPPU from the same purchases and get different results. These are the usual reasons:

  • Ad revenue. If the game shows ads, decide whether ARPDAU and ARPU include ad revenue. ARPPU usually counts purchases only, because a player who only watches ads is not a payer. Neither choice is wrong, but say which one you use.
  • Refunds. Subtract refunds on the day they happen. Otherwise revenue and every metric built on it stay too high.
  • The period. ARPPU and payer conversion depend on whether you count payers per day or per month. A player who pays on three days of a month is three payers in the daily numbers and one in the monthly number. As devtodev points out, monthly ARPPU is not the sum or the average of the daily values.
  • Gross or net. App stores keep a share of each purchase, commonly 15% or 30%. Revenue before that share gives higher numbers than the money you receive.
  • Currency. Convert every purchase to one currency before you add amounts together.

ARPU by day 7 and 30: the measured part of LTV

Lifetime value (LTV) is the revenue a player brings over their whole time in the game. For players who are still playing, it is a prediction. Cumulative ARPU by day N is the part you can measure today: the revenue from a cohort of new players from their first day through day N, divided by the number of players in the cohort.

If 200 players start on the same day and spend $90 in total by their seventh day, ARPU by day 7 is $0.45. Like retention, it is only final once day N has ended. Compare ARPU by day 7 and 30 with what a new player costs to acquire; the mobile game KPIs guide covers cost per install and LTV.

SQL query for ARPDAU, payer conversion, and ARPPU

If your sessions and purchases are already in a database, this PostgreSQL query calculates the daily values for every finished day. It expects a sessions table with player_id and started_at, the same table as in the retention and DAU/MAU queries, and a purchases table with player_id, amount_usd, and purchased_at, where refunds are negative amounts:

WITH active_days AS (
  SELECT DISTINCT player_id, (started_at AT TIME ZONE 'UTC')::date AS active_on
  FROM sessions
  UNION
  SELECT DISTINCT player_id, (purchased_at AT TIME ZONE 'UTC')::date
  FROM purchases
),
revenue_by_player_day AS (
  SELECT player_id, (purchased_at AT TIME ZONE 'UTC')::date AS active_on, SUM(amount_usd) AS revenue
  FROM purchases
  GROUP BY 1, 2
)
SELECT
  active_days.active_on AS day,
  COUNT(*) AS dau,
  COALESCE(SUM(revenue), 0) AS revenue,
  COUNT(*) FILTER (WHERE revenue > 0) AS paying_players,
  ROUND(COALESCE(SUM(revenue), 0) / COUNT(*), 3) AS arpdau,
  ROUND(100.0 * COUNT(*) FILTER (WHERE revenue > 0) / COUNT(*), 2) AS payer_conversion_percent,
  ROUND(COALESCE(SUM(revenue), 0) / NULLIF(COUNT(*) FILTER (WHERE revenue > 0), 0), 2) AS arppu
FROM active_days
LEFT JOIN revenue_by_player_day USING (player_id, active_on)
WHERE active_days.active_on < (now() AT TIME ZONE 'UTC')::date
GROUP BY active_days.active_on
ORDER BY day DESC;

The query counts a player as active on any day they played or bought something, adds up each player's purchases per day, and counts a player as paying on a day when their purchases that day add up to more than zero. ARPPU is empty on a day without payers. It leaves out today, because today's numbers are not final until the day ends. Days are calendar days in UTC; to use a local time zone instead, replace the four 'UTC' values with a zone name such as 'America/New_York'.

What is a good ARPDAU or ARPPU?

There is no reliable public benchmark. ARPDAU depends on the genre, the platform, the countries your players come from, and whether the game earns from ads or purchases, and the published figures we found either name no dataset or are several years old. Compare each version of your game with the versions before it, and compare ARPU by day 30 with your cost per install.

Revenue metrics in Game Stats AI

To show what that looks like, we used the example competitive game from the retention guide. New players joined every day for eight weeks, and we added generated purchase events for about 3% of the days players were active, with a few refunds as negative amounts. In a game, each purchase is an event with an amount_usd attribute, sent to the events endpoint.

A revenue report adds up one or more revenue sources. Each source is an event and the attribute that holds its amount in US dollars, such as purchases, subscriptions, or ad revenue. The report counts a player as active on any day they play a match, send an event, unlock an achievement, or record a progression event, and it subtracts negative amounts as refunds. Every source counts toward daily revenue, ARPDAU, and ARPU, while payer conversion and ARPPU only count the sources that players pay directly, so a player who only watches ads is not a payer. The example game has one source, its purchases:

A revenue report with a daily revenue chart over eight weeks, mostly between $0 and $35 a day with one day below zero from a refund. Below it, average daily revenue is $8.93, average ARPDAU is $0.176, average payer conversion is 2.99%, and average ARPPU is $5.88. Average ARPU by day 1, 7, and 30 is $0.35, $0.47, and $0.84.

The report calculates ARPDAU, payer conversion, and ARPPU per day, and its averages weight each day by its players, so they match the daily definitions above rather than the monthly ones. Below the averages is one row per cohort with ARPU by day 1, 7, and 30, which stays empty until that day has ended:

A cohort table with first seen dates from 2026-10-14 back to 2026-10-03. Each row shows the number of new players and ARPU by day 1, between $0.00 and $2.00. ARPU by day 7 appears from the 2026-10-07 cohort, and ARPU by day 30 is empty for every row shown.

We ran the SQL query above on the same matches and purchases, and it returned the same revenue, paying players, ARPDAU, payer conversion, and ARPPU for every day. The values are also available from the revenue report endpoint, and you can ask Claude about them through MCP, for example Did ARPPU change after the last update?

Frequently asked questions

What is the difference between ARPU and ARPPU?

ARPU divides revenue by all players, and ARPPU divides it by the players who paid. Because most players in a free-to-play game never pay, ARPPU is usually many times higher than ARPU.

What does ARPDAU stand for?

Average revenue per daily active user: the revenue on a day divided by the number of players who played that day.

Is a higher ARPU always better?

Not on its own. ARPU rises if players who rarely pay stop playing, because the denominator shrinks. Read it together with the number of active players and retention.

Does ARPPU include ad revenue?

Usually not, because ARPPU is about players who pay. If you include ad revenue, a player who only watches ads becomes a payer and ARPPU stops measuring purchases. Whichever you choose, use the same definition every time.

Keep reading

© 2026 Rowhome Labs, LLC