Esta es una referencia con buscador de todos los códigos de estado de respuesta HTTP estándar del registro de IANA, desde <code>100 Continue</code> hasta <code>511 Network Authentication Required</code>. Cada código incluye una explicación en lenguaje sencillo, consejos sobre cuándo debe enviarlo un servidor o una API, las cabeceras de respuesta que lo acompañan y un enlace al RFC que lo define. También se incluyen, claramente marcados, los códigos no oficiales más comunes: el <code>499</code> de nginx, el <code>419</code> de Laravel y los <code>520</code>–<code>526</code> de Cloudflare. Busca por número, nombre o palabra clave, como "redirect" o "rate limit".
Cómo buscar un código de estado
- 1Escribe un código (
404), su comienzo (40), una clase (4xx), un nombre (teapot) o una palabra clave (rate limit, cache, Retry-After). - 2Reduce la lista a una sola clase con los filtros 1xx–5xx, u oculta los códigos no oficiales.
- 3Selecciona un código —con el ratón o las flechas del teclado— para ver qué significa, cuándo usarlo, las cabeceras relacionadas y la especificación.
- 4Copia el código o la línea de estado completa, o comparte la URL de la página: termina en
#404 y se abre en ese código.
Las cinco clases de códigos de estado
Los clientes que reciben un código que no reconocen lo tratan como el código x00 de su clase, así que un 499 desconocido se maneja como un 400 y un 299 desconocido como un 200. Por eso se pueden introducir códigos nuevos sin romper el software antiguo.
- 1xx Informativos
- Respuestas provisionales enviadas antes de la final: 100 Continue, 101 Switching Protocols para WebSockets, 103 Early Hints para precargar recursos.
- 2xx Éxito
- La petición funcionó. 200 OK es el código por defecto; 201 Created y 204 No Content indican con más precisión lo que ocurrió.
- 3xx Redirección
- El cliente debe buscar en otro sitio, normalmente en la URL de la cabecera Location, o, en el caso de 304 Not Modified, usar su copia en caché.
- 4xx Error del cliente
- La petición era incorrecta: mal formada, sin autenticar, prohibida, para algo que no existe o demasiado frecuente. Reintentarla sin cambios no servirá.
- 5xx Error del servidor
- Puede que la petición fuera correcta, pero el servidor, o algo detrás de él, falló. Suelen ser temporales y conviene reintentar con espera progresiva (back-off).
Cómo elegir el código adecuado para una API
La mayoría de las API solo necesitan una docena de códigos. Para el éxito: 200 con cuerpo, 201 con cabecera Location cuando se creó algo, 202 cuando el trabajo se hará más tarde y 204 cuando no hay nada que devolver. Para errores del cliente: 400 para peticiones mal formadas, 422 para datos bien formados que no pasan la validación, 401 cuando faltan credenciales o no son válidas, 403 cuando son válidas pero no suficientes, 404 para recursos desconocidos, 409 para conflictos como un correo duplicado y 429 para limitar la tasa de peticiones. Para errores del servidor: 500 para bugs, y 502, 503 y 504 para fallos en la infraestructura intermedia.
Sea cual sea el código, devuelve un cuerpo que lo explique. RFC 9457 "Problem Details" (application/problem+json) da a ese cuerpo una forma estándar con los campos type, title, status y detail. Nunca devuelvas 200 con un error dentro del cuerpo: las cachés, la monitorización y la lógica de reintentos leen el código de estado, no tu JSON. Para formatear ese cuerpo, usa el formateador JSON.
Códigos que se suelen confundir
- 401 vs 403
- 401 Unauthorized significa "no sé quién eres": inicia sesión o envía un token válido. 403 Forbidden significa "sé quién eres y no puedes hacer esto".
- 301 vs 302 vs 307 vs 308
- 301 y 308 son permanentes y transfieren el posicionamiento a la nueva URL; 302 y 307 son temporales. 307 y 308 garantizan que se mantienen el método y el cuerpo, mientras que los navegadores convierten un POST en GET con 301 y 302.
- 400 vs 422
- 400 es para peticiones que el servidor no puede analizar en absoluto; 422 para JSON válido cuyo contenido incumple las reglas, como un campo obligatorio que falta.
- 404 vs 410
- 404 dice que aquí no hay nada ahora; 410 dice que hubo algo y se eliminó a propósito, lo que hace que los buscadores lo retiren antes.
- 502 vs 504
- Ambos vienen de un proxy o balanceador de carga. 502 significa que el servidor upstream respondió con algo no válido o cerró la conexión; 504, que no respondió a tiempo.
- 500 vs 503
- 500 es un fallo inesperado, normalmente un bug. 503 es una situación conocida y temporal —mantenimiento o sobrecarga— y debería incluir Retry-After.
Códigos de estado y SEO
Los buscadores leen los códigos de estado con atención. Usa 301 o 308 cuando una página se mueve definitivamente, para que su posicionamiento se mueva con ella; un 302 les indica que la URL antigua sigue siendo la que deben indexar. Sirve un 404 o 410 real para las páginas que faltan: una página de "no encontrado" que devuelve 200 es un "soft 404" y desperdicia presupuesto de rastreo. Durante el mantenimiento, devuelve 503 con Retry-After para que las páginas no se desindexen. Controla qué pueden visitar los rastreadores con el generador de robots.txt.
Las respuestas con 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 451 y 501 pueden guardarse en caché en navegadores y CDN incluso sin cabeceras de frescura explícitas, así que un 404 o 301 accidental puede quedarse mucho tiempo; configura Cache-Control a conciencia en estos casos.
Códigos no oficiales que verás en los logs
Algunos códigos no están en el registro de IANA pero son habituales en la práctica. nginx registra 499 cuando el cliente corta antes de la respuesta y 444 cuando cerró una conexión sin responder. Cloudflare devuelve 520–526 cuando no obtiene una respuesta correcta del servidor de origen: 521 significa que el origen rechazó la conexión, 522 que se agotó el tiempo, 524 que tardó más de 100 segundos en responder y 525/526 que falló el TLS hacia el origen. Laravel envía 419 cuando ha caducado un token CSRF. Estos códigos aparecen marcados como "no oficial" en la lista y se pueden ocultar.
- ¿Qué es un código de estado HTTP?
- Un número de tres dígitos al comienzo de cada respuesta HTTP que le dice al cliente cómo fue la petición. El primer dígito indica la clase: 1xx informativo, 2xx éxito, 3xx redirección, 4xx error del cliente y 5xx error del servidor.
- ¿Qué diferencia hay entre 401 y 403?
- 401 Unauthorized significa que la petición no tiene credenciales válidas, así que iniciar sesión puede ayudar. 403 Forbidden significa que el servidor sabe quién eres pero no tienes permiso, así que volver a iniciar sesión no servirá.
- ¿Debo usar 301 o 302 para una redirección?
- Usa 301 (o 308) cuando el cambio es permanente, como una URL modificada o una migración de dominio; los buscadores transfieren el posicionamiento a la nueva dirección. Usa 302 (o 307) cuando la URL original vaya a volver.
- ¿Qué significa 429 Too Many Requests?
- El cliente está siendo limitado por exceso de peticiones. Espera antes de reintentar: la cabecera Retry-After, si existe, indica cuántos segundos o hasta qué hora. Los clientes deberían espaciar los reintentos de forma exponencial en lugar de reintentar de inmediato.
- ¿Qué causa un error 502 Bad Gateway?
- Un proxy, balanceador de carga o CDN delante del sitio recibió una respuesta no válida del servidor que tiene detrás, normalmente porque la aplicación se cayó, se reinició o cerró la conexión. La solución está en el servidor, en los logs de la aplicación upstream.
- ¿Qué es el código de estado 499?
- Un código propio de nginx que se registra cuando el cliente cerró la conexión antes de que nginx pudiera enviar la respuesta. El cliente nunca lo recibe. Muchos 499 suelen indicar que el backend es demasiado lento y los clientes se rinden.
- ¿Es 418 I'm a teapot un código de estado real?
- Nació como una broma del Día de los Inocentes anglosajón en el RFC 2324 (1998). No está pensado para un uso real, pero como tanto software lo implementa, el RFC 9110 reserva el 418 para que nunca se asigne a otra cosa.
- ¿Cuántos códigos de estado HTTP hay?
- El registro de IANA define unos 63 códigos, incluidos algunos reservados u obsoletos como 306 y 305. Son posibles los códigos del 100 al 599, y los clientes tratan cualquier código desconocido como el código x00 de su clase.