También disponible en: English · Português · Français · العربية
Códigos de estado HTTP
La lista completa del registro de IANA, con los cuatro estados que casi todas las tablas confunden en uno.
Qué es un código de estado HTTP
Toda respuesta HTTP empieza con un número de tres cifras que dice cómo ha ido. La primera cifra es la clase: 1xx significa que el servidor sigue trabajando, 2xx que ha salido bien, 3xx que tienes que ir a otro sitio, 4xx que la petición estaba mal y 5xx que el que estaba mal era el servidor. El número es lo que interpreta el software; la frase que lo acompaña es para las personas.
La lista con autoridad es el registro de códigos de estado HTTP de IANA, y esta página se genera a partir de él en vez de escribirse de memoria. Eso importa más de lo que parece, porque el registro recoge cuatro estados distintos y casi todas las tablas publicadas los aplanan en una sola lista de códigos que podrías usar.
Cómo usar esta lista
- Busca por número o por frase. Los números se buscan por el principio, así que escribir 40 te da toda la familia 40x y 404 la reduce a uno. El texto se busca en cualquier parte de la frase: prueba gateway, o legal.
- Mira las etiquetas antes de usar un código. Reservado significa que el registro lo apartó para que nadie lo usara. Obsoleto significa que se registró y luego se retiró. Temporal significa que ese registro lleva fecha de caducidad.
- Baja hasta debajo del registro para lo demás. Los códigos que has visto por ahí y no encuentras arriba están en la sección de proveedores, cada uno atribuido al programa que lo devuelve, y después los rangos que IANA no ha asignado a nadie.
El 418 no es un código de broma que puedas usar
El dato más repetido sobre los códigos HTTP es que el 418 I'm a Teapot es una broma de los Inocentes de 1998 y que puedes devolverlo por diversión. La primera mitad es cierta. La segunda está del revés, y el registro lo dice sin rodeos: el 418 está listado, su descripción es (Unused) y su referencia es la sección 15.5.19 del RFC 9110. Aparece en el registro precisamente para que no pueda asignarse nunca a nada real.
Ese es un estado distinto de «sin asignar», y esa distinción es la razón de ser de esta página. El 306 está en la misma situación: reservado, inutilizable para siempre. El 510 Not Extended está en un tercer estado: se registró de verdad y después su experimento se reclasificó como Histórico, así que figura como obsoleto. Y el 104 Upload Resumption Supported está en un cuarto: un registro temporal que caduca el 13 de noviembre de 2026 y puede desaparecer sin más.
Quita todo eso y te quedan 61 códigos que un servidor debería devolver realmente, de 64 filas del registro. Una tabla que presenta los 64 como iguales te está diciendo que uses dos códigos que existen para ser inusables.
Los códigos que ni siquiera están en el registro
Las tablas publicadas tienen un segundo problema: los códigos que añaden. El 420, el 444, el 499 y la familia 52x salen en casi todas las listas como si estuvieran junto al 404. IANA no ha asignado ninguno. En el caso del 420 el registro es explícito en sentido contrario: 419-420 es uno de los once rangos marcados como sin asignar.
No son inventados, eso sí: son comportamientos reales de programas concretos, y por eso aquí van en su propia sección con el programa indicado. El 499 es nginx anotando que el cliente colgó antes de que la respuesta estuviera lista. El 444 es nginx cerrando la conexión sin contestar siquiera. La familia 52x es de Cloudflare, y su propia documentación de soporte lista del 520 al 526 y el 530 junto a los códigos 5xx estándar sin mencionar en ningún momento que no están registrados, lo que explica buena parte de su difusión.
La consecuencia práctica es sencilla. Cualquier código de un rango sin asignar está libre para tu uso interno, y seguirá siendo una extensión privada y no un estándar: ninguna biblioteca cliente sabrá qué quieres decir con él.
Límites honestos
Esto es una instantánea. El registro cambia: el 451 se añadió en 2016, el 103 en 2017, y el 104 llegó en 2024 como registro temporal ya con fecha de caducidad. La fecha en que se generó la lista está impresa al final, y el script que la generó está en el repositorio, así que la página puede decir cuándo fue cierta en vez de insinuar que lo será siempre.
Las frases de estado son las del propio registro, en inglés, y deliberadamente no se traducen en las demás versiones de esta página. La frase viaja por el cable como parte del protocolo —un servidor envía Not Found, no «No encontrado»—, así que traducirla describiría algo que ningún servidor devuelve. Lo que se traduce es la explicación de alrededor; el protocolo no.
La tabla de proveedores es la única parte que no sale de un registro, porque no hay ningún registro del que sacarla. Cada fila viene de la documentación del propio proveedor. No es exhaustiva y no puede serlo, ya que cualquiera puede devolver el número que le apetezca.
¿Por qué es gratis?
Porque es una lista. Toda la página es texto estático con un buscador que la filtra en tu navegador: no se sube nada, no se guarda nada y no hay servidor de por medio para leerla.
Así que no hay cuenta, ni registro, ni nada detrás de un muro. El registro de base es un documento público que mantiene IANA, y una lista de hechos públicos no debería tener un cobro delante.