Si vous avez déjà essayé de quitter Google Authenticator, vous connaissez probablement le problème.
Vous appuyez sur “Transférer les codes”, vous scannez le QR sur le nouvel appareil, et c’est terminé. Fluide, tant que vous restez dans l’app de Google. Mais essayez de déplacer ces mêmes codes TOTP vers un autre authentificateur, vers un coffre-fort de mots de passe, ou simplement vers un fichier texte que vous imprimerez pour le ranger dans un coffre-fort, et vous ne pouvez pas. Le QR d’export est opaque. Il contient chacun de vos secrets, mais vous ne pouvez pas les lire sans Google Authenticator à l’arrivée.
Ce n’est pas vraiment une fonctionnalité de sécurité. C’est un problème de portabilité.
Ce qu’il y a vraiment dans ce QR
Le QR d’export de Google Authenticator est une URI qui ressemble à otpauth-migration://offline?data=.... Le blob data est un protocol buffer (protobuf) encodé en base64, qui contient chaque entrée TOTP : nom, émetteur, secret, algorithme, nombre de chiffres, période. C’est un format de données standard. Rien d’exotique. Rien qui exige l’application d’un éditeur particulier pour être décodé.
Le format est documenté depuis des années, rétro-conçu et décrit le plus précisément par Alex Bakker. Des décodeurs en ligne de commande existent déjà sur GitHub, en Python et en Go. Ce qui manquait, c’était un outil qu’une personne non technique pouvait utiliser sereinement : un outil web simple, fonctionnant entièrement côté client, auditable, auquel on confie ses secrets sans réfléchir à deux fois. C’est ce vide que nous avons comblé.
L’outil
free-tools.heimlane.com/ga-decoder/ prend le QR d’export et vous montre ce qu’il contient réellement : une liste propre de vos comptes, avec les secrets que vous pouvez copier dans n’importe quel autre authentificateur ou coffre-fort.

Comment ça marche
Trois façons de lui donner le QR, selon ce que vous avez sous la main :
- Scanner via la caméra. Ouvrez la page sur un ordinateur, présentez le QR à votre webcam. Le décodeur le lit en temps réel sans envoyer l’image où que ce soit.
- Téléverser une image. Une capture d’écran du QR prise depuis votre téléphone suffit (quand c’est possible). Déposez-la sur la page.
- Coller l’URI. Si vous avez déjà la chaîne
otpauth-migration://offline?data=...brute, collez-la directement.
Trois façons de lire le résultat, selon ce vers quoi vous migrez :
- QR re-scannables pour votre nouvelle app d’authentification. Un QR par compte ; pointez l’appareil photo de la nouvelle app sur chacun.
- Secrets base32 copiables pour tout outil qui prend une graine TOTP directement : coffres-forts de mots de passe, jetons matériels, n’importe quel authentificateur sérieux.
- JSON ou CSV en masse quand vous avez des dizaines d’entrées et que vous voulez scripter la migration, ou les imprimer pour les mettre dans un coffre-fort physique.
Les exports multi-batch (quand Google découpe un gros coffre sur plusieurs QR) et les entrées HOTP sont tous deux pris en charge.

Quelques principes que nous y avons inscrits
Rien ne quitte votre navigateur. Le décodeur est une page statique. Il scanne le QR localement, exécute l’analyse protobuf localement, et n’envoie rien nulle part. Aucun backend, aucune télémétrie, aucun analytique.
Code source ouvert. Le code complet est sur GitHub, sous licence MIT.
Sous-domaine isolé. Le décodeur est directement disponible sur free-tools.heimlane.com, un sous-domaine distinct du site principal et de Heimlane Vault. Aucune télémétrie, aucun analytique, aucun formulaire à remplir.
Révélation entrée par entrée. Les secrets restent cachés derrière un clic, pour qu’un partage d’écran ou une capture accidentelle ne les expose pas même si quelqu’un regarde par dessus votre épaule. Une fois révélées, les cartes se masquent automatiquement après 30 secondes.
Pourquoi cet outil
C’est un outil dont nous avions besoin nous-mêmes, et que nous avons d’abord construit pour que nos utilisateurs de Heimlane Vault puissent sortir leurs codes TOTP de Google Authenticator et les importer dans Vault sans rien perdre en route. Nous nous sommes dit que beaucoup d’autres en auraient le même usage, utilisateurs de Vault ou non, alors nous l’avons rendu public, gratuit et open source.
C’est aussi le reflet de notre façon de penser chez Heimlane : vos secrets vous appartiennent, les formats qui les contiennent ne devraient pas vous piéger, vos données ne devraient jamais être monétisées. Le décodeur expédie ces valeurs en environ 200 Ko de HTML et JavaScript statiques.
Kudos à Google pour proposer un export du tout (ce que plusieurs autres apps d’authentification ne peuvent pas prétendre), et à ceux qui ont documenté le format avant nous. Nous l’avons simplement rendu accessible.
→ Ouvrir le décodeur d’export Google Authenticator
Si vous voulez un endroit pour les stocker à côté des mots de passe et des passkeys, Heimlane Vault le fait aussi.
