My ISP Sucks
Signaler

Méthode ouverte

Comment on tranche

Tout tourne dans le navigateur. Rien ne quitte l’appareil tant que vous n’appuyez pas sur Partager le rapport. La logique ci‑dessous est complète — rien n’est caché.

Pourquoi c'est différent ?

Speedtest mesure un serveur proche. Ce test vérifie les routes proches, les routes lointaines et vos applis, puis montre ce qui marche et ce qui ne marche pas.

Speedtest

My ISP Sucks

Un test couvre

Un serveur proche

Un test couvre

Routes proches, lointaines, vos applis

Débit descendant, montant, ping

Oui

Débit descendant, montant, ping

Oui

Streaming, jeux, cloud

Estimé à partir du chiffre

Streaming, jeux, cloud

Vérifié sur ces services

Ce qui marche et ce qui ne marche pas

Pas affiché

Ce qui marche et ce qui ne marche pas

Affiché

Qui est responsable

Non nommé

Qui est responsable

Wi‑Fi, FAI, ou un service

Vous pouvez envoyer

Le chiffre

Vous pouvez envoyer

Une réclamation

Sans lien avec Ookla ni Speedtest.

Lancer ce test

1 · Ce qu’on sonde

Quatre couches, de l’appareil vers l’extérieur :

Passerelle locale (preflight)

10 HEAD vers le PoP Cloudflare le plus proche (600 ms). Perte et jitter. ≥ 2 timeouts ou σ > 30 ms → chemin instable.

Nœuds nationaux (near)

AWS S3 dans votre pays (code pays IP). Score bas = FAI local ou routage.

Nœuds internationaux (far)

16 régions AWS S3 mondiales. Score élevé avec near OK = passerelle internationale.

Services du profil (profile)

15–25 HEAD streaming/jeux/tech. Détecte peering et blocages invisibles au ping.

2 · Santé des nœuds

Score de 0 (parfait) à 1 (cassé). Moyennes near et far séparées.

score = 0.7 × (packetLoss / 100)
      + 0.3 × clamp((actualMs − expectedMs) / (expectedMs × 3), 0, 1)

expectedMs = max(10, distanceKm / 50)   ← speed-of-light RTT baseline

Exemple — Tel‑Aviv → N. Virginie (9 500 km)

expectedMs = max(10, 9 500 ÷ 50) = 190 ms

actualMs = 219 ms, packetLoss = 0 %

score = 0 + 0.3 × clamp((219 − 190) / (190 × 3), 0, 1) = 0.015 → sain

nearScore < 0.25

Near : sain

farScore > 0.35

Far : déclenche règle 6

farScore > 0.45

Far : dégradé (5b)

3 · Service aberrant

outlier if:  status = "fail"
         OR  status = "slow"  AND  latencyMs ≥ cohortMedian × 2.5

slow = probe latency above 1 000 ms
ok under that line is not an outlier

Exemple

Netflix 95 ms ✓ YouTube 88 ms ✓ Twitch 1 240 ms

cohortMedian = 88 ms → 1 240 ≥ 88 × 2.5 (220) → Twitch est aberrant

4 · Chaîne de règles

Premier match gagne. DevTools → Console montre chaque règle.

1

Hors ligne

connectivity = fail, and no other check reached the internet

→ down / local_issue

2

Chemin local instable

Wi-Fi or cellular AND (preflight unstable OR jitter > 40 ms) AND farScore < 0.40

→ local_issue

3

DNS cassé

device is online AND dns = fail

→ isp_issue

4

Service aberrant précis

core healthy AND 1 ≤ outliers ≤ 40 % of services

→ service_issue

5

Majorité de services mauvais

core healthy AND badServiceFraction ≥ 50 %

→ isp_issue (peering)

5b

Trafic intl. bloqué

preflight loss = 0 AND nearScore < 0.25 AND farScore > 0.45 AND ≥ 3 far nodes

→ isp_issue (gateway)

6

Cœur / far dégradé

any test = fail OR farScore > 0.35

→ isp_issue

6b

Dégradation douce

any test = warn (no harder rule fired)

→ local_issue or isp_issue (medium)

✓

Tout va bien

→ healthy

5 · Tenue de l’offre

ratio = measuredDown / promisedDown

≥ 0.80  →  "As advertised"    ✓
≥ 0.50  →  "Underdelivering"  ~
 < 0.50  →  "Far below plan"   ✗

Annotation seule — ne change pas le coupable.

6 · Confidentialité

Toutes les sondes dans le navigateur. Rien n’est envoyé tant que vous n’appuyez pas sur Partager le rapport.

Partagé : verdict, scores, FAI, pays, médium. Aucune IP stockée.