TL;DR, Resposta rápida
9 min de leituraUm cookie persistente traz um atributo Expires ou Max-Age e fica guardado até esse prazo acabar. Um cookie de sessão não traz nenhum dos dois e, pela RFC 6265, vive até "the current session is over", conforme o navegador define. A especificação nunca define a sessão, e o MDN avisa que navegadores com session restore podem manter cookies de sessão "indefinitely". Os cookies persistentes agora têm um teto: o draft rfc6265bis limita a vida útil a 400 dias, limite que o Chrome aplica desde a versão 104, de agosto de 2022, e o Safari limita a 7 dias os cookies persistentes gravados por document.cookie. Para o consentimento na UE, o Grupo de Trabalho do Artigo 29 disse que é muito mais provável que cookies de sessão first-party fiquem isentos, em comparação com cookies persistentes third-party, mas insistiu que é a finalidade, e não a vida útil, que decide.
Qual é a diferença entre um cookie de sessão e um cookie persistente?
Toda a diferença em cookie de sessão vs cookie persistente está em um atributo: um cookie persistente tem uma data Expires ou um Max-Age em segundos, e um cookie de sessão não tem nenhum dos dois. A RFC 6265, o padrão de cookies em vigor, diz que um cookie sem nenhum dos dois atributos é mantido até "the current session is over" (conforme definido pelo user agent). Um cookie com qualquer um dos dois é mantido até esse prazo passar, ou até o navegador ou o usuário apagá-lo antes.
Set-Cookie: sid=31d4d96e407aad42; Path=/; Secure; HttpOnly
Set-Cookie: lang=en-US; Max-Age=2592000; Path=/A primeira linha define um cookie de sessão. A segunda define um cookie persistente que dura 2,592,000 segundos, ou seja, 30 dias. O nome do cookie não tem papel nenhum. Um cookie chamado session_id com Max-Age é persistente, e um cookie chamado remember_me sem validade é um cookie de sessão.
| Cookie de sessão | Cookie persistente | |
|---|---|---|
| Atributo que decide | Sem Expires e sem Max-Age | Expires ou Max-Age presente |
| Flag interna da RFC 6265 | persistent-flag false | persistent-flag true |
| Apagado quando | "the current session is over", conforme o navegador define | O prazo de validade passa |
| Sobrevive a reiniciar o navegador | Pela especificação não, mas o session restore pode mantê-lo | Sim |
| Vida útil máxima | Sem limite enquanto a sessão for restaurada | 400 dias pela rfc6265bis e no Chrome |
Safari ITP quando definido por document.cookie | Não é afetado, continua cookie de sessão | Limitado a 7 dias |
| Na navegação privada | Apagado com a sessão privada | Tratado como cookie de sessão |
Como o navegador decide que tipo de cookie recebeu?
O navegador decide lendo os atributos em ordem, como descreve o algoritmo de armazenamento da seção 5.3 da RFC 6265. Se o cookie tem Max-Age, o navegador define a persistent-flag do cookie como true e usa o Max-Age para a validade. Senão, se ele tem Expires, a flag é true e o Expires define a validade. Senão, a flag é false, e a validade é definida como "the latest representable date."
Então, dentro da especificação, um cookie de sessão tem a data de validade mais distante possível, e só a persistent-flag false faz com que ele seja removido. A mesma seção diz: "When 'the current session is over' (as defined by the user agent), the user agent MUST remove from the cookie store all cookies with the persistent-flag set to false."
Mais duas regras pesam na prática:
Max-AgevenceExpires. Seção 4.1.2.2: "If a cookie has both the Max-Age and the Expires attribute, the Max-Age attribute has precedence and controls the expiration date of the cookie."- Zero apaga. Pela seção 5.2.2, um
Max-Agede0ou menos define a validade como "the earliest representable date and time", então o cookie é removido na hora. EnviarMax-Age=0é o jeito padrão de apagar um cookie a partir do servidor.
As duas páginas de cookies do MDN discordam sobre qual relógio uma data Expires usa. O guia de cookies HTTP diz que as datas Expires são "relative to the client the cookie is being set on", então um servidor com outra hora pode causar erros. A referência de Set-Cookie diz que o servidor define Expires "with a value relative to its own internal clock", e que o Firefox e os navegadores baseados em Chromium corrigem a diferença de relógio usando o header Date, enquanto a especificação "does not indicate if/how the value should be corrected by the recipient." O conselho do guia vale nos dois casos: Max-Age é "less error-prone", porque conta segundos a partir do momento em que o navegador recebe o cookie.
Quando uma sessão termina de fato?
Nenhum padrão diz quando uma sessão termina, e essa lacuna explica por que os cookies de sessão não se comportam como o nome sugere. A RFC 6265 deixa isso para o navegador com a expressão "as defined by the user agent", que aparece tanto na seção de atributos quanto na de armazenamento.
As duas páginas de cookies do MDN descrevem o resultado por pontas opostas. A referência de Set-Cookie diz que uma sessão "finishes when the client shuts down, after which the session cookie is removed" e depois avisa que navegadores com recurso de session restore restauram os cookies de sessão também, "as if the browser was never closed." O guia de cookies HTTP vai além: "The browser defines when the 'current session' ends, and some browsers use session restoring when restarting. This can cause session cookies to last indefinitely."
Com o session restore ligado, um cookie de sessão pode durar mais do que um cookie persistente com validade de uma semana. Um código que trata o cookie de sessão como garantia de logout depende de uma configuração do navegador que ele não consegue ver, então expire a autenticação também no servidor.
Um cookie de sessão também não tem nada a ver com uma sessão no analytics. O Google Analytics 4 guarda o estado da sessão em um cookie chamado _ga_<container-id>, que a central de ajuda lista com validade padrão de 2 anos e a descrição "Used to persist session state." A sessão do analytics é uma janela de tempo que a ferramenta calcula, explicada em o que conta como sessão. O cookie que a guarda é persistente.

Quanto tempo um cookie persistente pode durar?
Um cookie persistente pode durar até 400 dias no Chrome e no draft que vai substituir a RFC 6265. A RFC 6265 não definia limite superior. A sucessora, draft-ietf-httpbis-rfc6265bis-22, de 1 de dezembro de 2025, que o datatracker do IETF mostra na fila do RFC Editor, acrescenta a seção 5.5: o navegador "MUST limit the maximum age of the cookie", e "The limit SHOULD NOT be greater than 400 days (34560000 seconds) in the future." Um Expires ou Max-Age acima do limite "MUST be reduced to the limit."
O Chrome já aplica o teto. O blog Chrome for Developers afirma: "As of Chrome release M104 (August 2022) cookies can no longer set an expiration date more than 400 days in the future." Isso coloca os dois números publicados em conflito. O Google Analytics documenta padrões de 2 anos para _ga e _ga_<container-id>, e o Chrome, também do Google, corta qualquer data dessas para 400 dias quando o cookie é armazenado.
O Safari define um teto bem menor para um tipo de cookie. O anúncio do Intelligent Tracking Prevention 2.1 do WebKit, de 21 de fevereiro de 2019, diz: "All persistent client-side cookies, i.e. persistent cookies created through document.cookie, are capped to a seven day expiry." O mesmo post acrescenta: "Session cookies are not affected, they remain session cookies." Cookies definidos pelo header Set-Cookie de um servidor ficam fora dessa regra. O conjunto completo de regras do Safari está em como funciona o limite de 7 dias do Safari para cookies.
A RFC 6265 também pede moderação aos servidores. A seção 7.3 diz que os servidores "SHOULD promote user privacy by selecting reasonable cookie expiration periods based on the purpose of the cookie", e dá um exemplo que embaralha o vocabulário: "a typical session identifier might reasonably be set to expire in two weeks." Ou seja, um identificador de sessão muitas vezes vive em um cookie persistente.
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies

Cookies de sessão e cookies persistentes precisam de consentimento?
Pelo direito da UE, nenhum dos dois tipos fica isento de consentimento por causa da vida útil, e os dois só ficam isentos quando são estritamente necessários para um serviço que o usuário pediu. O Parecer 04/2012 do Grupo de Trabalho do Artigo 29 sobre a isenção de consentimento para cookies, adotado em 7 de junho de 2012, define os dois termos: um cookie de sessão é aquele que "é automaticamente suprimido quando o utilizador encerra o seu programa de navegação", e um cookie persistente é aquele que "permanece armazenado no equipamento terminal do utilizador até atingir uma data de expiração definida (que pode ser de minutos, dias ou vários anos no futuro)."
O parecer então trata a vida útil como um sinal, não como um teste. Ele diz que "é muito mais provável que os testemunhos de origem para uma sessão (first party session cookies) estejam isentos da obrigação de consentimento do que os testemunhos de terceiros persistentes" e, no mesmo parágrafo, que "O risco para a proteção de dados reside na ou nas finalidades do tratamento, e não nas informações contidas no testemunho." O exemplo mais claro é o login. Cookies de autenticação que duram a sessão são isentos, mas "Os testemunhos persistentes que armazenam um autenticador durante as sessões de navegação não estão isentos da obrigação de consentimento", e uma caixa de seleção "recordar os meus dados (utiliza testemunhos)" aparece como forma adequada de obter consentimento para eles.
Os reguladores nacionais acrescentam números. A CNIL, da França, em suas orientações sobre ferramentas de medição de audiência, deixa esses rastreadores dispensarem consentimento só se a vida útil for limitada a um período "comme c'est le cas d'une durée de treize mois" (13 meses, por exemplo), não for "prorogée automatiquement lors des nouvelles visites" (prorrogada automaticamente em novas visitas) e os dados coletados forem guardados por no máximo "vingt-cinq mois" (25 meses). Um cookie de analytics que renova a validade a cada visita falha na segunda condição, por mais curta que seja a vida útil.
Para uma tabela de cookies em uma política de privacidade, liste a vida útil de cada cookie como ela é de fato definida, "sessão" ou uma duração, ao lado da finalidade e de se ele é first-party ou third-party. As mesmas perguntas valem para dados guardados no armazenamento do navegador, tema da página sobre local storage vs cookies.
Perguntas frequentes
Como faço para um cookie ser cookie de sessão?
Deixe de fora os atributos Expires e Max-Age ao defini-lo. O navegador então guarda o cookie até a sessão terminar, conforme o próprio navegador define. A página do MDN sobre document.cookie dá a mesma regra para cookies definidos por script: se nenhum dos dois for especificado, o cookie expira no fim da sessão.
Os cookies de sessão são apagados quando fecho uma aba?
Não. Fechar uma aba não encerra a sessão do navegador. Os cookies de sessão são removidos quando o navegador fecha, a menos que o session restore os traga de volta.
Qual vence se um cookie tiver Expires e Max-Age?
Max-Age vence. A seção 4.1.2.2 da RFC 6265 diz que Max-Age "has precedence and controls the expiration date of the cookie." O MDN acrescenta que Max-Age é menos sujeito a erro, já que uma data Expires depende de relógios que podem discordar.
Como apago um cookie persistente?
Defina o mesmo cookie de novo, com o mesmo nome, domínio e caminho, e um Max-Age de 0 ou uma data Expires no passado. A RFC 6265 trata um Max-Age igual ou menor que zero como a data mais antiga representável, então o navegador remove o cookie na hora.
Cookies de sessão são mais privados que cookies persistentes?
Cookies de sessão duram menos por design, o que limita por quanto tempo eles conseguem ligar visitas. Mesmo assim, o Grupo de Trabalho do Artigo 29 julgou os cookies pela finalidade: um cookie de sessão usado para rastreamento precisa de consentimento, e um cookie persistente pode ser isento quando o usuário pediu o que ele faz.
A navegação privada transforma cookies persistentes em cookies de sessão?
Na prática, sim. A seção 7.2 da RFC 6265 diz que um navegador que oferece impedir o armazenamento persistente "MUST treat all received cookies as if the persistent-flag were set to false", e cita a navegação privada como forma comum dessa configuração. Todos os cookies somem quando a sessão privada fecha.
Um cookie de sessão é o mesmo que uma sessão no Google Analytics?
Não. A sessão de análise é uma janela de tempo que a ferramenta calcula, e o cookie que a guarda é persistente. O Google Analytics 4 armazena o estado da sessão em _ga_<container-id>, que a central de ajuda lista com expiração padrão de 2 anos.
Quanto tempo um cookie persistente pode durar no Chrome?
Até 400 dias. Desde o Chrome M104, em agosto de 2022, um cookie não pode mais definir uma data de expiração superior a 400 dias no futuro, então um Expires ou Max-Age maior é cortado nesse limite. O rascunho rfc6265bis define o mesmo teto.
Os cookies de sessão sobrevivem a um reinício do navegador?
Pela especificação não, mas na prática muitas vezes sim. A RFC 6265 deixa ao navegador decidir quando a sessão termina, e navegadores com restauração de sessão trazem os cookies de sessão de volta como se o navegador nunca tivesse sido fechado. A MDN avisa que assim eles podem durar indefinidamente.
Um cookie de login "lembrar de mim" precisa de consentimento na UE?
Sim. O Parecer 04/2012 do Grupo de Trabalho do Artigo 29 diz que cookies de login persistentes, que guardam um token de autenticação entre sessões do navegador, não estão isentos, e cita uma caixa "recordar os meus dados (utiliza testemunhos)" como forma de obter o consentimento. Cookies de autenticação que duram apenas a sessão são isentos.
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies
Este artigo foi útil?
Diga-nos o que pensa!
Veja-nos mais no Google
Um clique marca a Flowsery como fonte preferida e nossos artigos passam a aparecer mais acima nas suas Principais notícias, no modo IA e nas visões gerais com IA.
Antes de ir...
Flowsery
Analytics orientado para receitas para o seu site
Rastreie cada visitante, fonte e conversão em tempo real. Simples, poderoso e sem cookies.
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies
Termos relacionados do glossário


Tamanho, validade, acesso e lei em local storage vs cookies
Comparamos local storage vs cookies pelas specs: tamanho, validade, o que vai em cada request, HttpOnly, Secure, SameSite, Safari ITP e ePrivacy.


Como funciona o teste de legítimo interesse no GDPR pelo artigo 6(1)(f)
As regras do legítimo interesse no GDPR no artigo 6(1)(f), citadas do EUR-Lex, com o teste em três etapas do EDPB e por que web analytics segue em disputa.


De onde vem o limite de tamanho de cookie de 4.096 bytes
O limite de tamanho de cookie é de 4.096 bytes de nome mais valor no Chrome e no Firefox, 1.024 bytes por atributo e 180 cookies por domínio. Com as fontes.


O que a conformidade do session replay com o GDPR realmente exige de você
Avaliar a conformidade do session replay com o GDPR passa por quatro pontos: base legal do Artigo 6, dados do Artigo 9, consentimento do 5(3) e DPIA.


O que realmente quebra em SameSite Lax vs Strict vs None
Decida entre SameSite Lax vs Strict vs None pelo texto da RFC e pelo padrão documentado do Chrome, incluindo a exigência de Secure e o que cada modo quebra.


O que o limite de 7 dias dos cookies no Safari realmente restringe
O limite de 7 dias dos cookies no Safari da Apple corta cookies first-party gravados por script, com um limite mais curto de 24 horas depois de certos cliques.
Artigos relacionados


Por que a taxa de rejeição do GA4 é só a taxa de engajamento invertida
Sua taxa de rejeição do GA4 é a parcela de sessões não engajadas. Como o Google a define, como ela difere do Universal Analytics e onde adicioná-la.


O que o relatório de página de destino do GA4 conta e onde ele fica em branco
Em Reports, o relatório de página de destino do GA4 lista a primeira página de cada sessão. Onde achar, métricas padrão, linhas (not set) e como ver a origem.


Como o rastreamento de pesquisa no site do GA4 registra o que os visitantes digitam
Configure a pesquisa no site do GA4 com a medição aprimorada, adicione seus parâmetros, ache a dimensão Search term e rastreie buscas sem URL.

