How the lens works.
Every number on MRRLens is either verified at the source or produced by a formula printed next to it. Nothing is guessed silently.
Where the data comes from
- WordPress.org — the public plugin directory API: active installs, rating distribution, description. Negative reviews from the public review forums.
- Chrome Web Store — public listings: users, rating, category, description; recent reviews from the public review page.
- Shopify App Store — public listings: rating, review distribution, published plans; 1–3★ reviews from the public review pages.
- Open-startup revenue — revenue founders publish through payment-provider APIs on TrustMRR, shown as “publicly verified”.
- Trustpilot and Capterra — for SaaS without a marketplace listing: 1–3★ Trustpilot reviews of the product’s own domain, and the “cons” Capterra reviewers list (at any star rating). A Capterra listing is used only when its name and its own description match the product.
- Founders — revenue verified here with a read-only Stripe key, shown as “verified by MRRLens” only after the badge is found on the product’s own homepage.
- Buyer intent — public threads on Hacker News (Algolia API), Reddit (public feeds of software and small-business communities), Bluesky (public search), Stack Exchange (software recommendations), the Shopify Community and WordPress.org plugin forums, Lobsters and Dev.to.
The crawler identifies itself, paces itself per host and reads only public pages. Reviewer names are never stored; quotes link back to the public source.
Revenue estimates
A product only gets an estimate when there is evidence it charges money (a paid plan, a published price, a premium tier). Free tools show “no paid plan seen”.
- Freemium, users published (Chrome, WordPress):
active users × 0.5%–2.5% paid conversion × monthly price, only when the listing publishes its price. - Shopify apps:
reviews × 7–20 active installs per review × paying share × entry price; paying share is 100% for paid-only apps and 15%–35% when a free plan exists. Reviews pile up over an app's whole life while revenue comes only from stores that still have it, so the ratio is measured on active installs: for the 20 most-installed apps with at least 100 reviews, StoreCensus active installs divided by the Shopify review count give a lower quartile of 7 and a median of 12 (Oct 2026). Until Oct 29, 2026 the rule used 15–40, roughly twice too high; every Shopify range was recomputed. - Verified revenue replaces any estimate.
Every figure carries one of three confidence levels, shown next to it:
- ✓ Verified: read from the payment provider (by MRRLens with a read-only Stripe key, or published by the founder on TrustMRR). A business with no subscriptions has no MRR: its last 30 days of revenue are shown instead and labelled as such.
- ~ Estimated: the formula above with the price the listing publishes. Only conversion is assumed.
- Freemium · upsell unknown: the listing sells a paid tier but publishes no price. MRRLens shows no figure: a range built on a guessed price would only look like data. The page shows the exploratory math (“at a typical price this would be…”), labelled as such, and revenue does not count in the opportunity score.
How accurate the estimates are
Not measured yet, and we will not pretend otherwise. None of the verified products so far also carried a marketplace estimate: they are SaaS sold outside the stores. 807 products carry an estimate that a founder can check. When one is verified, the estimate it had is kept and published here next to the real figure, so the error of the model is public — good or bad.
When there is no estimate on purpose
Installs only say something about revenue when the listing is the product being sold. Two kinds of listings are excluded from estimates and from the opportunity ranking, and their pages say why:
- Companions: a connector for a service the same company sells elsewhere, such as a CDN’s plugin, an automation platform’s WordPress plugin, or a payment provider’s gateway. That company earns from the service, not from the listing.
- Large vendors: listings made by the marketplace owner or a large company, whose revenue cannot be separated from the rest of the business.
Known brand domains are classified directly; other listings with an estimate are checked by a language model reading the name, website and description. When it is unsure, the listing keeps its estimate.
How an estimate is shown
An estimate is always shown as its range ($72k–192k a month), never as a single figure, with a confidence level: medium when the range spans at most 3×, low beyond that. Shopify apps with a free plan carry low confidence because both the installs per review and the paying share are assumed.
Build difficulty
A language model rates how hard a credible competitor would be for a small team (Low, Medium, High) from the listing and its complaints, naming the main factors: third-party APIs and integrations, regulation and compliance, payments, data or network effects, hardware and operations, platform approval. It is a hypothesis to check, not a measurement.
The 1-star x-ray
Every X-ray shows the date it was analysed. When the classifier improves, X-rays are re-analysed and the date changes; the method used (model or keywords) is printed under each breakdown.
Recent 1–3★ reviews (and the “cons” reviewers state on Capterra) are read one by one by a language model and given their main complaint: Pricing, Bugs/Reliability, Missing Feature, Bad Support or UX, judged by what the user is unhappy about, not by which words appear. Each category shows how many reviews fall in it, a summary and a quote with its link. A quote must be copied word for word from the review, or it is not used. Reviews in other languages keep the original text, with an English translation underneath. Without a model, keyword evidence decides.
Opportunity score
Three factors, each read from the product's own figures, each shown on the product page with the points it earned:
- Market size (45 points): the revenue, and how well it is known.
- Pain intensity (35 points): the share of 1–2★ ratings, weighted by how many ratings it rests on. A product that publishes no rating distribution (most SaaS) uses the complaints read on Trustpilot or Capterra instead, worth at most 60% of the factor because their share of all reviews is unknown.
- Active demand (20 points): buyer threads naming the product in the last 30 days.
The published score rescales the weighted sum so that the formula's practical ceiling (an estimated ~$100k a month with a sixth of well-evidenced ratings at 1–2★) is 100. Without the rescale every strong product would sit at the same value. It is not a percentile: the best product today scores below 100 because none reaches that ceiling. The product page also gives the relative position among scored products (top 2% · 6 of 94) and High/Medium/Low from 75/45.
Only products that can be judged are scored: software (not paid communities, services or content), with verified revenue or an estimate whose range spans at most 3×, of at least $1k a month, an X-ray of at least five complaints, and some sign of unhappy users.
Formula versions
Every score shows its formula version and the date it last changed. A score changes when its evidence changes (new reviews, a new revenue figure) or when the formula version changes.
- v4 (Oct 30, 2026): an estimate wider than 3× is no longer scored; it stays on its product page and in the revenue leaderboard, marked low confidence.
- v3 (Oct 29, 2026): revenue counts fully only with pain (30% on its own); a revenue figure of at least $1k a month and an X-ray of five complaints are required; complaints older than two years weigh half; estimates weigh 80% (range ≤ 3×) or 50% (wider); software only.
- v2 (Oct 29, 2026): raw score rescaled to its practical ceiling; pain from complaints read when no rating distribution exists.
- v1 (Oct 28, 2026): weighted sum 45 / 35 / 20, shown as a percentile.
Verified revenue counts in full, an estimate whose range spans at most 3× at 80%, a wider one at half — so the least certain figures cannot top the ranking. A product needs a revenue figure of at least $1k a month to be scored — an opportunity is money on the table first. A product with no rating and no complaint read has no opportunity score either: earning money without unhappy customers is not an opening for a challenger. It still appears in the revenue leaderboard. Revenue counts fully only together with pain: on its own it earns 30% of its points. A founder who verified revenue can ask to leave the opportunity ranking (see corrections).
45 × revenue + 35 × pain + 20 × demand, each term from 0 to 1:
- Revenue: verified MRR or the middle of the estimate on a log scale, $100/month → 0, $100k/month → 1, weighted by confidence: verified ×1, estimate within 3× ×0.8 (wider estimates are not scored); no published price, no revenue term. An estimate counts only after the check that the listing earns its own money (attribution). A guess never outranks evidence.
- Pain: share of 1–2★ ratings ÷ 35% (or the average rating when no distribution is published), weighted by how many ratings it rests on,
n / (n + 25): 8 ratings count about a quarter, 100 ratings 80%. A handful of angry votes is not a pattern. - Demand: buyer threads about the product in the last 30 days (see below), log-scaled, 20 threads → 1.
Buyer-intent leads
Threads are collected from Hacker News, Reddit, Bluesky, Stack Exchange, the Shopify Community, WordPress.org forums, Lobsters and Dev.to when they contain a high-intent phrase (“alternative to”, “switching from”, “too expensive”, “looking for a tool”, …). A phrase is not intent, so every candidate is then read by a language model and labelled:
- Switching: the author wants to leave a specific commercial product.
- Shopping: the author is choosing a tool for a real need and asks for options.
- Unhappy: the author complains about a product without saying they will leave. Not on product support forums (WordPress.org, the Shopify Community), where every thread is someone with a problem: there only switching and shopping count.
Passing mentions, comparison pages, launches, self-promotion (including “free alternative to X” posts) and bug reports are discarded. The model also checks that a named product is the commercial one (an open-source tool or a device with the same name is not linked to it). Only switching and shopping threads appear on the home page. The intent score (0–100) is the model’s estimate of how likely the author pays for a new tool within weeks; urgency is High from 70, Medium from 45.
Corrections
Founders can replace any estimate with verified revenue on /verify. A wrong name, a wrong category, a misattributed quote or a broken link: write to hello@mrrlens.com with the page and the problem, and it is fixed or removed. Verified founders can also ask for a public reply to be shown next to a complaint. See Corrections. Changes to our own method are listed in the corrections log.