Affiches, emballages, cartes de visite — le QR est partout, et poser un carré noir et blanc sur un design longuement travaillé a toujours laissé un regret. Mais s'il a cette allure, c'est pour une raison : c'est ce qu'on construit quand une caméra et un processeur de 1994 doivent pouvoir le lire.
Ces contraintes se sont largement levées. Les caméras de téléphone et la puissance de calcul ont de la marge. Alors, plutôt que de courir après la seule reconnaissance, nous avons dépensé cette marge du côté du plaisir des yeux. Il ne s'agit pas de remplacer le QR, mais de lui ajouter un siège voisin. Le résultat est un code-barres 3D — imprimé à plat, mais perçu en relief.
Choisissez selon l'endroit où il sera posé. Les types plans partagent le même contrat de données et ne diffèrent que par la silhouette ; True 3D H est l’extension en cube réel du groupe Y, avec son propre format. Tous les codes ci-dessous encodent https://tl.estre.so.
Trois faces n×n. Une marque d'un seul tenant, adaptée à la signalétique et aux objets.
Un format à part pour un vrai cube, avec des données distinctes sur 1…6 faces. Le générateur exporte aussi une vidéo de rotation (MP4), des patrons papier et des fichiers d’impression 3D.
La forme de base. Les cellules en losange se déploient autour d'un repère central.
L’encoche à 3 h fixe l’orientation et le type dans la silhouette elle-même. La gamme C0–C3 est réservée au scan rapproché ; à partir de C1, rapprochez le code ou zoomez.
Un cœur hexagonal complété de pièces d'angle, formant un triangle équilatéral.
Un triangle uni à son image à 180°. Charge utile la plus grande à k égal.
La charge utile nette est donnée pour ECC-M. Tous les types, H compris, peuvent porter un QR de secours à côté, si bien qu'il reste un chemin là où un code TL ne peut pas être lu. Pour H, il se place par défaut dans le coin supérieur gauche.
Le QR était la bonne réponse à son époque. Deux valeurs, des modules carrés, de grands motifs de repérage — chacun de ces choix existait pour qu'une caméra faible puisse tout de même lire. Sous ces contraintes, renoncer à l'esthétique était rationnel.
Cette prémisse a changé. Les caméras de téléphone d'aujourd'hui n'ont plus rien à voir, et le traitement vidéo en temps réel tourne dans un navigateur. Cette marge pouvait aller à la densité — ou à l'apparence. C'est la raison d'être de ce format.
La densité, elle, a été sacrifiée. Les cellules en losange sont moins efficaces en surface que les modules carrés. Ce format ne concourt pas sur la densité. S'il faut transporter beaucoup, le QR reste l'outil adapté.
Un pavage rhombille divise chaque cellule hexagonale en faces T, L et R.
Classer les trois luminances donne 3! = 6 résultats — un chiffre en base 6.
Un Reed–Solomon sur le corps premier GF(211) corrige les erreurs.
Invariant par transformation monotone. Les changements d'éclairage global, le gamma et la table tonale d'une imprimante sont monotones — ils ne peuvent pas changer un ordre. Si l'ordre survit, la valeur survit.
Le rendu reste libre. Le contrat de données se réduit à « l'ordre entre les faces, plus un écart minimal ». À l'intérieur, la couleur, la matière, les dégradés par face et l'animation sont ouverts. Cette liberté est le cœur du format.
Cela ne rend rien beau tout seul. Ce qui s'ouvre, c'est le contrat, pas le résultat. Ce que vous dessinez à l'intérieur reste votre travail.
Le décodeur fonctionne. Les quatre types se lisent sur des photos prises avec de vrais appareils ; reste à faire monter la précision et la vitesse. Chaque temps ci-dessous correspond à un décodage d'une photo fixe prise avec un vrai téléphone — ce n'est ni un temps de premier accrochage ni un taux de réussite en direct.
| Type | Photos réelles décodées | Un décodage sur photo fixe | Validation en direct |
|---|---|---|---|
| Type Y — cube unique | 9 / 16 | ≈ 1.8 s | mesures en cours |
| Type O — champ hexagonal | 29 / 48 | ≈ 1.9 s | mesures en cours |
| Type A — silhouette triangulaire | 18 / 19 | ≈ 2.4 s | mesures en cours |
| Type K — hexagramme | 18 / 27 | ≈ 3.1 s | mesures en cours |
| Variante QR central (les quatre types) · 2026-08-13 | 8 / 9 | — | mesures en cours |
Un décodage d’une seule photo fixe. Le Type O est désormais le plus rapide ; A, K et Y sont proches derrière. ⚠ Une version antérieure de cette page annonçait le Type Y comme le plus rapide : c’était un échantillon de 9 photos, et sur un échantillon élargi l’ordre s’est inversé. Ne lisez pas ces valeurs comme des temps de premier verrouillage en direct.
Le temps d'un décodage sur photo fixe ne prédit pas le ressenti d'un scan en direct. Lors des premières mesures sur appareil réel, une image rapide pouvait tout de même donner un premier accrochage lent lorsqu'il fallait beaucoup d'images avant une réussite, et le classement des types différait de ce tableau sur photo fixe. Ces relevés portent sur un seul appareil et un petit échantillon : nous n'attribuons donc pas encore de note d'usage en direct.
Les conditions de prise de vue comptent aussi. À la mesure, 9 pixels par cellule était le plancher de décodage, et à distance égale un objectif ultra grand-angle cadre le code plus petit et passe sous cette ligne (ultra grand-angle 7.6 px en échec / grand-angle 9.1 px en réussite). C'est pourquoi le scanner propose un choix d'objectif.
Dans la variante QR central, un bloc QR remplace le repère central. Ses motifs de repérage fournissent le point d'entrée en position et en orientation qui sert à décoder le corps TL environnant. Par défaut, le QR reste un secours qui porte un lien de lecture ; la charge utile, elle, reste dans le corps TL. Depuis le 2026-08-28, le générateur utilise par défaut, pour les types O, C, A et K, le repère TL central avec un QR de secours extérieur dans le coin supérieur gauche ; le QR central reste l'un des repères au choix. La ligne QR central du tableau ci-dessus mesure cette variante (campagne du 2026-08-13).
Le Type C et le True 3D H ne figurent pas dans le tableau ci-dessus ; pour H, ni taux de reconnaissance ni FPS en caméra réelle ne sont garantis. Le scanner a deux moteurs : R1 lit les types TL plans une image à la fois, et R2, le moteur par défaut, collecte les Types Y et H sur plusieurs images. Pour H, il ne livre le résultat qu’une fois les faces requises validées par RS/CRC. Dans les navigateurs dotés de BarcodeDetector, R2 lit aussi les codes QR ordinaires ; un lien lu dans un code QR ne s’ouvre jamais automatiquement — vérifiez l’adresse, puis touchez-le.
Mesuré le 2026-08-27 · échantillon de 110 photos (chacune essayée en 960 · 1440 px de petit côté). ⚠ L’essentiel de l’échantillon est photographié sur un écran : ce ne sont pas des chiffres d’impression ni de mise en situation. Et 123 des 233 images du corpus sont des prises limites conservées justement parce qu’elles ne se décodent pas encore — elles sont exclues ici. Seule la ligne QR central provient de la campagne du 2026-08-13.
La spécification du format et l'implémentation de référence sont publiées sous licence Apache 2.0. JavaScript vanilla, scripts de build Node.js dans le dépôt, zéro dépendance à l'exécution — cela tourne dans un seul fichier HTML.
N'implémenter que le décodeur suffit à être une implémentation conforme. L'adoption commence par le côté lecture.
| Site | Rôle | État |
|---|---|---|
| tlcube.estre.so | Générateur | en ligne |
| tlscan.estre.so | Scanner | en ligne — état › |
| tl.estre.so | Site de présentation | vous êtes ici |