Portfolio revenue concentration: why medians beat averages
Last updated: July 24, 2026
From the SoleOS answers series — written about our own product space; grounded in published definitions and documented behavior, never invented numbers.
Indie portfolio revenue is almost always concentrated in one or two products, not spread evenly across everything you've shipped. If you take the average revenue per app, you'll overstate how healthy your "typical" project is, because one strong performer pulls the mean up for everyone else. The median — the middle value when you line up your apps by revenue — tells you what a project in your portfolio actually looks like, and it's usually a much more sobering number.
This isn't a SoleOS-specific phenomenon. It's how portfolios work, in indie software and everywhere else: a small number of assets produce most of the outcome. The mistake is using a summary statistic (the average) that's sensitive to that one outlier, then making decisions — like "my apps do about $400/mo each" — based on a number that no individual app is actually hitting.
Why concentration happens by default
If you run 5, 10, or 15 apps, you didn't design them to have equal revenue potential. Each one had a different idea quality, launch timing, distribution channel, and amount of ongoing attention. Some got lucky with an App Store feature or a Reddit post that hit. Others are technically live but haven't been touched in eight months.
Revenue compounds unevenly. A product with better retention keeps last month's revenue and adds new revenue on top. A product with high churn resets closer to zero every month. Run that dynamic for a year across ten apps and you'll almost always end up with a shape where one or two products are doing 60-80% of total portfolio revenue, a handful are doing modest but real numbers, and several are near zero.
None of this means the smaller apps are worthless — some are early, some are deliberately low-maintenance side bets. But if you're making decisions about where to spend your next month of engineering time, you need to know which pattern you're actually in.
The average lies, the median tells you what's typical
Say you run eight apps with monthly revenue of: $2,400, $310, $180, $140, $90, $60, $20, $0.
- Average: ($2,400 + 310 + 180 + 140 + 90 + 60 + 20 + 0) / 8 = $400/mo
- Median: the middle two values are $140 and $90, so median = $115/mo
The average tells you "my apps make about $400 a month." That's true of exactly zero of your apps. The median tells you that a typical app in this portfolio makes about $115/mo — which is a much more useful number if you're deciding whether a new project idea is worth pursuing, or whether your seventh app is underperforming or right on pattern.
This is the same statistical trap as household income or city rents: one large number drags the mean far from where most of the data actually sits. Portfolios of side projects behave the same way, just at smaller scale.
What to actually calculate
You don't need a statistics background, just three numbers, recalculated monthly or quarterly:
- Total portfolio MRR — sum of everything, for the topline.
- Median per-app MRR — sort your apps by revenue, take the middle value (or average of the two middle values if you have an even count).
- Concentration ratio — your top app's MRR divided by total portfolio MRR. If one app is 70%+ of the total, you have a concentration problem worth naming, even if total revenue looks fine.
Watching the concentration ratio over time matters more than watching it once. If it's climbing, your winner is pulling away and your other apps are stagnant or shrinking — which is fine if that's a deliberate "double down" strategy, and a warning sign if it's happening by neglect. If it's falling because a second app is catching up, that's diversification working. If it's falling because your top app is declining, that's a different conversation entirely.
Why this changes what you do next
Concentration numbers should drive real decisions, not just sit in a spreadsheet:
- If concentration is high and rising, the honest move is often to stop splitting attention eight ways and put more hours into the winner — marketing, a price increase, a feature that reduces churn. Related read: real numbers from a 10-app portfolio walks through what this looks like when it's not hypothetical.
- If the median is near zero, most of your apps are effectively dormant. That's worth confronting directly — see what is a zombie app, and how do I find mine? if that phrase describes your portfolio.
- If concentration is low but total revenue is also low, you may be spreading thin without any project getting the attention needed to break out. Neither extreme is automatically wrong — it depends on your goals — but you should know which one you're in before deciding where to spend next month.
Where founders get this wrong
The most common mistake isn't math, it's tooling. When your revenue lives in separate RevenueCat and Stripe dashboards per app, computing a median means exporting numbers into a spreadsheet by hand, which most founders do once and then never again. So they fall back on gut feel — "I think my apps are all doing okay" — which is exactly the average-driven intuition this post is arguing against. If you're stitching Stripe and RevenueCat data manually, tracking Stripe and RevenueCat together covers the mechanics of getting one clean number set before you try to compute anything across products.
A spreadsheet works fine here too, especially at 2-4 apps — see SoleOS vs a spreadsheet for when a manual approach is genuinely the right call and when it starts costing you more time than it saves.
Disclosure
SoleOS is portfolio intelligence for multi-product founders, built by a solo founder running 10+ apps, and this post is written by SoleOS about a problem SoleOS is built to help with — so read the product mentions with that in mind. SoleOS pulls per-project MRR from Stripe, RevenueCat, and other connectors into one view, which makes median and concentration calculations something you check in seconds instead of rebuilding from CSV exports every quarter — see the metrics dictionary for exact formulas, or the live demo if you want to see it with sample data before connecting anything real. If you only run one or two products, or you're already comfortable pulling these numbers from a spreadsheet each month, you don't need it — the math in this post works with a calculator and ten minutes.
Frequently asked questions
What's a "healthy" concentration ratio for an indie portfolio?
There's no universal target — a founder deliberately running a portfolio of small, low-maintenance apps might be comfortable with 40-50% concentration, while someone who's found a real winner might rationally push it to 80%+ by focusing there. What matters is that the number is a choice, not something you discover by accident a year later.
Should I include $0 revenue apps in the median calculation?
Yes, if they're live and publicly available — a dormant app that could be earning but isn't is a real data point about your portfolio, not noise to exclude. If an app is fully unpublished or in pure development, it's fair to leave it out until it launches.
How often should I recalculate median and concentration?
Monthly is enough for most solo founders; weekly is overkill unless you're actively running an experiment on one product. The number that matters most is the trend over 3-6 months, not any single month's snapshot.
Does this apply if I only run two or three apps?
The concentration ratio still applies, but "median" is less meaningful with fewer than five data points — with three apps, the median is just the middle one, which doesn't tell you much statistically. At that scale, just look at each app's raw number side by side.
Can I compute this from RevenueCat and Stripe without a portfolio tool?
Yes — export MRR by product from each source, put it in one sheet, sort, and take the middle value. It's manual work every time you want a fresh read, which is the main tradeoff against a connected dashboard, not the math itself.