Referencia de códigos de estado HTTP
HTTP Status Reference
Explica cada código de estado con su significado según la especificación, su comportamiento de caché y los errores habituales al usarlo.
Una referencia con búsqueda de todos los códigos de estado HTTP: qué significa cada uno, qué RFC lo define, si una caché puede almacenarlo por defecto, y con qué cabecera tiene que enviarse. La búsqueda coincide con el código, el nombre y el resumen, y acepta consultas en inglés, coreano, japonés, chino simplificado y español.
Busca en el código, el nombre, el resumen y las notas, en inglés, coreano, japonés, chino simplificado y español.
404 Not Found
404Not Found
No hay ningún recurso en esta URL.
Error del cliente — La culpa es de la solicitud. Reintentarla sin cambios fallará igual.
RFC 9110 §15.5.5Cacheable por omisión
sí
Se puede guardar en caché por omisión: un hecho que sorprende a todo el mundo la primera vez que una CDN sigue devolviendo un 404 para una página que ya existe.
62 de 62 códigos
| Código | Nombre | Significa | Cacheable |
|---|---|---|---|
| 100 | Continue | El cliente puede continuar y enviar el cuerpo de la solicitud. | no |
| 101 | Switching Protocols | El servidor está cambiando al protocolo que pidió el cliente. | no |
| 102 | Processing | WebDAV: la solicitud se está procesando. | no |
| 103 | Early Hints | Encabezados preliminares, para que el cliente empiece a precargar antes de la respuesta real. | no |
| 200 | OK | La solicitud salió bien. | sí |
| 201 | Created | Se creó un recurso nuevo. | no |
| 202 | Accepted | La solicitud se aceptó, pero todavía no se ha ejecutado. | no |
| 203 | Non-Authoritative Information | Un proxy modificó la respuesta que está retransmitiendo. | sí |
| 204 | No Content | Éxito, y a propósito no hay cuerpo. | sí |
| 205 | Reset Content | Éxito; el cliente debería vaciar el formulario que envió. | no |
| 206 | Partial Content | El rango de bytes que se pidió. | sí |
| 207 | Multi-Status | WebDAV: un cuerpo XML con un estado por cada subsolicitud. | no |
| 208 | Already Reported | WebDAV: este miembro ya se había enumerado. | no |
| 226 | IM Used | La respuesta es el resultado de aplicar manipulaciones de instancia. | no |
| 300 | Multiple Choices | Hay varias representaciones; elige una. | sí |
| 301 | Moved Permanently | El recurso tiene una URL nueva, para siempre. | sí |
| 302 | Found | Una redirección temporal. | no |
| 303 | See Other | Ve a buscar la otra URL con GET. | no |
| 304 | Not Modified | La copia en caché sigue sirviendo. | no |
| 305 | Use Proxy | Obsoleto: el cliente debería usar el proxy indicado. | no |
| 307 | Temporary Redirect | Una redirección temporal que conserva el método. | no |
| 308 | Permanent Redirect | Una redirección permanente que conserva el método. | sí |
| 400 | Bad Request | La solicitud está mal formada y el servidor no la va a procesar. | no |
| 401 | Unauthorized | Hace falta autenticarse, o las credenciales que se dieron fueron rechazadas. | no |
| 402 | Payment Required | Reservado, y nunca se le dio un significado. | no |
| 403 | Forbidden | El servidor entendió, y se niega. | no |
| 404 | Not Found | No hay ningún recurso en esta URL. | sí |
| 405 | Method Not Allowed | La URL existe; este método no le corresponde. | sí |
| 406 | Not Acceptable | Nada de lo que el servidor puede producir encaja con el encabezado `Accept`. | no |
| 407 | Proxy Authentication Required | El proxy pide credenciales. | no |
| 408 | Request Timeout | El cliente tardó demasiado en enviar la solicitud. | no |
| 409 | Conflict | La solicitud choca con el estado actual. | no |
| 410 | Gone | Estuvo aquí y a propósito no va a volver. | sí |
| 411 | Length Required | Hace falta un encabezado `Content-Length`. | no |
| 412 | Precondition Failed | No se cumplió una condición `If-Match` o `If-Unmodified-Since`. | no |
| 413 | Content Too Large | El cuerpo es más grande de lo que el servidor acepta. | no |
| 414 | URI Too Long | La URL es más larga de lo que el servidor acepta. | sí |
| 415 | Unsupported Media Type | El `Content-Type` del cuerpo no es de los que el servidor maneja. | no |
| 416 | Range Not Satisfiable | El rango que se pidió cae fuera del recurso. | no |
| 417 | Expectation Failed | No se puede cumplir el encabezado `Expect`. | no |
| 418 | I'm a teapot | Una broma del Día de los Inocentes de 1998 que nunca se fue. | no |
| 421 | Misdirected Request | Este servidor no puede producir una respuesta para esta autoridad. | no |
| 422 | Unprocessable Content | Bien formado, pero semánticamente equivocado. | no |
| 423 | Locked | WebDAV: el recurso está bloqueado. | no |
| 424 | Failed Dependency | WebDAV: una solicitud anterior de la secuencia falló. | no |
| 425 | Too Early | El servidor no quiere arriesgarse a repetir una solicitud enviada como datos tempranos. | no |
| 426 | Upgrade Required | El cliente tiene que cambiar de protocolo. | no |
| 428 | Precondition Required | El servidor exige que la solicitud sea condicional. | no |
| 429 | Too Many Requests | Límite de peticiones alcanzado. | no |
| 431 | Request Header Fields Too Large | Los encabezados son demasiado grandes. | no |
| 451 | Unavailable For Legal Reasons | Bloqueado por una exigencia legal. | sí |
| 500 | Internal Server Error | Algo salió mal y el servidor no tiene nada más concreto que decir. | no |
| 501 | Not Implemented | El servidor no admite ese método en absoluto. | sí |
| 502 | Bad Gateway | Un servidor de más arriba mandó algo que no vale. | no |
| 503 | Service Unavailable | Temporalmente incapaz de atender la solicitud. | no |
| 504 | Gateway Timeout | Un servidor de más arriba no respondió a tiempo. | no |
| 505 | HTTP Version Not Supported | No se admite la versión de HTTP que trae la solicitud. | no |
| 506 | Variant Also Negotiates | Una mala configuración de la negociación de contenido. | no |
| 507 | Insufficient Storage | WebDAV: no hay sitio suficiente para guardar la representación. | no |
| 508 | Loop Detected | WebDAV: un bucle infinito mientras se procesaba. | no |
| 510 | Not Extended | Hacen falta más extensiones. | no |
| 511 | Network Authentication Required | Un portal cautivo quiere que inicies sesión. | no |
Los que se confunden
- 401 significa «no sé quién eres»: manda credenciales y vuelve a intentarlo. 403 significa «sé quién eres y la respuesta es no». Si las credenciales eran válidas pero insuficientes, es 403.
- El 400 es para una solicitud que el servidor no puede analizar. El 422 es para una que analizó perfectamente y con la que no está de acuerdo. Un cliente puede reintentar un 422 con otros datos; un 400 suele querer decir que el propio cliente está roto.
- El primer eje es la permanencia (301/308 permanentes, 302/307 temporales) y el segundo es la conservación del método (307/308 lo conservan, 301/302 históricamente no). Si dudas en una API, usa 307 o 308.
- Los dos vienen de un proxy y no de tu aplicación. El 502 es «el de arriba contestó un sinsentido o se murió»; el 504 es «el de arriba nunca contestó». El segundo es un tiempo de espera que puedes ajustar; el primero es una caída que tienes que arreglar.
- Los dos quieren decir que ahí no hay nada. El 410 quiere decir además que no volverá nunca, y los buscadores actúan en consecuencia en días y no en meses.
- El 405 es «en esta URL no, pero aquí está lo que sí» —y debe mandar un encabezado `Allow`—. El 501 es «este servidor no implementa ese método en ninguna parte».
Cómo se usa
Busca o filtra por clase
Escribe un número, un nombre o el problema que tienes: «gateway», «rate limit», «unauthorized». También en español: «autenticación» lleva al 401 y «no encontrado» al 404, igual que «authentication» y «not found». O acota a 4xx y lee hacia abajo.
Abre uno para el detalle
El panel de detalle da la especificación que lo define, si es cacheable heurísticamente, y cualquier cabecera que la respuesta esté obligada a llevar: un 405 sin `Allow` y un 301 sin `Location` están ambos incompletos.
Lee los pares confundibles
La sección del final cubre los que se eligen mal: 401 frente a 403, 302 frente a 307, 502 frente a 504.
Preguntas frecuentes
¿Cuál es la diferencia entre 401 y 403?
401 significa que la petición no tenía credenciales válidas y debe incluir una cabecera `WWW-Authenticate` diciendo cómo proporcionarlas. 403 significa que las credenciales se entendieron y no son suficientes. Enviar 401 a un usuario con sesión iniciada pero sin permiso es el error común.
¿Por qué mi CDN está cacheando un 404?
Porque puede. RFC 9110 §15.1 lista los códigos de estado que una caché puede almacenar heurísticamente cuando nada más dice lo contrario, y 404 está en ella. Una página que has publicado después sigue sin encontrarse hasta que la caché expira o la purgas: envía `Cache-Control: no-store` en un 404 que esperas que se convierta en 200.
¿302 o 307?
307 si quieres que el método se conserve. Históricamente los clientes convertían un POST en GET ante un 302 —la especificación no decía que lo hicieran, pero todos lo hacían—, así que 307 y 308 existen para decir «mismo método, nueva URL» sin ambigüedad.
¿Puedo inventar mi propio código de estado?
Puedes enviar cualquier cosa, y los clientes tratarán un código desconocido como el miembro genérico de su clase: un 499 se maneja como un 400. Pero las cachés, los proxies y las bibliotecas toman decisiones según la clase, así que un código no registrado no te da nada que una cabecera no pudiera transportar mejor.
Puede recibir de
Búsqueda de tipos MIME
MIME Type Lookup
Busca el tipo MIME de una extensión o al revés, y deduce el tipo a partir de los bytes del archivo.
Inspector de cabeceras HTTP
HTTP Header Inspector
Pide una URL y muestra las cabeceras de respuesta completas, la cadena de redirecciones, los tiempos y la compresión usada.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Formateador y validador de YAML
YAML Formatter & Validator
Reindenta el YAML de forma uniforme, lo valida y señala los tabuladores y las anclas que rompen los analizadores.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Constructor de peticiones HTTP
HTTP Request Builder
Compone y envía una petición GET, POST, PUT, PATCH, DELETE o HEAD con cabeceras y cuerpo propios, y muestra el estado, las cabeceras, el cuerpo y el tiempo, sin reenviar nunca Cookie ni Authorization.
Inspector de cabeceras HTTP
HTTP Header Inspector
Pide una URL y muestra las cabeceras de respuesta completas, la cadena de redirecciones, los tiempos y la compresión usada.
Búsqueda de tipos MIME
MIME Type Lookup
Busca el tipo MIME de una extensión o al revés, y deduce el tipo a partir de los bytes del archivo.
Codificador y decodificador Base64
Base64 Encoder & Decoder
Codifica y decodifica Base64 y Base64URL, para texto o archivos, tratando UTF-8 correctamente.
curl a código
curl to Code
Convierte un comando curl en fetch, axios, requests de Python, Go, PHP o PowerShell.
Hash de un texto
Text Hash
Calcula MD5, SHA-1, SHA-256, SHA-384, SHA-512 y CRC-32 de una cadena, con salida opcional en mayúsculas o en Base64.