4dim / Notas
Cuánto tardan en cargar los sitios de las empresas de Medellín
No hay censo de sitios ni dato de campo por ciudad. Aquí va el protocolo reproducible, la muestra semilla verificada y lo que se rompió antes de medir.
No existe la lista
Para medir cuánto tardan en cargar los sitios de las empresas de Medellín hace falta, antes que un medidor, la lista de esos sitios. No existe: ningún registro público ata una empresa con su dirección web.
Comprobado campo a campo, leyendo los esquemas reales por API el 13-09-2026.
| Fuente | Qué campos trae |
|---|---|
| pb3w-3vmc, Cámara de Medellín | Año, CIIU, descripción, 22 columnas de comuna. Agregados. |
| bzeh-ecuk, por tamaño | Año, municipio, conteos por tamaño. Agregados. |
| y69t-3r2t, nacional | Razón social, NIT, municipio, CIIU 1 a 4. |
| Beneficio RUES, Cámara de Medellín | NIT, hasta 4 CIIU, ingresos, municipio, dirección, correo, representante legal. |
Ninguna trae el sitio web. Ni una. Y ninguna está fresca: las filas de los tres datasets se tocaron por última vez el 08-05-2023, el 04-10-2021 y el 13-12-2022. No confundir con los metadatos del catálogo, del 18-05-2026. El beneficio RUES, además, es restringido.
El único dataset con razón social y NIT tampoco sirve aquí: 8.604 filas, atribuido a la Cámara de Comercio de Sincelejo, y el filtro por el código DANE de Medellín —05001— devuelve cero registros. Medido el 13-09-2026.
El marco muestral hay que fabricarlo, y fabricarlo ya es el primer sesgo del estudio.
Lo que sí está contado
Del universo sí hay dos cifras oficiales, y importa de qué año son. En 2022 había 110.843 matrículas activas en Medellín. La mitad —49,4 %— está en tres comunas: La Candelaria (22.912), El Poblado (20.550) y Laureles-Estadio (11.247). Suma recalculada sobre las 469 filas el 13-09-2026.
El reparto por tamaño, dos años antes:
| Tamaño | Empresas (2020) | % del total |
|---|---|---|
| Micro | 83.055 | 85,2 % |
| Pequeña | 10.597 | 10,9 % |
| Mediana | 2.974 | 3,0 % |
| Grande | 908 | 0,93 % |
| Total | 97.534 | 100 % |
Fuente: bzeh-ecuk, filas actualizadas por última vez el 04-10-2021; porcentajes recalculados el 13-09-2026. Último año disponible, y es el de la pandemia: 2019 daba 106.957.
Manda el 85,2 %. La microempresa promedio no tiene sitio propio, así que cualquier muestra sobrerrepresenta por construcción al 14,8 % restante. Eso no se arregla midiendo mejor.
Qué se mide, y con qué peso
Los Core Web Vitals son tres y se evalúan en el percentil 75 de las cargas, separando móvil de escritorio. FID salió; INP lo reemplazó en 2024. web.dev/articles/vitals, consultado el 13-09-2026.
| Métrica | Bueno | Se evalúa en |
|---|---|---|
| LCP | ≤ 2,5 s | Percentil 75 |
| INP | ≤ 200 ms | Percentil 75 |
| CLS | ≤ 0,1 | Percentil 75 |
La puntuación de Lighthouse pesa otras cosas. Estos pesos salen del código fuente de la etiqueta v13.4.1, líneas 408 a 413, el 13-09-2026:
| Métrica | Peso | Tipo |
|---|---|---|
| TBT | 30 % | Laboratorio, sustituto de INP |
| LCP | 25 % | Core Web Vital |
| CLS | 25 % | Core Web Vital |
| FCP | 10 % | Laboratorio |
| Speed Index | 10 % | Laboratorio |
| INP | 0 % | Está en la configuración, no puntúa |
INP sí viene en la configuración por defecto de la 13.4.1, con peso cero: quien mide en laboratorio no mide INP, mide TBT. Y la página de Chrome que documenta esta tabla todavía la titulaba «Lighthouse 10» el 13-09-2026: los cinco pesos coinciden, el rótulo no.
Por qué CrUX no puede responder
La vía fácil sería el dato de campo: usuarios reales, gratis, de Google. No sirve.
| Herramienta | ¿Corte por ciudad? |
|---|---|
| CrUX API — campo | Ni por país |
| CrUX en BigQuery — campo | Solo país, nunca ciudad |
| PageSpeed API — mixto | No |
| Lighthouse CLI — laboratorio | Donde midas tú |
La unidad mínima de CrUX es el país: no hay corte por ciudad en ninguna parte. Y el umbral de popularidad no es público: la metodología dice «An exact number is not disclosed». Ni siquiera se puede calcular cuántos sitios quedarían fuera: hay que preguntarlos uno a uno y contar los vacíos.
Un tropiezo del camino: la API de PageSpeed Insights v5 sin clave devolvió 429 el 13-09-2026, con un error que declara quota_limit_value «0» sobre un proyecto compartido. La documentación no publica cuota para el uso sin clave, así que tampoco se puede afirmar que se reinicie mañana.
El protocolo, con los parámetros congelados
Si el dato es de laboratorio, el laboratorio se declara entero. Esto hay que fijar para que otro repita la medición:
| Parámetro | Valor |
|---|---|
| Medidor | Lighthouse 13.4.1 (CLI) |
| Navegador | Chromium 1228 headless |
| Perfil | Móvil, solo performance |
| User-Agent | Declarado y fijo |
| Throttling | simulate |
| Red | 150 ms RTT, 1638,4 Kbps |
| CPU | Ralentización ×4 |
| Corridas | 5 por sitio |
| Estadístico | Mediana y rango |
| Página | Home, URL canónica |
| ¿Arriba? | Chrome real, no curl |
| Contenido | Título y tamaño del DOM |
| Descarte | Corrida incompleta |
| Registro | benchmarkIndex, fetchTime |
De cada corrida se guardan además la URL final y el título: es lo que permite afirmar qué se midió. Y son cinco, no tres: la documentación de variabilidad del propio Lighthouse lo dice con número —«The median Lighthouse score of 5 runs is twice as stable as 1 run»— y lista siete fuentes de ruido, tres de impacto alto. Consultada el 13-09-2026.
El benchmarkIndex se registra porque la máquina cambia debajo de uno: en las nueve corridas originales osciló entre 4.203 y 4.751 —un 13 %— en el mismo equipo.
Lo que se rompió antes de medir
Aquí apareció el hallazgo, más incómodo que el promedio buscado. Se barrieron 49 dominios del Valle de Aburrá el 13-09-2026 con curl, con Chromium 1228 headless y con Chromium fingiendo ser un móvil. La pregunta «¿está el sitio arriba?» no tiene una respuesta. Tiene una por cliente.
| Resultado, medido el 13-09-2026 | N.º | Qué significa para el estudio |
|---|---|---|
Responden 200 a curl en el ápice | 42 | Entran, si se afirma el contenido |
Solo responden con www | 5 | Hay que canonicalizar o se pierden |
| Redirigen a otro dominio | 1 | Decidir si cuenta como el sitio |
Falsos negativos de curl | 2 | Habrían salido por error |
| Depende del User-Agent | 1 | El resultado es del cliente, no del sitio |
| 200 en cabecera, home rota | 1 | Un recolector lo da por sano |
| Bloqueado a este agente | 1 | No medible hoy |
| No cargan en ningún cliente | 3 | Salen, y se dice cuáles |
Las categorías se solapan y el total no suma 49: eso también es parte del hallazgo.
El caso que ordena lo demás es tigo.com.co, el mismo día y desde una conexión en Colombia: curl devuelve 403 con cualquier User-Agent; Chromium headless por defecto recibe una página de Cloudflare de 4.276 bytes que dice «Sorry, you have been blocked»; y Chromium con User-Agent móvil recibe el sitio real, 306.630 bytes.
El mismo dominio, el mismo día, tres respuestas: 403 para curl, «has sido bloqueado» para Chrome, y la página entera para Chrome fingiendo ser un móvil.
La consecuencia es fea: un medidor termina la corrida y entrega una puntuación perfectamente formada de una página que no era el sitio. De ahí que el protocolo exija registrar título y tamaño del DOM.
Y lo mismo desde otro ángulo: enka.com.co falla en curl por validación de certificado y entrega 829 KB de DOM real en Chrome. inexmoda.org.co da 403 a curl y carga entera. crystal.com.co responde 200 en la cabecera, su home devuelve 404 y no pinta nada.
El piloto: dos sitios, y ninguna cifra de ciudad
Solo se midieron los dos sitios cuyo contenido se pudo afirmar. Piloto: n = 2 sitios, 3 corridas cada uno —por debajo de las 5 del protocolo—, el 13-09-2026 entre las 15:09 y las 15:15 UTC.
| Corridas 1 / 2 / 3 | www.tennis.com.co | cidenet.com.co |
|---|---|---|
| Puntuación | 11 / 9 / 9 | 33 / 39 / 38 |
| LCP (s) | 38,21 / 39,07 / 51,29 | 39,60 / 16,05 / 16,73 |
| TBT (ms) | 820 / 897 / 1029 | 969 / 654 / 741 |
| CLS | 1,073 / 2,959 / 0,858 | 0,000 / 0,000 / 0,000 |
| Peso (MB) | 6,84 / 6,84 / 7,52 | 5,24 / 10,09 / 10,09 |
| Mediana | 9 (rango 9–11) | 38 (rango 33–39) |
La primera corrida de cidenet.com.co venía marcada como incompleta.
Se publican las tres corridas porque el ruido es el dato: el CLS de Tennis osciló entre 0,858 y 2,959 —factor 3,4— en la misma máquina y el mismo día.
Un tercer sitio, gruponutresa.com, salió del piloto: sus tres corridas venían incompletas y ese día el dominio da 403 a curl y un error de CloudFront a Chrome. No se sabe qué midieron, así que no se publican.
Con este n no sale un promedio de ciudad. Publicarlo sería el error que esta nota existe para no cometer.
Los sesgos, escritos antes de que los escriba otro
Cada uno con la dirección en la que empuja:
- Notoriedad. Empresas conocidas, no muestra aleatoria. Empuja hacia arriba.
- Tamaño. El 85,2 % del registro es micro y aquí casi no hay. Empuja hacia arriba.
- Página. Solo la home.
- Red y máquina. Una ruta, un equipo, y un
benchmarkIndexque se mueve un 13 %. - Laboratorio. El throttling simulado es un modelo, no una red colombiana medida.
- Tiempo. Una foto de un día.
- Cliente. El nuevo, y el que más duele: el User-Agent decide si un WAF te enseña el sitio, te bloquea o te sirve otra cosa. Dirección desconocida.
Lo que no sabemos
No sabemos cuánto tarda en cargar el sitio promedio de una empresa de Medellín. Tampoco sabemos:
- Cuántas empresas de Medellín tienen sitio web. Ningún registro público lo recoge.
- Qué porcentaje de esos sitios está en CrUX: el umbral no es público.
- Cuántas empresas hay hoy. La cifra citable es de 2022; el reparto por tamaño, de 2020.
- En cuántos de los 49 dominios cambia el resultado según el User-Agent. Tres configuraciones, y solo sobre los casos sospechosos: el sesgo está identificado, no cuantificado.
- Si los caídos ese día lo estaban de forma sostenida. Se midió una vez.
Haría falta clave de la CrUX API, cuenta de BigQuery, un marco muestral construido o comprado, medición de usuarios reales, y una batería de User-Agents.
Lo entregable hoy no es la cifra: es el instrumento, los parámetros congelados, y la advertencia de que una puntuación sin el título de la página cargada no significa nada.
El instrumento lo montó una casa de software de esta misma ciudad. Lo que hacemos desde aquí, y el resto de lo que hemos llegado a medir de este mercado, está en nuestra página de Medellín.
Esta nota sale de nuestro trabajo en Desarrollo web.