Códigos de estado HTTP
Busca cualquier código de respuesta HTTP por número o por palabra y descubre qué significa, cuándo lo devuelve un servidor y cómo actuar. Incluye todos los códigos registrados en el estándar, más los de WebDAV y algunos históricos.
| Código | Nombre | Significado |
|---|---|---|
| 100 | Continue Continuar | El servidor recibió las cabeceras y el cliente puede enviar el cuerpo de la petición (se usa con Expect: 100-continue). |
| 101 | Switching Protocols Cambiando de protocolo | El servidor acepta cambiar de protocolo, por ejemplo de HTTP a WebSocket. |
| 102 | Processing Procesando | WebDAV: la petición se está procesando y aún no hay respuesta. Hoy en desuso. |
| 103 | Early Hints Pistas tempranas | Envía cabeceras Link anticipadas para que el navegador precargue recursos mientras se genera la respuesta. |
| 200 | OK Correcto | La petición ha tenido éxito. Es la respuesta normal de una página que carga bien. |
| 201 | Created Creado | Se ha creado un recurso nuevo (típico tras un POST en una API). Suele incluir la cabecera Location. |
| 202 | Accepted Aceptado | La petición se aceptó, pero se procesará más tarde (tareas en cola). |
| 203 | Non-Authoritative Information Información no autoritativa | La respuesta fue modificada por un proxy respecto a la original. |
| 204 | No Content Sin contenido | Éxito sin cuerpo de respuesta; habitual en DELETE o al guardar sin devolver datos. |
| 205 | Reset Content Restablecer contenido | Éxito; el cliente debe limpiar el formulario o la vista. |
| 206 | Partial Content Contenido parcial | Se devuelve solo un rango del archivo (cabecera Range): descargas reanudables y vídeo. |
| 207 | Multi-Status Multiestado | WebDAV: el cuerpo contiene varios códigos de estado para distintas operaciones. |
| 208 | Already Reported Ya informado | WebDAV: miembros ya listados en una respuesta anterior. |
| 226 | IM Used IM usado | El servidor aplicó manipulaciones de instancia (codificación delta) a la respuesta. |
| 300 | Multiple Choices Múltiples opciones | Hay varias representaciones del recurso y el cliente debe elegir. Poco usado. |
| 301 | Moved Permanently Movido permanentemente | Redirección permanente: el recurso tiene una nueva URL definitiva. Los buscadores transfieren la relevancia a la nueva dirección. |
| 302 | Found Encontrado (redirección temporal) | Redirección temporal. Los navegadores suelen cambiar POST a GET al seguirla. |
| 303 | See Other Ver otro | Redirige a otra URL con GET; se usa tras enviar un formulario (patrón POST-redirect-GET). |
| 304 | Not Modified No modificado | El recurso no ha cambiado desde la versión en caché; no se envía de nuevo el cuerpo. |
| 305 | Use Proxy Usar proxy | Obsoleto por motivos de seguridad. |
| 307 | Temporary Redirect Redirección temporal | Como 302, pero obliga a repetir la petición con el mismo método y cuerpo. |
| 308 | Permanent Redirect Redirección permanente | Como 301, pero conservando el método (un POST sigue siendo POST). |
| 400 | Bad Request Petición incorrecta | La petición está mal formada: JSON inválido, parámetros erróneos, cabeceras corruptas. |
| 401 | Unauthorized No autorizado | Falta autenticación o las credenciales no son válidas. Debe acompañarse de WWW-Authenticate. |
| 402 | Payment Required Pago requerido | Reservado para uso futuro; algunas API lo usan cuando falta un pago o se agotó el crédito. |
| 403 | Forbidden Prohibido | El servidor entiende la petición pero se niega a atenderla: el usuario no tiene permiso, aunque esté identificado. |
| 404 | Not Found No encontrado | No existe ningún recurso en esa URL. Es el error más común de la web. |
| 405 | Method Not Allowed Método no permitido | El método (GET, POST, PUT…) no está admitido para esa URL. Debe indicar los permitidos en Allow. |
| 406 | Not Acceptable No aceptable | No hay una representación que cumpla las cabeceras Accept del cliente. |
| 407 | Proxy Authentication Required Autenticación de proxy requerida | Como 401, pero la autenticación la pide un proxy. |
| 408 | Request Timeout Tiempo de espera agotado | El cliente tardó demasiado en enviar la petición completa. |
| 409 | Conflict Conflicto | La petición choca con el estado actual del recurso (edición simultánea, registro duplicado). |
| 410 | Gone Eliminado | El recurso existió pero se eliminó de forma permanente. Los buscadores lo retiran antes que un 404. |
| 411 | Length Required Longitud requerida | Falta la cabecera Content-Length. |
| 412 | Precondition Failed Falló la precondición | No se cumple una condición de las cabeceras (If-Match, If-Unmodified-Since). |
| 413 | Content Too Large Contenido demasiado grande | El cuerpo supera el límite del servidor (por ejemplo, al subir un archivo muy pesado). |
| 414 | URI Too Long URI demasiado larga | La URL es más larga de lo que el servidor acepta. |
| 415 | Unsupported Media Type Tipo de contenido no admitido | El formato del cuerpo (Content-Type) no es compatible, p. ej. enviar XML a una API que espera JSON. |
| 416 | Range Not Satisfiable Rango no satisfactorio | El rango solicitado está fuera del tamaño del archivo. |
| 417 | Expectation Failed Expectativa fallida | El servidor no puede cumplir la cabecera Expect. |
| 418 | I'm a teapot Soy una tetera | Broma del 1 de abril de 1998 (RFC 2324). Algunos servicios lo usan para rechazar bots. |
| 421 | Misdirected Request Petición mal dirigida | La petición llegó a un servidor que no puede responder para ese dominio (HTTP/2 y certificados compartidos). |
| 422 | Unprocessable Content Contenido no procesable | La sintaxis es correcta pero los datos no superan la validación (campo obligatorio vacío, email inválido). |
| 423 | Locked Bloqueado | WebDAV: el recurso está bloqueado. |
| 424 | Failed Dependency Dependencia fallida | WebDAV: falló porque falló otra operación de la que dependía. |
| 425 | Too Early Demasiado pronto | El servidor no procesa una petición que podría repetirse (datos tempranos de TLS 1.3). |
| 426 | Upgrade Required Actualización requerida | El cliente debe cambiar a otro protocolo, indicado en Upgrade. |
| 428 | Precondition Required Precondición requerida | El servidor exige peticiones condicionales para evitar sobrescrituras. |
| 429 | Too Many Requests Demasiadas peticiones | Se superó el límite de peticiones (rate limit). La cabecera Retry-After indica cuándo reintentar. |
| 431 | Request Header Fields Too Large Cabeceras demasiado grandes | Las cabeceras (a menudo las cookies) son demasiado grandes. |
| 451 | Unavailable For Legal Reasons No disponible por motivos legales | El contenido está bloqueado por orden legal o censura. El número alude a «Fahrenheit 451». |
| 500 | Internal Server Error Error interno del servidor | Error genérico en el servidor: excepción no controlada, fallo de configuración o de código. |
| 501 | Not Implemented No implementado | El servidor no admite la funcionalidad necesaria (por ejemplo, un método desconocido). |
| 502 | Bad Gateway Puerta de enlace incorrecta | Un proxy o CDN recibió una respuesta inválida del servidor de origen (caído o mal configurado). |
| 503 | Service Unavailable Servicio no disponible | El servidor está sobrecargado o en mantenimiento. Es temporal; puede incluir Retry-After. |
| 504 | Gateway Timeout Tiempo de espera de la puerta de enlace | El proxy o CDN no recibió respuesta del origen a tiempo. |
| 505 | HTTP Version Not Supported Versión de HTTP no compatible | El servidor no admite la versión de HTTP de la petición. |
| 506 | Variant Also Negotiates La variante también negocia | Error de configuración en la negociación de contenido. |
| 507 | Insufficient Storage Almacenamiento insuficiente | WebDAV: no hay espacio para completar la operación. |
| 508 | Loop Detected Bucle detectado | WebDAV: se detectó un bucle infinito al procesar. |
| 510 | Not Extended No extendido | Faltan extensiones requeridas en la petición. Obsoleto. |
| 511 | Network Authentication Required Autenticación de red requerida | Hay que identificarse para acceder a la red: portales cautivos de wifi en hoteles y aeropuertos. |
Cómo usar esta lista
Escribe el número (por ejemplo 50 muestra todos los que empiezan por 50) o una palabra clave en español o inglés, como «caché», «redirección» o «timeout». Los botones filtran por familia. Cada fila muestra el nombre oficial en inglés, tal como aparece en las herramientas de desarrollo del navegador y en los registros del servidor, y su traducción.
Las cinco familias de códigos
- 1xx, informativas: respuestas provisionales; la petición continúa.
- 2xx, éxito: la petición se recibió, entendió y aceptó.
- 3xx, redirección: hace falta otra acción, normalmente ir a otra URL.
- 4xx, error del cliente: la petición tiene un problema (URL inexistente, falta de permisos, datos inválidos). Repetirla igual no servirá.
- 5xx, error del servidor: la petición parecía válida, pero el servidor falló. Puede funcionar más tarde.
Los nombres siguen el estándar actual de HTTP (RFC 9110). Algunos se renombraron: el antiguo «Request Entity Too Large» es ahora 413 «Content Too Large» y el 422 pasó de «Unprocessable Entity» a «Unprocessable Content».
Los códigos más importantes, explicados
200 OK
Todo ha ido bien. Ojo con los «soft 404»: páginas de error que devuelven 200. Google las detecta y las trata como errores, así que una página inexistente debe devolver 404 o 410.
301 y 308: redirección permanente
Úsalas al cambiar URL o migrar dominio. Evita cadenas (A → B → C) y bucles: cada salto añade latencia. Para revisar el destino y sus parámetros, el analizador de URL descompone cada dirección.
304 Not Modified
No es un error: indica que el navegador puede usar su copia en caché. Un sitio bien configurado devuelve muchos 304 en visitas repetidas, lo que ahorra datos y acelera la carga.
401, 403 y 404
401 = no identificado; 403 = identificado pero sin permiso (o bloqueado por el servidor, un WAF o los permisos de archivos; revisa los valores con la calculadora chmod); 404 = no existe. Algunas API devuelven 404 en lugar de 403 para no revelar que un recurso existe.
429 Too Many Requests
Límite de frecuencia. En tus integraciones, respeta Retry-After y aplica reintentos con espera exponencial (1 s, 2 s, 4 s…).
500, 502, 503 y 504
500 es un fallo de la propia aplicación; 502 y 504 suelen aparecer cuando hay un proxy, balanceador o CDN delante y el servidor de origen falla o tarda; 503 indica sobrecarga o mantenimiento. Para mantenimientos planificados, devuelve 503 con Retry-After: los buscadores entienden que es temporal y no retiran las páginas del índice. Si el problema afecta a /robots.txt, Google puede detener el rastreo; tienes más detalles en el generador de robots.txt.
Códigos recomendados en una API REST
| Operación | Éxito | Errores típicos |
|---|---|---|
| GET de un recurso | 200 | 404, 401, 403 |
| POST para crear | 201 | 400, 409, 422 |
| PUT / PATCH | 200 o 204 | 400, 404, 409, 412 |
| DELETE | 204 | 404, 403 |
| Tarea asíncrona | 202 | 429, 503 |
Acompaña los errores de un cuerpo JSON con un mensaje claro; puedes revisarlo con formatear JSON. Y si un 401 se debe a un token caducado, decodificar JWT te muestra su fecha de expiración.
Preguntas frecuentes
¿Qué diferencia hay entre un error 401 y un 403?
El 401 indica que no te has identificado o que tus credenciales no son válidas: iniciar sesión puede resolverlo. El 403 significa que el servidor sabe quién eres, pero no tienes permiso para ese recurso.
¿Es mejor usar 301 o 302 para una redirección?
Usa 301 (o 308) cuando el cambio de URL es definitivo, por ejemplo al migrar un dominio: los buscadores trasladan la relevancia a la nueva dirección. Usa 302 (o 307) para redirecciones temporales, como una página de mantenimiento.
¿Un error 404 perjudica el SEO?
No por sí mismo: es normal que existan URL que ya no están. Lo que conviene evitar son los enlaces internos rotos y los 404 en páginas que tenían tráfico o enlaces; en ese caso, redirige con un 301 a la página equivalente.
¿Qué hago si veo un error 500 en una web?
Como visitante, solo puedes recargar más tarde: el problema está en el servidor. Si la web es tuya, revisa el registro de errores (error.log o el de PHP/Node), los últimos cambios de código o plugins y los permisos de archivos.
¿Qué significa el error 429?
Que has hecho demasiadas peticiones en poco tiempo y el servidor te limita. Espera el tiempo indicado en la cabecera Retry-After o reduce la frecuencia de tus llamadas a la API.