# Freemium unit economics calculator

- Human page: https://happytails.ai/en/business-tools/freemium-unit-economics-calculator/
- Markdown: https://happytails.ai/en/business-tools/freemium-unit-economics-calculator.md
- Structured JSON: https://happytails.ai/agents/en/business-tools/freemium-unit-economics-calculator/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `freemium-unit-economics-calculator` |
| Category | business-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Each paying user contributes their revenue after payment fees minus the cost to serve them. The monthly cost of all free users is then shared across paying users. Lifetime figures divide by your monthly churn and are not discounted. Processing stays on your device.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `freeUsers` | Active free users | number | "48000" | min=0 max=1000000000 step=1 |
| `payingUsers` | Paying users | number | "1900" | min=1 max=1000000000 step=1 |
| `revenuePerPayer` | Average revenue per paying user per month | text | "12.00" |  |
| `paymentFeeRate` | Payment and app store fees (% of revenue) | text | "5" |  |
| `paidServeCost` | Cost to serve a paying user per month | text | "1.40" |  |
| `freeServeCost` | Cost to serve a free user per month | text | "0.18" |  |
| `monthlyChurn` | Paying users who cancel each month (%) | text | "4" |  |
| `acquisitionCostPerSignup` | Acquisition cost per new sign-up | text | "1.10" |  |
| `signupConversion` | Share of new sign-ups who become paying users (%) | text | "3.5" |  |
| `currency` | Currency code | text | "USD" |  |
| `precision` | Currency decimal places | select | "2" | Allowed: 0, 1, 2, 3, 4, 5, 6 |
| `rounding` | Rounding | select | "half-up" | Allowed: half-up, half-even, half-down, down, up, floor, ceiling |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Up to 1,000,000,000 free users and 1 to 1,000,000,000 paying users. Revenue per paying user up to 1,000,000, and costs per user and acquisition cost up to 1,000,000 with four decimal places. Fees from 0 to 100 percent, churn from 0.01 to 100 percent and sign-up conversion from 0.001 to 100 percent. Calculated on your device. Download a JSON report and CSV files.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "freemium-unit-economics-calculator",
  "category": "business-tools",
  "built": true,
  "requirements": "Up to 1,000,000,000 free users and 1 to 1,000,000,000 paying users. Revenue per paying user up to 1,000,000, and costs per user and acquisition cost up to 1,000,000 with four decimal places. Fees from 0 to 100 percent, churn from 0.01 to 100 percent and sign-up conversion from 0.001 to 100 percent. Calculated on your device. Download a JSON report and CSV files.",
  "implementation": {
    "fields": [
      {
        "key": "freeUsers",
        "label": "Active free users",
        "value": "48000",
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": 1
      },
      {
        "key": "payingUsers",
        "label": "Paying users",
        "value": "1900",
        "type": "number",
        "min": 1,
        "max": 1000000000,
        "step": 1
      },
      {
        "key": "revenuePerPayer",
        "label": "Average revenue per paying user per month",
        "value": "12.00",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "paymentFeeRate",
        "label": "Payment and app store fees (% of revenue)",
        "value": "5",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "paidServeCost",
        "label": "Cost to serve a paying user per month",
        "value": "1.40",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "freeServeCost",
        "label": "Cost to serve a free user per month",
        "value": "0.18",
        "help": "Hosting, storage, bandwidth and support for one active free user.",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "monthlyChurn",
        "label": "Paying users who cancel each month (%)",
        "value": "4",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "acquisitionCostPerSignup",
        "label": "Acquisition cost per new sign-up",
        "value": "1.10",
        "help": "Enter 0 when sign-ups come without paid acquisition.",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "signupConversion",
        "label": "Share of new sign-ups who become paying users (%)",
        "value": "3.5",
        "type": "text",
        "inputMode": "decimal",
        "maxLength": 32
      },
      {
        "key": "currency",
        "label": "Currency code",
        "value": "USD",
        "type": "text",
        "maxLength": 3,
        "autoCapitalize": "characters"
      },
      {
        "key": "precision",
        "label": "Currency decimal places",
        "value": "2",
        "type": "select",
        "values": [
          "0",
          "1",
          "2",
          "3",
          "4",
          "5",
          "6"
        ]
      },
      {
        "key": "rounding",
        "label": "Rounding",
        "value": "half-up",
        "type": "select",
        "values": [
          "half-up",
          "half-even",
          "half-down",
          "down",
          "up",
          "floor",
          "ceiling"
        ],
        "labels": {
          "half-up": "Half up (ties away from zero)",
          "half-even": "Half even (ties to even)",
          "half-down": "Half down (ties toward zero)",
          "down": "Toward zero (truncate)",
          "up": "Away from zero",
          "floor": "Toward negative infinity",
          "ceiling": "Toward positive infinity"
        }
      }
    ],
    "registrationFamily": "commerce-margins",
    "presentation": "metrics",
    "note": "Each paying user contributes their revenue after payment fees minus the cost to serve them. The monthly cost of all free users is then shared across paying users. Lifetime figures divide by your monthly churn and are not discounted. Processing stays on your device.",
    "input": false,
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Up to 1,000,000 characters. Review the settings before running.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

See what your free users cost each paying user, and the contribution, lifetime value and acquisition payback left after that. Find the paying share you need to cover your free users.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use Freemium unit economics calculator

1. Enter your active free users, paying users and average revenue per paying user each month.
2. Enter payment fees and the monthly cost to serve a paying user and a free user.
3. Enter monthly churn, acquisition cost per sign-up and the share of sign-ups who pay.
4. Calculate, review contribution, lifetime value and payback, then download the report.

## Useful next steps

- [Churn calculator](https://happytails.ai/en/calculators/churn-calculator/) ([Markdown](https://happytails.ai/en/calculators/churn-calculator.md))

- [Customer acquisition payback calculator](https://happytails.ai/en/calculators/customer-acquisition-payback-calculator/) ([Markdown](https://happytails.ai/en/calculators/customer-acquisition-payback-calculator.md))

- [Customer acquisition cost calculator](https://happytails.ai/en/calculators/customer-acquisition-cost-calculator/) ([Markdown](https://happytails.ai/en/calculators/customer-acquisition-cost-calculator.md))

## Contribution per paying user

Each paying user contributes their monthly revenue after payment and app store fees, minus the cost to serve them: 12.00 less 5% less 1.40 is 10.00 in the example. All free users together cost the cost to serve one free user times their number, 48,000 times 0.18, or 8,640.00 a month. Shared across 1,900 paying users that is 4.55 each, which leaves 5.45 of contribution per paying user. Vineet Kumar describes this link between free-user costs and paying users in Making Freemium Work (Harvard Business Review, May 2014).

### Break-even paying share

Free users are covered when the paying share times the paid contribution equals the free share times the free-user cost. Solving that gives a break-even paying share of the free-user cost divided by the sum of the paid contribution and the free-user cost: 0.18 divided by 10.18 is 1.77%. The example has 3.81% paying, so its free users are covered. One paying user can carry up to the paid contribution divided by the free-user cost, here 55.56 free users.

### Lifetime and payback

Expected paid lifetime is one divided by monthly churn, the average lifetime formula for a constant retention rate in Marketing Metrics by Farris, Bendle, Pfeifer and Reibstein (2nd edition, Pearson, 2010): 4% churn gives 25 months. Lifetime contribution multiplies that by the contribution after free users and is not discounted. Acquisition cost per paying user is the cost per sign-up divided by the share of sign-ups who pay, 1.10 divided by 3.5%, or 31.43, and payback is that cost divided by the monthly contribution, 5.76 months. Fixed costs such as salaries and development are not included.
