El error 416 aparece cuando el cliente solicita una parte específica (un rango) de un archivo o recurso usando la cabecera Range, pero ese rango no puede ser cumplido por el servidor.
Es decir: el cliente pidió bytes fuera del tamaño real del archivo, o el servidor no puede servir ese rango.
Este error es muy común en:
-
Descargas
-
Videos y audios con reproducción parcial
-
APIs de archivos
-
Peticiones que requieren rangos (Resume download)
Causas más comunes
-
El rango solicitado excede el tamaño real del archivo.
Ejemplo: pedir bytes del 5000–6000 en un archivo de solo 4000 bytes. -
Clientes multimedia piden rangos incorrectos al hacer “seek” en videos o audios.
-
El archivo está vacío o tiene tamaño 0 (no se puede servir nada).
-
El servidor no tiene habilitado el soporte para rangos (
Accept-Ranges). -
Descargas interrumpidas que intentan reanudarse con un rango inválido.
-
Manipulación errónea de la cabecera
Rangepor parte del navegador o una app. -
El archivo fue modificado después de iniciar la descarga, causando inconsistencias.
Soluciones recomendadas
1) Verificar el tamaño real del archivo
Si el cliente solicita:
pero el archivo mide 6900 bytes → 416.
Solución:
Calcular y pedir un rango válido.
2) Habilitar soporte de rangos en el servidor
Apache:
Asegúrate de que no esté deshabilitado:
Nginx:
Debe tener:
y permitir rangos correctamente.
3) Evitar reanudar descargas corruptas
Si un cliente intenta continuar una descarga:
pero el archivo cambió o tiene otro tamaño → 416.
Solución: volver a descargar desde cero.
4) Revisar servidores de streaming
Errores comunes en:
-
Videos MP4
-
Audio MP3
-
Streaming HLS / DASH
Asegúrate de que el archivo no esté dañado ni incompleto.
5) Corregir peticiones en aplicaciones o APIs
Ejemplos de rangos mal formados:
Debes validar la entrada antes de enviarla.
6) Verificar que el archivo no esté vacío
Si size = 0, cualquier rango es inválido → 416.
Solución:
Revisar por qué el archivo está vacío o incompleto.
7) Enviar respuesta correcta de error
El servidor debe incluir:
Ejemplo:
Esto indica cuál es el rango válido máximo.
Consejo Pro
Cuando implementes descargas o streaming:
-
Valida rangos por adelantado
-
Usa chunks (fragmentos) de tamaño fijo
-
Implementa reanudación segura
-
Siempre devuelve cabeceras
Accept-RangesyContent-Rangecorrectas
Esto evita errores 416 y mejora la experiencia de descarga y reproducción.