Le device memory fingerprinting utilise la propriété JavaScript navigator.deviceMemory pour lire le niveau de RAM approximatif de votre appareil et l'inclure dans l'empreinte unique de votre navigateur — sans cookies, sans permissions, sans avertissement. Voyez ce que votre navigateur expose dès maintenant sur whatsmy.fyi.
En résumé
navigator.deviceMemory retourne la RAM de votre appareil en gigaoctets, arrondie à la puissance de deux la plus proche : 0,25, 0,5, 1, 2, 4 ou 8 Go. Cette valeur de bucket grossier contribue environ 2 à 3 bits d'entropie à votre empreinte. Seul, il ne peut pas vous identifier de façon unique, mais combiné avec le nombre de cœurs CPU, la résolution d'écran, les détails GPU et 30+ autres signaux, il aide les services de fingerprinting à cibler votre appareil. Firefox et Safari ont délibérément refusé d'implémenter l'API. Seuls les navigateurs basés sur Chromium l'exposent.
Qu'est-ce que le device memory fingerprinting ?
Le device memory fingerprinting est une technique de pistage qui lit la propriété Navigator.deviceMemory — un attribut en lecture seule introduit dans Chrome 63 en décembre 2017 — pour déterminer combien de RAM votre appareil possède. La valeur est délibérément imprécise : un appareil avec 6 Go de RAM rapporte 8, et un appareil avec 3 Go rapporte 4, car la spec exige un arrondi à la puissance de deux la plus proche. Cette quantisation a été conçue pour limiter le risque de fingerprinting, mais elle crée un signal stable et cohérent qui persiste entre les sessions de navigation, le mode navigation privée et les connexions VPN.
L'API fait partie d'une famille plus large de propriétés d'exposition matérielle dans le navigateur, aux côtés de navigator.hardwareConcurrency (nombre de cœurs CPU) et navigator.platform. Chacune fournit une précision limitée seule, mais ensemble elles construisent un profil matériel que le W3C Fingerprinting Guidance classe explicitement comme vecteur de fingerprinting.
Comment fonctionne navigator.deviceMemory ?
La spécification W3C Device Memory définit un algorithme précis pour dériver la valeur que votre navigateur rapporte.
Étape 1 — Lecture de la mémoire physique
Le navigateur lit la RAM physique de l'appareil en octets depuis le système d'exploitation. L'implémentation Chrome lit la valeur en mégaoctets, puis l'arrondit à la puissance de deux la plus proche. Un appareil rapportant 6 144 Mo (6 Go) est arrondi à 8 192 Mo (8 Go).
Étape 2 — Conversion en gigaoctets et plafonnement
La valeur arrondie en mégaoctets est divisée par 1 024 pour produire la valeur en gigaoctets. Tout résultat supérieur à 8 est plafonné à 8,0. Les versions récentes de Chrome ont étendu la limite supérieure à 32.
Étape 3 — Restriction aux contextes HTTPS
La spec mandate que navigator.deviceMemory n'est disponible que dans les Secure Contexts (HTTPS). Sur les pages HTTP, la propriété retourne undefined.
Étape 4 — Disponible sans permission
Tout JavaScript s'exécutant sur la page peut lire navigator.deviceMemorysans invite utilisateur, sans demande de permission et sans notification du navigateur. Les scripts tiers d'analytique et de publicité intégrés sur des millions de sites le lisent silencieusement à chaque chargement de page.
// Lecture de navigator.deviceMemory
// Retourne : 0.25 | 0.5 | 1 | 2 | 4 | 8 (ou undefined dans Firefox/Safari)
const ram = navigator.deviceMemory;
console.log(ram); // ex. 8 (sur un MacBook Pro 16 Go)
// L'absence de la valeur est elle-même un signal de fingerprinting :
// undefined → le navigateur est Firefox, Safari ou Tor Browser (pas Chromium)
if (ram === undefined) {
console.log('Navigateur non-Chromium détecté');
}
// Profil matériel combiné
const hardwareProfile = {
deviceMemory: navigator.deviceMemory,
cpuCores: navigator.hardwareConcurrency, // ex. 10
platform: navigator.platform, // ex. "MacIntel"
};
// Détection de bot : signaler les valeurs hors-spec
const VALID_VALUES = [0.25, 0.5, 1, 2, 4, 8, 16, 32];
const isOutOfSpec = ram !== undefined && !VALID_VALUES.includes(ram);
// Valeurs hors-spec (ex. 3, 6, 12) → usurpation ou navigateur headlessQuelle est la contribution de deviceMemory au fingerprinting ?
| Signal | Valeur / Résultat | Source |
|---|---|---|
| Entropie de Shannon (isolation) | ~2–3 bits | Spec W3C Device Memory |
| Nombre de valeurs de bucket standard | 6 (0,25, 0,5, 1, 2, 4, 8 Go) | Spec W3C Device Memory |
| Taux de support mondial (tous basés Chromium) | 76,37 % | Can I Use, 2025 |
| Support Firefox / Safari | 0 % — délibérément non implémenté | MDN Web Docs |
| Valeurs hors-spec en 7 jours de trafic | +16 000 événements signalés comme usurpés | Castle.io, 2025 |
RGPD et device memory fingerprinting
Selon le RGPD, le browser fingerprinting crée un identifiant unique persistant et constitue donc un traitement de données personnelles. La CNIL a explicitement déclaré que le pistage par fingerprinting requiert le même consentement éclairé que le pistage par cookies. L'ICO britannique a confirmé en janvier 2025 que le fingerprinting est soumis aux mêmes exigences PECR que les cookies. Selon le CCPA et le CPRA en Californie, les empreintes de navigateur sont des identifiants uniques personnels soumis aux droits d'opt-out.
L'exception légale significative est la détection de fraude et la prévention des bots. Les plateformes utilisant navigator.deviceMemory uniquement pour détecter des signaux usurpés ou incohérents — pas pour pister des individus entre sites — peuvent généralement se qualifier pour la base d'Intérêt Légitime du RGPD sans consentement explicite.
Comment se protéger du device memory fingerprinting
- Tor Browser (protection maximale) : Basé sur Firefox, donc
navigator.deviceMemoryretourneundefinednativement — l'API n'est pas implémentée. Combiné avec le letterboxing, la normalisation du user-agent et le routage réseau via le réseau d'anonymisation Tor. - Firefox (recommandé pour l'usage quotidien) : Firefox n'implémente pas
navigator.deviceMemorydu tout. L'activation deprivacy.resistFingerprintingdansabout:confignormalise également la taille d'écran, le fuseau horaire, la locale et les métriques de polices. - Brave Browser (protection basée Chromium) : Brave implémente l'API (base de code Chromium) mais applique une randomisation per-session et per-site — une technique appelée Farbling. Votre valeur
deviceMemoryrapportée diffère entre sites et entre sessions. - Safari : Comme Firefox, Safari a décliné d'implémenter l'API.
navigator.deviceMemoryretourneundefineddans toutes les versions de Safari à travers 2025. C'est intentionnel. - Limites des VPN : Un VPN change votre adresse IP et route le trafic via un tunnel chiffré mais n'a absolument aucun effet sur
navigator.deviceMemory. La valeur est lue depuis votre matériel local par JavaScript s'exécutant dans votre navigateur, sans implication réseau. Vérifiez sur whatsmy.fyi.
Foire aux questions
navigator.deviceMemory fonctionne-t-il en navigation privée ?
Oui. La navigation privée empêche votre navigateur d'écrire l'historique et les cookies sur disque, mais elle ne change pas votre RAM ni la façon dont Chrome la rapporte. navigator.deviceMemory retourne la même valeur en fenêtre de navigation privée qu'en fenêtre normale.
Pourquoi Firefox et Safari ont-ils refusé d'implémenter navigator.deviceMemory ?
Les deux équipes ont conclu que le coût en fingerprinting l'emportait sur l'avantage de commodité pour les développeurs. Firefox et Safari ont pris la position que la quantité de RAM est un vecteur de fingerprinting ; Chrome et Edge ne l'ont pas fait. Le résultat est que 76 % du trafic mondial expose la valeur, tandis que les utilisateurs de Firefox et Safari (environ 24 %) ne le font pas.
L'absence comme signal
Quand navigator.deviceMemory retourne undefined, un script de fingerprinting apprend immédiatement que le navigateur n'est pas basé sur Chromium — confirmant Firefox, Safari ou Tor Browser. Cette distinction binaire présent/absent a elle-même une valeur identifiante.
Comment les systèmes de détection de bots utilisent-ils navigator.deviceMemory ?
Les plateformes de détection de bots utilisent principalement la valeur comme signal de cohérence, pas comme token de pistage. Elles valident navigator.deviceMemorypar rapport au user agent rapporté, la chaîne platform et le nombre de cœurs CPU. Les navigateurs anti-détection et les frameworks d'automatisation headless configurent fréquemment des valeurs invalides — des puissances de deux en dehors de la plage attendue, ou des valeurs non-puissance-de-deux comme 3 ou 6 Go — qui sont trivialement signalées comme usurpées.
Articles connexes
- Qu'est-ce que le browser fingerprinting ? — le guide complet de tous les signaux de fingerprinting
- Qu'est-ce que le CPU fingerprinting ? — l'API sœur exposant votre nombre de cœurs CPU
- Qu'est-ce que le WebGL fingerprinting ? — comment l'API graphique 3D expose votre fabricant GPU, modèle et version de pilote
- Qu'est-ce que l'audio fingerprinting ? — comment le matériel audio de votre appareil produit une empreinte acoustique unique



