MobileRank Rating Methodology
The MobileRank rating is a calculated metric from 0 to 100, built entirely from verifiable figures: benchmarks and specifications. The formulas below are exactly what the site runs; there are no manual expert "adjustments" to the scores.
Normalization Principle
Metrics with a wide dynamic range — AnTuTu and Geekbench — are mapped to 0-100 logarithmically: AnTuTu spans 80k to 4.3M, a ~54x range, and on a linear scale the entire mass-market segment was pinned to zero (in v1 the performance score was exactly 0 for 60% of the catalogue).
score = 100 × ln(value / min) / ln(max / min)
The rest are linear. Some of those scales have an explicit FLOOR: a working 60 Hz display is not "0 out of 100". Not every scale has one — the DXOMark score and camera module resolutions run on a plain linear scale from zero.
score = floor + clamp((value − min) × 100 / (max − min), 0, 100) × (100 − floor) / 100
For "lower is better" metrics (weight, thickness, process node), the normalization is inverted. Price is not part of the overall score at all — it lives in a separate value-for-money metric, otherwise that metric would be derived from a score that already contains it. Anchors are pinned to the best device in the current catalog (an approach similar to NanoReview): the top model of 2026 scores ≈95-100, and everything else scales down from there. When a new generation of chips arrives, the anchors move up — so scores are comparable within a single catalog snapshot, not across years.
The arithmetic is integer: floor division on the linear scales and rounding on the logarithmic one — the rating is deterministic and reproducible.
Overall Smartphone Rating
total = weighted mean over KNOWN categories only
(performance×38 + camera×25 + battery×17 + display×15 + portability×5), weights renormalised
Formula version — score_version 5. The version is part of every row of the open dataset, so a downloaded CSV can always be matched against the site. What changed against v1 is at the end of this section.
| Category | Weight | What It's Based On | Scale |
|---|---|---|---|
| Performance | 38% | AnTuTu (15), Geekbench 6 single (8) and multi (7); whichever benchmarks exist are used | Logarithmic. AnTuTu 80K → 4 300 000; GB6 single 250 → 3800; multi 700 → 11 500. The AnTuTu range spans a ~54× spread — on a linear scale the entire mass-market segment collapsed to zero |
| Camera | 25% | The DXOMark score when available. Otherwise a module heuristic: main (6), telephoto (4), ultrawide (3), front (2) | DXOMark 45 → 175. Main module piecewise: 12-64 MP delivers 85% of the score, 64-200 MP adds a diminishing 15% (MP ≠ quality). Scale floor 20: a working 8 MP camera is not "0/100" |
| Battery & Charging | 17% | Capacity (12), wired charging (5), wireless (3). Wireless counts only where we KNOW the full answer: "absent" scores 0, "present at N watts" starts at 40 and rises with wattage. "Present, wattage unknown" behaves like "unknown" — it drops out of the formula and costs nothing: a fixed credit for mere presence made the scale non-monotonic whenever the other battery components scored above 40 | Capacity piecewise: 3500-5200 mAh gives 70% of the score, 5200-9000 mAh adds 30%. Charging 20 → 120W. Scale floors 15 |
| Display | 15% | Refresh rate (45), panel type (25), pixel density PPI (30) | 60 → 144 Hz (floor 25); OLED/AMOLED = 100, IPS/LCD = 45; PPI 250 → 520 (floor 30). In v1 the display was scored by refresh rate ALONE, so the scale degenerated into "0 or 100" |
| Portability | 5% | Weight (60) and thickness (40) | 240 → 160 g; 9.5 → 6.5 mm (floor 20). Before v2 this category was called "Design" while measuring weight only — hence absurd results like "Design 12" |
What we do NOT do: substitute numbers for gaps
If a spec is missing, the category is marked unknown and does not take part in the overall score; the remaining weights are renormalised. Zero means "measured and poor", not "we don't know". If known categories add up to less than 60% of the weight, no overall score is published at all — otherwise a model with a single recorded spec would outrank fully described ones.
An important caveat about optional features. Telephoto and ultrawide count as ABSENT when the value is missing: for most budget models that is correct, but our data does not distinguish "the feature is absent" from "it was not recorded", so individual models are understated on those points. Wireless charging now has an explicit flag — "absent" is inferred from the source spelling out the charging section in detail and never mentioning wireless. We checked that rule on 27 Jul 2026 against 401 models whose wattage is known independently: it was wrong on 6 of them (1.5%), where the source simply stayed silent about a feature that is there. So direct evidence (a recorded wattage) always outranks an inferred absence, and disagreements are logged at import time; the current catalog has none left — 0 out of 390 models with a known wattage. Residual error remains possible where no source knows the wattage.
Value for money — separate from the overall score
The overall score is technical quality only; price is not part of it. Otherwise "overall rating" would mean different things for models with and without a known price, and value itself would be computed from a score that already contains it.
value = 50 + (total − expected total at that price) × 2
50 means "exactly what that money usually buys". The curve is frozen as constants — nodes: $80→27, $110→33, $200→45, $299→56, $410→62, $599→68, $799→68, $999→70, $1500→71. Diminishing returns are visible: above ~$600 the median plateaus.
Where the nodes come from: the median overall score in a
window around the price, measured on 16 Aug 2026 across 807 released models with a known
launch price (scripts/fit_price_curve.py — the fit is reproducible and can be
re-run on our own dataset). The median is taken over a window rather than over the segment
between nodes: a segment butts against its neighbouring node, which biases its median
towards the boundary. Check after the refit
(scripts/verify_price_curve.py): no price segment sits further than 3 points
from the curve.
The previous curve (27 Jul 2026) was fitted across 891 models, and that population included prices from our supplier catalogue — on 29 Jul 2026 we found them unusable and removed them (see below). The resulting bias was not uniform but conditional: the sub-$110 segment sat 9 points below the curve while $410-599 sat 4 points above it, so cheap models were understated as a group and mid-range ones overstated. The global median value score (52 against the intended 50) MASKED that — which is why the curve has to be checked per segment rather than by a single number. The same pass added the $80 node: the first node used to be $110, so everything cheaper was compared against the expectation for $110, i.e. penalised for costing less than the cheapest point on the curve.
Value for money is computed from the launch price, known for 988 models out of 2810. A current retail price is known for 0 models out of 2810: on 28 Jul 2026 we added a separate field for it, having taken our supplier catalogue's price for current retail, but a check on 29 Jul disproved that — of 141 prices captured in both February and July, 133 had not moved, and for 36 models the "current" price was above the launch one. The field stays empty until a real price source exists. We no longer publish the supplier catalogue's price at all: it is neither current nor launch — it agrees with an independently known price within ±15% for only 43% of models, and for one in five it is off by more than a factor of two, in both directions. A price is shown only where it can be verified: our catalogue checked against the announcement, and NanoReview's stated MSRP. So value for money answers "how much quality this money bought at launch", not "is it worth buying today". Some prices are captured in euros and pounds and converted at coarse static rates; those include local VAT and are therefore higher than the US equivalent. The metric is a guide, not an exact figure. In v1 it was computed for EVERY model from an assumed "$800" and was really just cheapness — which is why a $1599 flagship scored 0/100.
What version 2 changed
Measured on the 2421-model catalog before the change: performance was exactly zero for 1454 models (60%), display for 651 while its median was 100, 64% of models had at least one zero category, and the median overall score was 30. The cause was linear normalisation from a high lower anchor. After switching to a logarithmic scale, broadening the display category and adding explicit scale floors, zeros are practically gone and the median overall score is 48. Unreleased models (announcements and rumours) still never enter the tops.
Battery-Life Estimate (Hours)
Lab measurements don't exist for all 2810 models, so the hours of battery life shown are a transparent calculated estimate:
current (mA) = 260 + 38 × diagonal(inches), then adjustments:
×1.02 at 90Hz, ×1.05 at 120Hz, ×1.08 at 144Hz+; ×0.92 for SoCs ≤4nm,
×1.10 for ≥7nm. hours = capacity / current.
The model is calibrated against real NanoReview battery test measurements (43 models in the database): the median deviation from their web-browsing test is ≈16%. This is an estimate for comparing models against each other, not a promise of specific hours. Where a real measurement exists, we show that measurement on the page.
A detailed accuracy breakdown is in our research articles.
Derived Rankings
Value for Money (Top "Best Deals")
Sorted by total / √price among models with a rating ≥55 and a price ≥$80.
The square root dampens the bias toward ultra-cheap models: without it, a "rating 20 at $80" would
formally outrank a "rating 90 at $500."
Brand Rating
The average score of a brand's top 5 models from the last 2 catalog years, with Bayesian smoothing (the same weighted-rating scheme IMDb uses). One caveat without which the formula cannot be reproduced: if a brand has fewer than three recent models (within the last two catalog years), the top 5 of all time are used instead — otherwise a brand that left the market would be judged on one or two arbitrary entries.
WR = (n×R + m×C) / (n + m), where n is the number of models in the brand's top,
R is their average score, m = 3 is the prior's weight, and C = min(R, 50) is an asymmetric prior.
Smoothing keeps a brand with a single lucky model from outranking brands with a full, consistent lineup, and the prior's asymmetry (min) never drags a weak brand upward "for free."
SoC and GPU Ratings
Processors (SoC)
total = antutu×30% + single×25% + multi×25% + efficiency×20%
Weights are renormalised over the metrics we actually have: a missing one is not substituted with the bottom anchor, which would publish a gap in the data as a measured zero. With no benchmark at all no score is produced — a process node alone is not a performance rating.
Anchors: AnTuTu 700K → 4M; GB6 single 1050 → 3800; multi 2850 → 11,500. Efficiency is the inverse normalization of process node: 3nm = 100, 7nm = 0.
GPU
total = 3DMark Wild Life Extreme×55% + GFXBench Aztec High×45%
(anchors 1400-7500 and 18-120 FPS). If only one benchmark is available, that one is used
without diluting the score with a zero; if neither is available, we show an honest "no data"
instead of a zero.
Data Sources
| Source | What We Use | Database Coverage |
|---|---|---|
| AnTuTu (official lists) | v11 scores from the official lists, including per-device results. The version is checked against the list heading on every refresh: if the source moves to v12 the refresh stops rather than blending a new scale into the old one. A per-model result exists for 541 of the 2559 models that have a score, and it carries its source (antutu.com or nanoreview). The rest inherit their chip's v11 score — they have no measurement of their own, and we will not present one as if they did | 541 devices + SoC backfill |
| Geekbench 6 | Single-core / multi-core | via SoC and device catalogs |
| NanoReview | Real battery tests (web/video/gaming/overall), prices, specs | 43 battery-life measurements |
| DXOMark | Lab camera scores (with attribution and a link to the test on the card) | 186 models |
| GSMArena, phonesdata, manufacturer sites | Specs: display, battery, cameras, dimensions, NFC, IP rating | 2810 smartphones, 258 SoCs, 47 GPUs |
Data is cross-checked between sources; price conflicts are resolved in favor of the manually verified figure.
Limitations — Honestly
- Battery-life hours are calculated, not measured (except for 43 models with a NanoReview test). The average deviation from a real test is ~16%.
- Cameras without a DXOMark score are rated by megapixel count — a weak quality signal. 186 out of 2810 models have a DXOMark score; for the rest, the camera score is a heuristic.
- Benchmarks are averaged: a specific unit may post different numbers depending on software version, cooling, and RAM.
- The price is the launch price only and is not known for every model. We do not publish today's retail price: we have no source that actually provides one.
- Incomplete data moves the score both ways. An unknown CATEGORY is excluded and the weights are renormalised — so if a model's weak side is the unknown one, its overall score ends up higher than deserved. We stop publishing a score only below 60% of known weight. A missing FEATURE within a category (no telephoto, no wireless charging) is a real zero and does lower the score. This used to say that incomplete data always lowers the score: that was wrong.
- Scale anchors are revised whenever a new chip generation arrives — comparing scores only makes sense within a single catalog version.
Editorial principles and corrections
Scores are produced by a formula, not by an editor. There are no manual "adjustments": if a number looks wrong, then either the source data or the formula is wrong, and one of those gets fixed — never the result.
What we deliberately do NOT publish
- A rating derived from gaps. If less than 60% of the category weight is known, no overall score is shown at all. Missing data is not a zero.
- Dates we do not know. The modification date comes from a hash of the meaningful fields and moves only on a real change. Before 2026-07-27 no such history existed — and until then there were no dates in the markup at all.
- An aggregate rating. We have one score and it is
editorial, so there is no
aggregateRatingin the markup: that property asserts several independent ratings exist. - Prices as an offer. We are not a retailer, so the
markup carries no
offersand no availability claims. - Unreleased models as fact. Announcements and rumours are flagged on the page, never enter the tops, and their specs carry a caveat in the text rather than a single badge.
How errors get fixed
The data lives in open YAML files in the repository, not in a closed admin panel. A correction goes into the source, reaches the catalog with the next automatic import and the open dataset the same day. The full edit history is the repository history.
The project currently has no inbound channel for error reports — a deliberate decision by the owner, not an oversight. Corrections are therefore driven by our own cross-checking of sources rather than by incoming messages.
Known weak spots
- We have no current retail price: the source we took for one publishes the price at first indexing (verified 29 Jul 2026). Everything — value for money, lists, filters and segments — uses the launch price. It is not known for every model; currency conversion uses coarse static rates, and prices captured in euros and pounds include local VAT.
- We rank AnTuTu scores of a single version only (v11 — both sources declare it in the heading of their lists). A chip with no current result gets no AnTuTu component: its performance is scored from Geekbench 6 instead. Previously an old score was silently ranked alongside current ones, and the gap between the scales reaches 1.5x in the budget segment. The same rule applies to a score recorded on the model itself: without a declared version it is not used, and the model takes its chip's v11 score instead. The source is recorded next to the number where a per-model measurement exists — for 541 of the 2559 models.
- Geekbench scores are collected as Geekbench 6, but the source does not state the version for every number — unlike AnTuTu, there is no automatic version check here.
- For wireless charging, "absent" and "not recorded" are now distinguished: the source always spells out the charging section and only mentions wireless when it is there, so a detailed section with no mention reads as "the feature is absent" (2483 models classified, 327 still unknown). Other optional features such as telephoto have no such split yet — there a gap is still indistinguishable from absence.
Open Data
We publish the rating's derived data (every category's score and the estimated battery life for 2810 models) as an open dataset under the CC BY 4.0 license:
- mobilerank_ratings.csv — MobileRank ratings for every model in the catalog
- sample_raw_specs.csv — a sample of raw specs (top 100 models)
- README.md — column dictionary, data provenance, and usage terms
The Database in Numbers
- Smartphones 2810
- Processors (SoC) 258
- GPUs 47
- DXOMark measurements 186
- NanoReview battery tests 43
Rating Scale
- 85-100 Flagship · 1% of catalog
- 70-84 Sub-flagship · 10%
- 50-69 Solid mid-ranger · 35%
- 30-49 Budget · 40%
- 0-29 Ultra-budget · 14%
The labels describe the score level, not the price: of models launched at $900 or more, 10% reach "Flagship" and more than half land in "Sub-flagship" (measured 29 Jul 2026, 101 models).