CookieDetox Legal-Tech Observatory
Sanctions & Amendes 2026-09-19

Cookie Lifespans: The 6-Month Choice Renewal vs 13-Month Tracker Rule Explained

CD

Par Cellule Investigation CookieDetox

Expertise Juridique & Conformité

🔗
T

L'essentiel Ă  retenir (En bref)

Under French CNIL Deliberation No. 2020-092 and ePrivacy Directive ↗ Art. 5(3), a strict distinction exists between consent retention and tracker persistence. User consent choices—whether acceptance or refusal—must be retained for 6 months to prevent consent fatigue. Conversely, audience measurement and tracking cookies have a statutory cap of 13 months without automatic renewal, while associated raw event telemetry must be purged after 25 months.

Executive Technical Brief & Market Reality

Standard martech implementations systematically violate French and European privacy law by confusing three distinct operational clocks. Google Analytics 4 (GA4), Meta Pixel, and major Customer Data Platforms (CDPs) ship with default client-side lifespans set to 730 days (24 months). Furthermore, these vendors configure sliding-window expirations that refresh the cookie's expiration timestamp on every pageview.

Under Commission Nationale de l'Informatique et des LibertĂ©s (CNIL) Deliberation No. 2020-091 and Deliberation No. 2020-092, this default behavior constitutes a regulatory infraction under Article 82 of the French Data Protection Act ↗ (transposing Article 5(3) of the ePrivacy Directive ↗ 2002/58/EC). The CNIL establishes three distinct temporal boundaries:

  • The 6-Month Rule (Consent Choice Retention): The user's decision—whether accepting or refusing tracking—must be remembered for a benchmark duration of 6 months. Prompting a user with a consent banner every session or every 30 days constitutes consent harassment and invalidates consent freely given under GDPR Article 4(11) and Article 7.
  • The 13-Month Rule (Terminal Tracker Lifespan): The lifespan of tracking cookies, including audience measurement identifiers exempt from consent, cannot exceed 13 months from the initial deposit. Crucially, this duration must not be extended automatically upon subsequent visits.
  • The 25-Month Rule (Raw Telemetry Retention): Raw analytics event logs, IP addresses, and pseudonymous visitor IDs stored in processing databases must have a hard retention limit of 25 months before mandatory deletion or irreversible anonymization.

Architectural & Technical Deep Dive

Enforcing compliance requires decoupling the consent recording mechanism from the analytical identifiers. In web architecture, two separate domains of storage must be calibrated: the Consent Management Platform (CMP) local state and the vendor tracking scripts.

1. Neutralizing GA4 Sliding Expiration via gtag.js

By default, GA4 sets the _ga and _ga_<container-id> cookies with a 2-year duration (63072000 seconds) and enables cookie_update: true. This sliding window extends the cookie lifespan by 2 years on every single hit, directly violating CNIL requirements. To enforce the 13-month (34,186,667 seconds) static limit, engineering teams must override these parameters directly in the initialization call:

// Compliant GA4 Initialization under CNIL 13-Month Rule
gtag('config', 'G-XXXXXXXXXX', {
  cookie_expires: 34186667, // 13 months in seconds
  cookie_update: false,     // Strictly prevents automatic expiration extension on return visits
  cookie_flags: 'SameSite=Lax;Secure'
});

2. Hardening CMP Response Headers (The 6-Month Consent Record)

Consent status storage must not rely on unmanaged client-side localStorage if cross-subdomain governance is required. Instead, write an explicit HTTP response header with an absolute expiration date. The Max-Age for the consent cookie must reflect exactly 180 days (15,552,000 seconds):

HTTP/2 200 OK
Set-Cookie: cnil_consent_status=granted; Max-Age=15552000; Path=/; Domain=.example.com; Secure; HttpOnly; SameSite=Lax

3. The Safari ITP Divergence

While the CNIL enforces an upper ceiling of 13 months, Apple's Intelligent Tracking Prevention (ITP) in Safari imposes a client-side lower ceiling. Cookies written via JavaScript (document.cookie) are capped at 7 days. If a user arrives via an ad link containing query parameters (e.g., gclid, fbclid), ITP 2.1+ truncates that lifespan to 24 hours.

Engineering teams running server-side tagging (e.g., via a Server-Side GTM container deployed on a first-party subdomain) bypass the 7-day browser cap. However, circumventing Safari's ITP via server-side Set-Cookie headers while ignoring the CNIL 13-month cap exposes organizations to significant GDPR/ePrivacy liability under CJEU case law (C-673/17 Planet49).

Regulatory & Legal Risk Matrix

The table below provides a forensic analysis of the regulatory limits established by European data protection authorities compared against default vendor behavior and corresponding enforcement mechanics.

Artifact / IdentifierRegulatory Lifespan CapLegal AuthorityDefault Vendor ValueEnforcement / Penalty Mechanism
Consent Decision Cookie (e.g., consent_status)6 months (Refusal & Acceptance)CNIL Deliberation 2020-092; GDPR Art. 4(11), 7365 days or Session-onlyGDPR Art. 83(5) fine: up to €20M or 4% of global turnover for consent invalidation.
Analytics Identifier (CNIL-Exempt Measurement)13 months maximum (Static)ePrivacy Art. 5(3); French Data Protection Act Art. 82730 days (GA4 sliding window)Administrative formal notice from CNIL; daily penalty fines (astreinte).
Commercial / Ad Tech Identifier (Meta, TikTok, Criteo)13 months maximum (Post-Consent)CNIL Deliberation 2020-091 ↗; CJEU C-673/17 Planet49390 to 730 days (Auto-renewed)Class-action liability under GDPR Art. 82; ePrivacy compliance sanctions.
Raw Telemetry / Analytics Event Logs25 months maximumCNIL Guidelines; GDPR Art. 5(1)(e) Storage LimitationIndefinite (Custom BigQuery exports)GDPR Art. 5(1)(e) violation; order to irreversibly purge analytical pipelines.

Step-by-Step Implementation & Forensic Verification Protocol

Phase 1: Google Tag Manager (GTM) Configuration

  1. Navigate to your GA4 Configuration Tag in GTM.
  2. Under Fields to Set, add two distinct directives:
    • cookie_expires: set the value to 34186667 (integer, represents 13 months in seconds).
    • cookie_update: set the value to false (boolean, halts the sliding window).
  3. Under Advanced Settings, map tag firing strictly to your custom event for valid consent (e.g., cookie_consent_analytics == 'true').

Phase 2: Automated Verification via Chrome DevTools Console

Verify that your client-side implementation does not deploy cookies exceeding the statutory limits. Run the following forensic script directly in the browser terminal:

// Audit all first-party cookies against CNIL 6-month and 13-month thresholds
(() => {
  const SECONDS_IN_MONTH = 2629743;
  const SIX_MONTHS_MS = 6 * SECONDS_IN_MONTH * 1000;
  const THIRTEEN_MONTHS_MS = 13 * SECONDS_IN_MONTH * 1000;
  const now = Date.now();

  console.group('CookieDetox Forensic Audit: Cookie Lifespans');
  
  // Note: document.cookie does not expose Expires/Max-Age directly.
  // Use performance navigation entries or query Application tab storage directly via CDP.
  if (window.cookieStore) {
    window.cookieStore.getAll().then(cookies => {
      cookies.forEach(c => {
        if (!c.expires) return;
        const deltaMs = c.expires - now;
        const deltaDays = (deltaMs / (1000 * 60 * 60 * 24)).toFixed(1);
        
        if (c.name.includes('consent') && deltaMs > SIX_MONTHS_MS) {
          console.error(`[VIOLATION] Consent cookie ${c.name} exceeds 6 months: ${deltaDays} days.`);
        } else if (deltaMs > THIRTEEN_MONTHS_MS) {
          console.error(`[VIOLATION] Tracker ${c.name} exceeds CNIL 13-month cap: ${deltaDays} days.`);
        } else {
          console.info(`[PASS] ${c.name}: ${deltaDays} days.`);
        }
      });
    });
  } else {
    console.warn('CookieStore API unavailable. Inspect DevTools -> Application -> Cookies manually.');
  }
  console.groupEnd();
})();

Phase 3: Network Trace Inspection

Open DevTools > Network, filter by collect?v=2 (GA4 calls), and inspect the Cookie request header. Refresh the page 5 times. Ensure the _ga cookie expiration timestamp in the Application > Cookies table remains static and does not shift forward with each request.

Strategic Verdict & Zero-Penalty Recommendation for European Brands

A high-performance compliance strategy requires abandoning default vendor configurations. For enterprise operations within France and the broader EU, follow these parameters:

  1. Enforce 6-Month CMP Parity: Configure your CMP to store refusals and acceptances for exactly 6 months. Prompting a user who clicked "Refuse All" after 30 days is an unlawful practice that has drawn millions of euros in CNIL sanctions against major publishers.
  2. Hardcode cookie_update: false: Never deploy Google Analytics 4, Piwik PRO, or Matomo without setting the update parameter to false. An analytics cookie dropped in January must expire the following February, regardless of how frequently the user visits the platform.
  3. Automate Log Purging at 25 Months: Configure BigQuery, Snowflake, or AWS S3 lifecycle policies to execute a DROP or partition deletion for analytics raw logs exceeding 760 days (25 months). Failing to demonstrate automated deletion during a regulatory audit constitutes a breach of GDPR Article 5(1)(e).
§

Official Legal Sources & Authoritative Decisions

Primary statutory texts, official DPA rulings, and European court judgments referenced in this analysis.

  • Curia / CJUE CJEU Planet49 Judgment (Case C-673/17): Strict ban on pre-ticked consent checkboxes
    View primary text
  • LĂ©gifrance Article 82 of French Data Protection Act (Transposition of ePrivacy Directive in France)
    View primary text
  • EUR-Lex Article 83 GDPR — General conditions for imposing administrative fines (statutory ceiling up to €20M or 4% turnover)
    View primary text
  • EUR-Lex Directive 2002/58/EC (ePrivacy Directive on Privacy and Electronic Communications)
    View primary text
Updated 2026-09-19
Share this article:

Frequently Asked Questions (FAQ)

What is the exact difference between the 6-month and 13-month CNIL rules?

The 6-month rule applies to how long a website may store a user's consent choice (both acceptance and refusal) without asking again. The 13-month rule is the maximum allowable lifespan for tracking or audience measurement cookies dropped on the user's terminal.

Does GA4 comply with the CNIL 13-month lifespan rule by default?

No. GA4 sets cookies with a default lifespan of 2 years (730 days) and enables automatic extension on every visit. To comply, engineers must manually configure 'cookie_expires: 34186667' and 'cookie_update: false' within the initialization tag.

Can we ask a user for cookie consent again before the 6-month period ends?

Only if there has been a substantial change in the processing context, such as adding new third-party vendors, introducing radically new tracking purposes, or if the user clears their terminal storage. Re-prompting without cause constitutes unlawful consent fatigue.

What is the 25-month rule defined by the CNIL?

The 25-month rule governs the maximum retention duration for raw audience measurement data stored in back-end databases. After 25 months, all raw analytical telemetry associated with identifiers must be either permanently deleted or irreversibly aggregated.