MT:Y.K9042C00KA0648G0022 bytes- kind
- Matter pairing code
- device
- Aqara FP2 presence sensor
- room
- Utility closet · shelf 2
- filed
- 2026-02-11
- label
- ● faded — reprint queued
local-first · no account · plain text
Every QR code on your hardware — Matter pairing codes, Zigbee labels, guest Wi-Fi cards, warranty links — is a few hundred bytes printed on something that fades, peels or goes out with the packaging. QR Deck files the bytes, the metadata and the print settings, so a ruined label is a reprint instead of a factory reset.
MT:Y.K9042C00KA0648G0022 bytesThe pairing code on a two-year-old sensor is grey on grey. The device works fine; the code is unreadable.
For a lot of smart-home gear the only printed copy of the code was on the packaging you binned on day one.
Mounted, painted over, drilled through. Once the sticker is behind the plasterboard, a factory reset is the only way back.
the loop
Scan it with the camera or paste the raw string. QR Deck decodes it and records the encoding, the version, the mask and the error-correction level exactly as printed.
Name it. Say which device, which room, which shelf. Tag it, note the condition of the physical label, and attach a photo of the original while it is still readable.
Reprint at any size, any ECC level, on any label sheet. QR Deck re-decodes what it just generated and compares it byte-for-byte with the stored payload before anything reaches the printer.
the record
An entry is not a photograph of a QR code. It is the string, plus everything you would need to print that string again in ten years without the original in front of you.
{
"format": "qr-dex",
"schema": 1,
"written": "2026-02-11T09:14:00.000Z",
"issued": 42,
"entries": [
{
"id": "042",
"name": "Aqara FP2 presence sensor",
"payload": "MT:Y.K9042C00KA0648G00",
"kind": "matter-pairing",
"ecc": "Q",
"mask": 3,
"print": {
"moduleMm": 0.8,
"quietZone": 4,
"sheet": "avery-l7651"
},
"original": {
"path": "originals/042.jpg",
"bytes": 214883,
"width": 1600,
"height": 1200,
"taken": "2024-05-03"
},
"collections": [
"Home Assistant",
"Matter & Thread"
],
"tags": [
"home-assistant",
"matter",
"presence"
],
"condition": "faded",
"filed": "2026-02-11",
"verified": "2026-02-11",
"device": {
"name": "Aqara FP2",
"serial": "AQ-FP2-8F2A91C4"
},
"location": {
"room": "Utility closet",
"detail": "shelf 2, behind the boiler"
}
}
]
}One JSON file holds every entry, shown here with one of them. Readable in a text editor, and readable without QR Deck — which is the point of keeping the payload rather than a picture of it.
recreate
Error correction is a decision you make at print time, not something you inherit from a faded label. Put a Q or H code in the plant room where it will get damp; leave L on the card in the drawer.
Every generated symbol is decoded again and checked against the stored payload before it prints. If the two do not match, nothing goes to the printer.
export
One dex, one file, with the photographs beside it. Push it, sync it, grep it, diff it. There is no lock-in to break out of, because there is nothing holding the data in.
qr-deck/
├── dex.json # every entry: 148 of them, 6 collections
└── originals/
└── 042.jpg # photo of the label, 2024-05-03Last export 3 days ago · 4 saves since.