Método abierto
Cómo llegamos al veredicto
Todo corre en tu navegador. Nada sale del dispositivo hasta que pulses Compartir informe. La lógica abajo es completa — nada oculto.
¿Por qué es distinto?
Speedtest mide un servidor cercano. Este test comprueba rutas cercanas, rutas lejanas y las apps que usas, y muestra qué funciona y qué no.
Speedtest
My ISP Sucks
Un test cubre
Un servidor cercano
Un test cubre
Rutas cercanas, lejanas y tus apps
Descarga, subida, ping
Sí
Descarga, subida, ping
Sí
Streaming, juegos, nube
Estimado a partir del número
Streaming, juegos, nube
Comprobado en esos servicios
Qué funciona y qué no
No se muestra
Qué funciona y qué no
Se muestra
Quién es responsable
No lo dice
Quién es responsable
Wi‑Fi, tu ISP o un servicio
Puedes enviar
El número
Puedes enviar
Una queja
Sin relación con Ookla ni con Speedtest.
Hacer este test1 · Qué medimos
Cuatro capas, del dispositivo hacia fuera:
Puerta local (preflight)
10 HEAD al PoP Cloudflare más cercano (600 ms). Mide pérdida y jitter. ≥ 2 timeouts o σ > 30 ms → ruta inestable.
Nodos del país (near)
AWS S3 en tu país (por código de país del IP). Score bajo = ISP doméstico o enrutado.
Nodos internacionales (far)
16 regiones AWS S3 en el mundo. Score alto con near bien = puerta internacional.
Servicios del perfil (profile)
15–25 HEAD a streaming/juegos/tech. Detecta peering y bloqueos que el ping no ve.
2 · Salud del nodo
Score de 0 (perfecto) a 1 (roto). Medias near y far separadas.
score = 0.7 × (packetLoss / 100)
+ 0.3 × clamp((actualMs − expectedMs) / (expectedMs × 3), 0, 1)
expectedMs = max(10, distanceKm / 50) ← speed-of-light RTT baselineEjemplo — Tel Aviv → N. Virginia (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 → sano
nearScore < 0.25
Near: sano
farScore > 0.35
Far: activa regla 6
farScore > 0.45
Far: degradado (5b)
3 · Servicio atípico
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 outlierEjemplo
Netflix 95 ms ✓ YouTube 88 ms ✓ Twitch 1 240 ms
cohortMedian = 88 ms → 1 240 ≥ 88 × 2.5 (220) → Twitch es atípico
4 · Cadena de reglas
Gana la primera coincidencia. DevTools → Console muestra cada regla.
Sin conexión
connectivity = fail, and no other check reached the internet
→ down / local_issue
Ruta local inestable
Wi-Fi or cellular AND (preflight unstable OR jitter > 40 ms) AND farScore < 0.40
→ local_issue
DNS roto
device is online AND dns = fail
→ isp_issue
Servicio atípico concreto
core healthy AND 1 ≤ outliers ≤ 40 % of services
→ service_issue
La mayoría de servicios mal
core healthy AND badServiceFraction ≥ 50 %
→ isp_issue (peering)
Tráfico intl. bloqueado
preflight loss = 0 AND nearScore < 0.25 AND farScore > 0.45 AND ≥ 3 far nodes
→ isp_issue (gateway)
Núcleo / far degradado
any test = fail OR farScore > 0.35
→ isp_issue
Degradación suave
any test = warn (no harder rule fired)
→ local_issue or isp_issue (medium)
Todo bien
→ healthy
5 · Cumplimiento del plan
ratio = measuredDown / promisedDown ≥ 0.80 → "As advertised" ✓ ≥ 0.50 → "Underdelivering" ~ < 0.50 → "Far below plan" ✗
Solo anota el informe — no cambia al culpable.
6 · Privacidad
Todas las sondas en el navegador. Nada va al servidor hasta que pulses Compartir informe.
Al compartir: veredicto, scores, ISP, país, medio. No se guardan IPs.