Glosario

De dónde vienen los 4096 bytes del límite de tamaño de cookie

Taras Shynkarenko
Taras Shynkarenko
•Actualizado: •9 min de lectura
De dónde vienen los 4096 bytes del límite de tamaño de cookieDe dónde vienen los 4096 bytes del límite de tamaño de cookie

TL;DR, Respuesta rápida

9 min de lectura

Chrome y Firefox rechazan una cookie cuyo nombre y valor juntos superen los 4096 bytes, y los dos limitan cada valor de atributo a 1024 bytes. Chromium fija kMaxCookieNamePlusValueSize = 4096 y kMaxCookieAttributeValueSize = 1024; Firefox fija kMaxBytesPerCookie = 4096 y ATTRIBUTE_MAX_LENGTH = 1024. La cifra de 4096 nace en el RFC 2965 y el RFC 6265 como mínimo que un navegador debería admitir, contado sobre nombre, valor y atributos; el RFC 6265bis la convirtió en un máximo que el navegador DEBE imponer, contado solo sobre nombre y valor. El almacenamiento por dominio es de 180 cookies en los dos motores, purgado de vuelta a 150 en ambos. Las cookies con exceso de tamaño se descartan enteras, nunca se truncan.

Los navegadores imponen un límite de tamaño de cookie de 4096 bytes medido sobre el nombre y el valor, y un techo separado de 1024 bytes para cada valor de atributo individual. Ninguno de los dos números es una sugerencia en los navegadores actuales, y ninguno significa exactamente lo que decían las especificaciones antiguas. La cifra que todo el mundo cita como "4KB por cookie" nació como un suelo que se pedía garantizar a los agentes de usuario y acabó como un techo que están obligados a imponer, y el cambio alteró qué se cuenta.

Si las cookies como mecanismo son nuevas para ti, empieza por la guía de cookies del navegador para principiantes y vuelve luego a por los números.

¿Qué exigen de verdad las especificaciones?

Tres documentos dicen tres cosas distintas, y los tres están vivos en la web ahora mismo.

El RFC 2965, la especificación de Set-Cookie2 de 1999, abre la sección 5.3 con lo contrario de un límite: "In general, user agents' cookie support should have no fixed limits." Después nombra mínimos que garantizar: "at least 300 cookies", "at least 4096 bytes per cookie (as measured by the characters that comprise the cookie non-terminal in the syntax description of the Set-Cookie2 header, and as received in the Set-Cookie2 header)" y "at least 20 cookies per unique host or domain name".

El RFC 6265, el reemplazo de 2011, mantiene el mismo encuadre en la sección 6.1. Los agentes de usuario de uso general DEBERÍAN ofrecer "At least 4096 bytes per cookie (as measured by the sum of the length of the cookie's name, value, and attributes)", más "At least 50 cookies per domain" y "At least 3000 cookies total". Fíjate en el paréntesis: los atributos van dentro de los 4096.

El RFC 6265bis, borrador 22 del 1 de diciembre de 2025, que deja obsoleto el RFC 6265 si se aprueba, mueve el número al algoritmo obligatorio de análisis y cambia lo que mide. El paso 5 del analizador de Set-Cookie dice: "If the sum of the lengths of the name string and the value string is more than 4096 octets, abort this algorithm and ignore the set-cookie-string entirely." Los atributos ya no se cuentan ahí. Tienen su propia regla en el paso 6: "If the attribute-value is longer than 1024 octets, ignore the cookie-av string and return to Step 1 of this algorithm." La sección 6.1 del borrador ha eliminado en consecuencia el punto de los 4096, y solo conserva los recuentos por dominio y totales, con la nota de que "a limit on the maximum number of cookies also limits the total size of the stored cookies, due to the length limits which MUST be enforced".

Así que la página de document.cookie de MDN, que todavía dice a sus lectores que el RFC 2965 "specifies that there should be no maximum length of a cookie's key or value size, and encourages implementations to support arbitrarily large cookies", y la propia guía de cookies de MDN, que dice "a maximum size per cookie (usually 4KB)", son las dos exactas sobre especificaciones distintas. Los navegadores implementan la tercera.

Un desarrollador revisa la misma página abierta en varias ventanas de navegador, ya que Chrome, Firefox y Safari imponen límites de cookies distintos.

Del mínimo al máximo
1
RFC 2965 (1999). Un mínimo que se debía garantizar, al menos 4096 bytes por cookie, contando nombre, valor y atributos.
2
RFC 6265 (2011). El mismo suelo, el mismo recuento. Los user agents DEBERÍAN ofrecer al menos 4096 bytes sumando nombre, valor y atributos.
3
RFC 6265bis (borrador 22, 2025). Un techo que el analizador DEBE imponer, 4096 octetos solo para nombre más valor, con los atributos limitados aparte a 1024.
Chromium y Firefox implementan la tercera versión, la única que están obligados a cumplir.

¿Qué impone cada navegador?

Chromium y Firefox han aterrizado los dos en los números del RFC 6265bis, y los dos los ponen en el código fuente como constantes con nombre.

MotorNombre más valorPor valor de atributoCookies por dominioCookies totales
Chromium (Chrome, Edge)4096 bytes1024 bytes1803300
Gecko (Firefox)4096 bytes1024 bytes1803000
WebKit (Safari)No publicadoNo publicadoNo publicadoNo publicado

Chromium declara los dos límites de bytes en net/cookies/parsed_cookie.h, cada uno con su propio comentario:

// The maximum length allowed for a cookie string's name/value pair.
static const size_t kMaxCookieNamePlusValueSize = 4096;
 
// The maximum length allowed for each attribute value in a cookie string.
static const size_t kMaxCookieAttributeValueSize = 1024;

Firefox declara el límite de bytes en netwerk/cookie/CookieValidation.cpp como constexpr uint32_t kMaxBytesPerCookie = 4096; y lo aplica en una función cuyo comentario todavía cita la especificación de dos revisiones atrás:

bool CookieValidation::CheckNameAndValueSize(const CookieStruct& aCookieData) {
  // reject cookie if it's over the size limit, per RFC2109
  return (aCookieData.name().Length() + aCookieData.value().Length()) <=
      kMaxBytesPerCookie;

El tope de atributo vive aparte en netwerk/cookie/CookieParser.cpp como constexpr uint64_t ATTRIBUTE_MAX_LENGTH = 1024;.

Safari es el hueco. Apple no publica ningún límite de bytes por cookie, y la entrada sobre política de almacenamiento de WebKit deja las cookies explícitamente fuera del sistema de cuotas que describe, al afirmar que "cookies and HTTP cache are currently not subject to the policy below" y que "they are not bounded by quota". Safari sí impone otras restricciones de cookies, incluido el tope de siete días para cookies escritas por script, pero un techo de tamaño documentado no está entre ellas. Presupuesta con los números de Chromium y Gecko y estarás a salvo en todas partes.

La cookie se descarta entera. Nunca se trunca, y al servidor nunca se le dice. El RFC 2965 escribió la regla en 1999 y no ha cambiado: "The information in a Set-Cookie2 response header MUST be retained in its entirety. If for some reason there is inadequate space to store the cookie, it MUST be discarded, not truncated." El RFC 6265bis dice lo mismo en lenguaje de analizador, al instruir al agente de usuario a "abort this algorithm and ignore the set-cookie-string entirely".

Como el fallo es silencioso en la capa HTTP, la única señal está en la consola del navegador, y Firefox es el motor que te da una utilizable. Su archivo de cadenas necko.properties lleva el texto exacto:

Flowsery
Flowsery

Empieza tu prueba gratis de 14 días

Panel en tiempo real

Seguimiento de objetivos

Rastreo sin cookies

Cookie "%1$S" is invalid because its size is too big. Max size is %2$S B.

Un atributo con exceso de tamaño produce un mensaje distinto y más fácil de pasar por alto, porque la cookie en sí sí se fija con ese atributo descartado:

The value of the attribute "%2$S" for the cookie "%1$S" has been rejected because its size is too big. Max size is %3$S B.

Ese segundo caso es el bug más desagradable. Un valor de Path o Domain de más de 1024 bytes no mata la cookie, cambia el alcance de la cookie, así que la cookie existe pero deja de enviarse donde esperabas.

¿Cuántas cookies puede guardar un dominio?

Chromium permite 180 por dominio y expulsa 30 a la vez. Las constantes en net/cookies/cookie_monster.cc son kDomainMaxCookies = 180, kDomainPurgeCookies = 30, kMaxCookies = 3300 y kPurgeCookies = 300. La cabecera explica la política en una frase: "When the number of cookies gets to k{Domain,}MaxCookies purge down to k{Domain,}MaxCookies - k{Domain,}PurgeCookies." También deletrea cómo los dominios registrables comparten el presupuesto: "the maximum number of cookies allowed for google.com and all of its subdomains will be 150-180."

Firefox aterriza en los mismos dos números declarándolos directamente. netwerk/cookie/CookieCommons.h fija kMaxCookiesPerHost = 180, kCookieQuotaPerHost = 150 y kMaxNumberOfCookies = 3000. Los dos motores admiten por tanto 180 cookies por dominio registrable y caen a 150 al desbordar, y se diferencian solo en el techo global, 3300 en Chromium frente a 3000 en Firefox.

Las cookies particionadas tienen su propio presupuesto encima. kPerPartitionDomainMaxCookies = 180 y kPerPartitionDomainMaxCookieBytes = 10240 de Chromium limitan lo que un sitio incrustado puede guardar en una partición, y el tope de bytes es el que se alcanza primero en la mayoría de incrustaciones. Esa interacción está cubierta en cómo funcionan las cookies particionadas de CHIPS.

Los dos motores expulsan, lo que significa que una cookie que fijaste con éxito puede desaparecer después sin que corra ningún código tuyo. El RFC 6265bis lo dice sin rodeos: los agentes de usuario "MAY 'remove excess cookies' from the cookie store if the number of cookies sharing a domain field exceeds some implementation-defined upper bound (such as 50 cookies)".

Cables de red en bastidores de servidores representan las cabeceras de petición que un servidor procesa en cada llamada, incluidas las cookies que las acompañan.

Cada cookie dentro del alcance se concatena en una sola cabecera de petición Cookie en cada petición que coincide, y el límite de esa cabecera lo pone el servidor, no el navegador. La sección 4.2.1 del RFC 6265bis le pone número: "While Section 5.4 of [HTTP] does not define a length limit for header fields it is likely that the web server's implementation does impose a limit; many popular implementations have default limits of 8192 octets. Servers SHOULD avoid setting a large number of large cookies such that the final cookie-string would exceed their header field limit. Not doing so could result in requests to the server failing."

Dos cookies de 4096 bytes son legales cada una por separado y juntas llenan una cabecera de 8192 bytes, antes de la línea de petición o de cualquier otra cabecera. Lo que te salva un poco es que el viaje de vuelta lleva menos que el de ida: "Notice that the cookie attributes are not returned." La cabecera de petición contiene solo pares de nombre y valor, así que Expires, Path, Domain y SameSite te cuestan almacenamiento pero no ancho de banda.

La aritmética que vale la pena hacer antes de enviar una cookie grande es la del lado de la petición:

bytes de cabecera = suma sobre las cookies en alcance de (longitud del nombre + 1 + longitud del valor + 2)

Doce cookies con una media de 600 bytes de nombre más valor ponen unos 7.200 bytes en cada petición a ese dominio, incluida cada petición de imagen y de script. A un sitio que llega a ese punto normalmente le conviene más guardar una clave opaca en la cookie y la carga del lado del servidor, o bajar a un enfoque que no fije ninguna cookie, como hace el seguimiento sin cookies. Si todavía estás decidiendo qué cookies son tuyas siquiera, cookies propias y de terceros traza esa línea.

Preguntas frecuentes

Depende de qué especificación leas, y los navegadores actuales siguen la más reciente. El RFC 6265 medía 4096 "as the sum of the length of the cookie's name, value, and attributes". El RFC 6265bis cuenta solo "the name string and the value string", y da a cada valor de atributo un límite separado de 1024 octetos, que es lo que implementan Chromium y Firefox.

El navegador la descarta entera y el servidor no recibe ningún error. El RFC 2965 exigía que una cookie no almacenable "MUST be discarded, not truncated", y el RFC 6265bis le dice al analizador que debe "abort this algorithm and ignore the set-cookie-string entirely". Firefox registra Cookie "name" is invalid because its size is too big en la consola; la respuesta de red parece correcta.

¿Cuántas cookies puede fijar un dominio?

180 tanto en Chromium como en Firefox, con caída a 150 al desbordar. kDomainMaxCookies de Chromium es 180 y su kDomainPurgeCookies es 30; kMaxCookiesPerHost de Firefox es 180 y su kCookieQuotaPerHost es 150. Los subdominios comparten el presupuesto del dominio registrable en lugar de tener el suyo.

Flowsery
Flowsery

Empieza tu prueba gratis de 14 días

Panel en tiempo real

Seguimiento de objetivos

Rastreo sin cookies

¿El límite se mide en caracteres o en bytes?

En bytes. El RFC 6265bis especifica 4096 octetos, Chromium tipa su constante como size_t sobre la cadena serializada de la cookie, y los valores no ASCII se codifican en porcentaje o en UTF-8 antes de la comprobación. Un valor de caracteres multibyte consume su longitud codificada, no su recuento de caracteres.

No. La regla de 4096 bytes se aplica por cookie en el momento de almacenar. La cabecera Cookie combinada la acota el servidor, y el RFC 6265bis señala que "many popular implementations have default limits of 8192 octets", que dos cookies de tamaño máximo alcanzan por sí solas.

Guarda un identificador opaco de unas pocas decenas de bytes y mantén la carga del lado del servidor, indexada por ese identificador. La cookie cuesta entonces lo mismo en cada petición independientemente de cuánto estado apunte, y el estado en sí deja de ser legible o editable por nada que corra en la página.

Safari, o WebKit, no publica un límite en bytes documentado para las cookies. La entrada de WebKit sobre su política de almacenamiento excluye explícitamente las cookies del sistema de cuotas y afirma que "not bounded by quota". Safari sí impone otras restricciones a las cookies, como el límite de siete días para las cookies escritas por script, pero un techo de tamaño no está entre ellas. Si te ajustas a las cifras de Chromium y Gecko, vas seguro en cualquier navegador.

¿Por qué Chromium permite más cookies en total que Firefox?

Chromium fija el total en 3300 (kMaxCookies), Firefox en 3000 (kMaxNumberOfCookies). Ambos motores coinciden en las cifras por dominio, 180 permitidas y 150 tras la purga, así que la diferencia solo aparece en el techo global. RFC 6265 pide al menos 3000 cookies en total y 6265bis menciona 3000 como ejemplo, así que los motores difieren.

¿Tienen las cookies particionadas un límite de tamaño aparte?

Chromium añade un presupuesto por partición para las cookies CHIPS, por encima del límite normal por dominio. kPerPartitionDomainMaxCookies es 180, y kPerPartitionDomainMaxCookieBytes limita la partición a 10240 bytes, un tope que en la mayoría de los embeds se alcanza antes que el conteo de cookies. Esto es independiente del límite de 4096 bytes por cookie, aquí se limita lo que un sitio incrustado puede guardar en el total de sus cookies dentro de una partición.

Un nombre más valor demasiado largos hacen que la cookie se descarte por completo, pero un atributo demasiado largo no. Firefox registra un mensaje indicando que el atributo fue rechazado por su tamaño, y la cookie se establece igualmente sin ese atributo. Un valor de Path o Domain de más de 1024 bytes cambia el alcance de la cookie en lugar de borrarla, así que sigue existiendo pero deja de enviarse donde se esperaba.

¿Te resultó útil este artículo?

¡Cuéntanos qué opinas!

Vernos más en Google

Un clic marca Flowsery como fuente preferida y nuestros artículos aparecen más arriba en tus Noticias destacadas, el modo IA y los resúmenes con IA.

Antes de irte...

Flowsery

Flowsery

Analítica orientada a ingresos para tu sitio web

Rastrea cada visitante, fuente y conversión en tiempo real. Simple, potente y sin cookies.

Panel en tiempo real

Seguimiento de objetivos

Rastreo sin cookies

Términos relacionados del glosario

Cómo un solo atributo ausente decide cookie de sesión vs cookie persistenteCómo un solo atributo ausente decide cookie de sesión vs cookie persistente
Glosario

Cómo un solo atributo ausente decide cookie de sesión vs cookie persistente

Qué separa cookie de sesión vs cookie persistente en RFC 6265 y MDN: Expires y Max-Age, sesiones restauradas, el tope de 400 días y el consentimiento en la UE.

•9 min de lectura
Por qué tu tasa de rebote de GA4 es la tasa de interacción al revésPor qué tu tasa de rebote de GA4 es la tasa de interacción al revés
Glosario

Por qué tu tasa de rebote de GA4 es la tasa de interacción al revés

Google mide la tasa de rebote de GA4 como la proporción de sesiones sin interacción. Cómo la define, en qué difiere de Universal Analytics y dónde añadirla.

•9 min de lectura
Qué cuenta el informe de páginas de destino de GA4 y dónde se queda en blancoQué cuenta el informe de páginas de destino de GA4 y dónde se queda en blanco
Glosario

Qué cuenta el informe de páginas de destino de GA4 y dónde se queda en blanco

En Reports, el informe de páginas de destino de GA4 lista la primera página de cada sesión. Dónde está, sus métricas, por qué sale (not set) y la fuente.

•10 min de lectura
Cómo registra la búsqueda en el sitio de GA4 lo que escriben los visitantesCómo registra la búsqueda en el sitio de GA4 lo que escriben los visitantes
Glosario

Cómo registra la búsqueda en el sitio de GA4 lo que escriben los visitantes

Configura la búsqueda en el sitio de GA4 con la medición mejorada, añade tus parámetros de consulta, halla la dimensión Search term y mide sin URL.

•10 min de lectura
Cómo definir propiedades de usuario de GA4 y usarlas en informesCómo definir propiedades de usuario de GA4 y usarlas en informes
Glosario

Cómo definir propiedades de usuario de GA4 y usarlas en informes

Define propiedades de usuario de GA4 con gtag o Tag Manager, regístralas como dimensiones personalizadas de usuario y no pases del límite de 25.

•10 min de lectura
Cómo vincular Search Console con GA4 y publicar sus informesCómo vincular Search Console con GA4 y publicar sus informes
Glosario

Cómo vincular Search Console con GA4 y publicar sus informes

Aprende a vincular Search Console con GA4 en Admin, qué roles necesitas, cómo publicar los dos informes en Library y qué datos no se pueden cruzar.

•9 min de lectura

Artículos relacionados