Skip to content
vsMars

Methodology

Mars Score is a transparent, category-weighted composite score from 0 to 100. Every contributing spec, its weight, and its normalization range is published here. Nothing hidden, nothing weighted by hand.

Data sources

The Mars Score formula

For any product in category C:

  1. For every spec group in C, we collect every required spec value the product has.
  2. Each value is normalized to a 0–1 range using one of three methods declared in the category config — minmax (linear), minmax_inverse(for “lower is better” specs like weight), or log_minmax (for specs with wide dynamic range like camera megapixels).
  3. Group score = arithmetic mean of normalized values × 100.
  4. Raw Mars Score = weighted average of group scores, using the per-category weights below.
  5. Display rescale. The raw 0–100 score is mapped to a 35–95 presentation range so flagship products land where buyers expect them (88–94) without inflating budget models. The mapping is a pure function:
    display = 35 + (raw / 100) ^ 0.85 × 60
    Anchor points: raw 0 → display 35, raw 50 → 67, raw 70 → 79, raw 90 → 89, raw 100 → 95. Relative ranking between any two products is preserved exactly — rescaling is monotonic. The transformation lives in rescaleScore in src/lib/score/mars.ts.

Confidence (the percentage of required specs that were actually present) is tracked separately and surfaced on the product page when below 80%. Products below 40% confidence have their score hidden entirely — we don't guess at numbers we can't back up with data.

Example: Smartphones weights

For smartphones, the Mars Score is a weighted average of these seven groups:

GroupWeightRequired specs
Design8%none
Display18%Screen size, Refresh rate
Performance25%RAM, AnTuTu, CPU total clock
Cameras18%Main camera
Battery20%Battery capacity
Connectivity7%none
Operating System4%none

Normalization ranges

Each required spec has a published min/max range. A smartphones battery of 3,000 mAh normalizes to 0; 8,000 mAh normalizes to 1; everything in between is linear.

SpecMethodMinMax
antutu_scoreminmax200,0003,500,000
ram_gbminmax424
battery_capacity_mahminmax3,0008,000
screen_size_inminmax4.77.5
refresh_rate_hzminmax60240
main_cam_mplog_minmax8250
weight_gminmax_inverse130250
promised_os_yearsminmax17
cpu_total_ghzminmax530

How this differs from other comparison sites

Most product-comparison sites — including versus.com, RTINGS, GSMArena — compute a single composite score, but the formula behind it is either undocumented, locked inside thousands of lines of internal code, or moved between versions without retroactive recomputation. Buyers see “76 / 100” and have no way to verify why.

vsMars publishes the entire pipeline on this page:

If you find a Mars Score you disagree with, the disagreement is concrete and resolvable: either you have a different spec value (in which case tell us, with a citation), or you weight categories differently (in which case the methodology is fully exposed and you can compute your own ranking). No “trust the algorithm” black box.

What we don't do

Versioning

Mars Score weights are versioned per category. The current smartphones weights are version 1. When we change weights — typically once or twice a year as a category matures — we publish a changelog and recompute every score retroactively, so historical comparisons stay consistent.