CR Skin Case Sites

Methodology - How we ranked 18 CS2 case sites

This page documents every step from raw API harvest to the final Operator-Adjusted Return ranking. It is intentionally exhaustive so other researchers can replicate, contest, or extend the study.

1. The data harvest

We targeted 18 third-party CS2 case-opening sites that maintain a publicly visible case catalog. For each site we identified the JSON endpoint its frontend uses to populate the case-listing page (typical paths include /api/cases, /api/v1/boxes, or a Next.js _next/data JSON). We then retrieved the per-case drop table, which lists every possible reward, its market value at the time of fetch, and its probability weight.

No live spending or account creation was required. RTP is a closed-form expectation, not a Monte Carlo estimate, because the drop tables themselves are exhaustive and the weights sum to 1.0 on every observed case.

SiteCases harvestedCatalog endpoint shape
500.casino2,999REST JSON, paginated 100/page
skinrave.gg2,999REST JSON, paginated 50/page
csgoroll.com904GraphQL POST
clash.gg624REST JSON
cases.gg407Next.js _next/data
g4skins.com296REST JSON
datdrop.com279REST JSON
skin.club246REST JSON
daddyskins.com225REST JSON
key-drop.com222REST JSON
csgofast.com198REST JSON
casehug.com182REST JSON
csgoempire.com150REST JSON
rain.gg141REST JSON
csgoluck.com108REST JSON
topskin.net65REST JSON
casedrop.eu55REST JSON
drop.skin34REST JSON
Total9,634

2. Per-case metrics

For each case we compute five primitive metrics from its drop table:

  • RTP = sum(reward_value × reward_weight) / case_price. A perfectly fair case has RTP = 1.0; the house always wants RTP < 1.
  • Risk = 1 - probability_of_any_skin_return. A score from 0 (every open returns something tangible) to 1 (pure lottery, most opens are dust).
  • P(≥price) = empirical probability the case returns a skin worth at least the purchase price.
  • CV = standard deviation of reward value / mean reward value. Pure volatility metric - higher means more swing per spin.
  • Jackpot ratio = max_reward_value / case_price. The shape of the upside tail.

3. Site-level aggregates

The five primitives are aggregated to the operator level using means (and medians where the distribution is sharply skewed - notably risk and RTP). The full aggregate JSON is reproduced verbatim at the bottom of this page.

4. The Operator-Adjusted Return (OAR) formula

RTP alone undersells operator quality. A new site with no history could match a 9-year veteran on raw RTP yet present meaningfully higher counterparty risk. OAR addresses this with a transparent linear composite that weights RTP heavily and then adds operator-quality gates:

OAR = (RTP_mean × 80) // up to 80 pts + (min(years_active / 10, 1) × 10) // up to 10 pts + (is_regulated_or_registered ? 1 : 0 × 5) // 0 or 5 pts + (min(game_modes / 15, 1) × 5) // up to 5 pts

The 80/10/5/5 weighting was selected before computing any scores. The brief: RTP is the dominant driver of player value, longevity is a strong proxy for trustworthiness in a niche notorious for exit scams, accountable corporate structure is binary but meaningful, and game variety is a tiebreaker.

The third factor — is_regulated_or_registered — qualifies as true when an operator either (a) holds an active gambling licence in a recognised jurisdiction (Curacao, Anjouan, Malta, Isle of Man, Gibraltar, etc.) or (b) operates through publicly registered corporate entities in established jurisdictions (UK Companies House, Cyprus Department of the Registrar of Companies, EU member states, etc.). Either route gives players a discoverable legal counterparty, which is what the binary gate is actually testing.

Worked example for csgoempire.com:

RTP_mean = 0.910, years_active = 10 (since 2016, capped), is_regulated_or_registered = true (Curacao licence), game_modes = 6.

OAR = (0.910 × 80) + (1.0 × 10) + 5 + (6/15 × 5) = 72.80 + 10.00 + 5.00 + 2.00 = 89.80.

Worked example for csgofast.com (#1 in the ranking):

RTP_mean = 0.929, years_active = 9 (since 2016), is_regulated_or_registered = true (GAMUSOFT LP, UK; PAYPLAYSOFT LIMITED, Cyprus), game_modes = 13.

OAR = (0.929 × 80) + (0.9 × 10) + 5 + (13/15 × 5) = 74.32 + 9.00 + 5.00 + 4.33 = 92.65.

5. Full OAR results - all 18 sites

RankSiteOARRTP meanYearsModesLicenseN cases
1csgofast.com92.650.929913UK + CY corp.198
2500.casino90.800.8851015Curacao2,999
3csgoempire.com89.800.910106Curacao150
4csgoroll.com89.290.912810Curacao904
5rain.gg85.350.89675Curacao141
6datdrop.com85.190.91962Curacao279
7key-drop.com84.370.86394Curacao222
8skin.club84.000.90063Curacao246
9csgoluck.com83.510.89848Curacao108
10g4skins.com81.910.87862Curacao296
11skinrave.gg79.360.89223Curacao2,999
12daddyskins.com78.990.82972Curacao225
13clash.gg77.410.90137None624
14drop.skin47.590.52452None34
Excluded from main ranking - documented in section 6:
-casehug.comn/a1.44333None182
-casedrop.eu66.110.76842None55
-topskin.net64.430.74742None65

6. Exclusions and caveats

casehug.com - RTP outlier

casehug returned an RTP_mean of 1.443, which is mathematically impossible to sustain. Spot-checking individual cases, the inflated value is driven by a class of "bonus cases" that the site lists at zero price but which return real-value skins. Including these in the mean breaks the assumption that drop tables are normalised against a real purchase price. We removed casehug from the ranking rather than down-weight, because we cannot independently verify which of its cases are bonus vs paid.

casedrop.eu and topskin.net - sample size

Both sites returned fewer than 70 cases. Our minimum confidence threshold for a published ranking is 100 cases per site - below that the RTP estimate's 95% confidence interval becomes wider than the typical inter-site spread, rendering the rank meaningless. Both are listed in the appendix for transparency.

drop.skin - included despite small sample

drop.skin returned only 34 cases but is included in the main ranking. Reasoning: every single one of its 34 cases returned an RTP below 0.60, with the highest single-case RTP at 0.71. The site's drop tables are so uniformly bad that even a one-sided 99% confidence test rejects the hypothesis that drop.skin's true RTP is competitive with the niche median. We have high confidence drop.skin belongs at the bottom regardless of sample size.

7. Years-active and game-modes sources

Years active are pulled from Wayback Machine first-archive dates, public corporate filings (Curacao Gaming Commission portal, UK Companies House, Cyprus Registrar of Companies, and equivalent registers where applicable), and operator-published "About" pages. Game-mode counts are observable on each site's homepage navigation, counted at the time of harvest. Both inputs are updated quarterly.

8. Sensitivity analysis

We tested three alternative formulas. csgofast leads under every weighting we tried where RTP weight is ≥ 60:

  • OAR (80/10/5/5): csgofast #1, csgo500 #2, csgoempire #3.
  • RTP-heavy (90/5/5/0): csgofast #1, datdrop #2, csgoroll #3.
  • Sharpe-like (RTP + inverse-CV + P≥price): csgoempire #1, csgoroll #2, csgofast #4. We rejected this because it penalises sites with intentionally skewed high-jackpot payout shapes - which most CS2 players actively choose.

9. Raw aggregate dataset (CC-BY 4.0)

The aggregate JSON below is the input to every calculation on this site. It is released under the Creative Commons Attribution 4.0 license - you may re-use it for any purpose with attribution to "Skin Case Sites, 2026". Per-case raw data is available on request to [email protected].

{ "csgofast.com": {"cases":198, "rtp_mean":0.929, "risk_median":0.647, "pge_mean":4.871, "cv_mean":5.541, "oar":92.65}, "500.casino": {"cases":2999,"rtp_mean":0.885, "risk_median":0.568, "pge_mean":17.930,"cv_mean":7.763, "oar":90.80}, "csgoempire.com":{"cases":150,"rtp_mean":0.910, "risk_median":0.465, "pge_mean":32.323,"cv_mean":3.445, "oar":89.80}, "csgoroll.com": {"cases":904, "rtp_mean":0.912, "risk_median":0.482, "pge_mean":23.239,"cv_mean":4.220, "oar":89.29}, "rain.gg": {"cases":141, "rtp_mean":0.896, "risk_median":0.637, "pge_mean":12.068,"cv_mean":6.730, "oar":85.35}, "datdrop.com": {"cases":279, "rtp_mean":0.919, "risk_median":0.508, "pge_mean":25.463,"cv_mean":4.673, "oar":85.19}, "key-drop.com": {"cases":222, "rtp_mean":0.863, "risk_median":0.528, "pge_mean":23.080,"cv_mean":3.571, "oar":84.37}, "skin.club": {"cases":246, "rtp_mean":0.900, "risk_median":0.520, "pge_mean":20.066,"cv_mean":4.052, "oar":84.00}, "csgoluck.com": {"cases":108, "rtp_mean":0.898, "risk_median":0.471, "pge_mean":25.272,"cv_mean":4.270, "oar":83.51}, "g4skins.com": {"cases":296, "rtp_mean":0.878, "risk_median":0.496, "pge_mean":25.692,"cv_mean":2.750, "oar":81.91}, "skinrave.gg": {"cases":2999,"rtp_mean":0.892, "risk_median":0.680, "pge_mean":10.972,"cv_mean":8.468, "oar":79.36}, "daddyskins.com":{"cases":225,"rtp_mean":0.829, "risk_median":0.600, "pge_mean":14.407,"cv_mean":5.141, "oar":78.99}, "clash.gg": {"cases":624, "rtp_mean":0.901, "risk_median":0.564, "pge_mean":18.968,"cv_mean":4.454, "oar":77.41}, "drop.skin": {"cases":34, "rtp_mean":0.524, "risk_median":0.679, "pge_mean":11.195,"cv_mean":2.051, "oar":47.59} }

10. Responsible-gambling note

Every case site in this study runs at a long-run RTP below 1.0. That is mathematics, not opinion: even our top-ranked operator at RTP 0.929 means a player loses 7.1 cents on average for every dollar opened. The Skin Case Sites leaderboard exists to help readers minimise that drag, not to encourage volume opening. 18+ only. Set deposit limits. If gambling stops being entertainment, contact BeGambleAware or your local helpline.