Choisissez, déposez ou collez une image, ou utilisez la caméra. Les formats disponibles dépendent de BarcodeDetector dans votre navigateur.
Fonctionne localement dans votre navigateurDéposez une image ici ou choisissez un fichier image local
Le décodage utilise la fonctionnalité BarcodeDetector du navigateur. L'image reste sur cet appareil ; l'accès à la caméra n'est demandé que lorsque vous le démarrez.
Chrome et Edge offrent actuellement la prise en charge la plus large de BarcodeDetector. Si votre navigateur ne l'expose pas, utilisez un navigateur actuel compatible et conservez l'image locale.
Choisissez une image, déposez-la sur la page, collez-la depuis le presse-papiers, ou démarrez la caméra et capturez une image. La lecture est assurée par l'interface BarcodeDetector du navigateur : la photo n'est donc pas téléversée. Dans une session mesurée, la page n'a envoyé aucune requête contenant l'image et le seul trafic externe était l'analyse d'audience du site.
Vous obtenez les formats que votre navigateur expose. La page interroge d'abord BarcodeDetector.getSupportedFormats() et ne demande que l'intersection avec la liste qu'elle connaît ; c'est pourquoi une même image peut être lue dans un navigateur et rester muette dans un autre.
Mesuré dans Chrome 153 sous macOS, les formats exposés étaient QR code, Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-E, ITF, Data Matrix, Aztec et PDF417. Une image QR de test, un Code 128, un EAN-13 et un Code 39 ont été décodés avec leur contenu exact ; une image UPC-A est revenue en EAN 13, car cette version n'expose pas upc_a. Le Micro QR n'est pas dans la liste non plus : un symbole Micro QR n'a pas été détecté, alors qu'un QR code classique portant le même contenu l'a été.
Deux codes QR dans une même image ont été renvoyés en une seule lecture, et les résultats conservent l'ordre annoncé par le navigateur. Le décodeur appartenant au navigateur, un navigateur sans BarcodeDetector le signale au chargement et refuse de décoder au lieu de deviner.
Le fichier est lu dans la page avec FileReader et transmis à BarcodeDetector.detect() sous forme d'image. Les images déposées ou collées suivent le même chemin ; une capture de la caméra est dessinée sur un canvas et lue à partir de là. Le fichier doit être une image et rester sous 15 Mo : un PNG de 30 Mo a été refusé avec un message.
Rien n'est téléversé : l'image ne fait jamais partie d'une requête. La taille en pixels limite moins qu'il n'y paraît — une image de test de 9000 x 9000 a été lue en une seconde environ — et un fichier que le navigateur ne peut pas lire comme image est désormais signalé au lieu de ne rien faire.
La caméra ne s'ouvre qu'à l'appui sur Démarrer la caméra, et le navigateur demande l'autorisation à ce moment-là. L'image est décodée à l'appui sur Capturer et décoder, et Arrêter la caméra libère le flux et masque l'aperçu ; il n'y a pas d'analyse continue pendant que la vidéo tourne.
Chaque lecture repart de zéro : deux appuis sur Décoder l'image pour la même photo donnent les mêmes valeurs, et une lecture sans résultat le dit en laissant la liste vide. Le texte décodé est affiché comme du texte : un code QR contenant du balisage HTML est affiché, pas interprété.