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.

FuenteQué campos trae
pb3w-3vmc, Cámara de MedellínAño, CIIU, descripción, 22 columnas de comuna. Agregados.
bzeh-ecuk, por tamañoAño, municipio, conteos por tamaño. Agregados.
y69t-3r2t, nacionalRazón social, NIT, municipio, CIIU 1 a 4.
Beneficio RUES, Cámara de MedellínNIT, 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ñoEmpresas (2020)% del total
Micro83.05585,2 %
Pequeña10.59710,9 %
Mediana2.9743,0 %
Grande9080,93 %
Total97.534100 %

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étricaBuenoSe evalúa en
LCP≤ 2,5 sPercentil 75
INP≤ 200 msPercentil 75
CLS≤ 0,1Percentil 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étricaPesoTipo
TBT30 %Laboratorio, sustituto de INP
LCP25 %Core Web Vital
CLS25 %Core Web Vital
FCP10 %Laboratorio
Speed Index10 %Laboratorio
INP0 %Está en la configuración, no puntúa

INP 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 — campoNi por país
CrUX en BigQuery — campoSolo país, nunca ciudad
PageSpeed API — mixtoNo
Lighthouse CLI — laboratorioDonde 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ámetroValor
MedidorLighthouse 13.4.1 (CLI)
NavegadorChromium 1228 headless
PerfilMóvil, solo performance
User-AgentDeclarado y fijo
Throttlingsimulate
Red150 ms RTT, 1638,4 Kbps
CPURalentización ×4
Corridas5 por sitio
EstadísticoMediana y rango
PáginaHome, URL canónica
¿Arriba?Chrome real, no curl
ContenidoTítulo y tamaño del DOM
DescarteCorrida incompleta
RegistrobenchmarkIndex, 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-2026N.ºQué significa para el estudio
Responden 200 a curl en el ápice42Entran, si se afirma el contenido
Solo responden con www5Hay que canonicalizar o se pierden
Redirigen a otro dominio1Decidir si cuenta como el sitio
Falsos negativos de curl2Habrían salido por error
Depende del User-Agent1El resultado es del cliente, no del sitio
200 en cabecera, home rota1Un recolector lo da por sano
Bloqueado a este agente1No medible hoy
No cargan en ningún cliente3Salen, 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 / 3www.tennis.com.cocidenet.com.co
Puntuación11 / 9 / 933 / 39 / 38
LCP (s)38,21 / 39,07 / 51,2939,60 / 16,05 / 16,73
TBT (ms)820 / 897 / 1029969 / 654 / 741
CLS1,073 / 2,959 / 0,8580,000 / 0,000 / 0,000
Peso (MB)6,84 / 6,84 / 7,525,24 / 10,09 / 10,09
Mediana9 (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 benchmarkIndex que 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.

← todas las notas