A chat bubble recodes the modules. Document send carries the PNG.
Last updated: 7 September 2026
WhatsApp will recode a picture you send as a photo. A QR code is a picture made of sharp modules. Those two facts collide. This page is only that collision.
It is not a codec page about WebP or AVIF. It is not a PDF page about twelve bubbles. It is not a GPS page. The generator stays on the homepage. Files versus Photos stays on iPhone. Camera versus Lens stays on Android.
People encode a WiFi password here, tap WhatsApp, pick the square from Recents, and send it as a photo to the group that asked for the guest network. The other phones show a bubble. The bubble is WhatsApp’s JPEG. The JPEG has been quantised, often downscaled, often given rounded corners by the chat UI. Finder patterns that were 7 by 7 modules of pure black on pure white are now grey ramps. A camera pointed at that bubble fails. A camera pointed at the original PNG in Files succeeds. Mark did not fail. The pipe did.
Photo send versus document send
Photo send is their recode. Document send is a pipe for bytes. Status is a recode that expires. View once is a recode with a flag. Forwarding a bubble forwards the recode, not the Files object. Starred messages are not an archive of Mark’s canvas. HD or quality toggles change their recode. They do not preserve error-correction modules you paid for with level H.
Document send: attach the PNG from Files or Downloads. The other person can keep a file named like a PNG. Their in-chat preview may still be a downscaled JPEG thumbnail — that thumbnail is not the file. Tell them to open the document, save it, and scan the file, or to point Camera at the document viewer at full zoom with the quiet zone visible. You cannot control their client. You can control which object you attached.
WhatsApp Web and Desktop love Pictures
The file dialog loves Pictures. Pictures is DCIM. DCIM is camera JPEGs. If you encoded on the phone and never copied the PNG to the computer, Web cannot attach a file that only exists on the phone. If you encoded on the computer, the Mark download is in Downloads, not Pictures. Point the dialog. This is the same class of mistake as sending Recents from a phone, with a different folder name. iPhone Files versus Photos is the iPhone page, not a second essay here.
A screenshot of the chat is a photograph of a recode
Cropping the screenshot in the gallery crops the quiet zone. Sending the screenshot as a new photo recodes it again. Three generations away from Canvas, a cheap camera will not recover the payload. If you need someone to scan now, hold the Files PNG full screen, or hold the generator preview, and let their camera see the live pixels. That is a display, not a master. Keep the PNG.
Stickers, status, view-once
None of those are a file format Mark emits. A sticker is their format. Status expires. View-once is a delivery flag. Encode for a file you still hold. Vanishing and “view once in HD” still recode. HD is their slider, not a promise about finder patterns.
Group admin who wanted one small square
School parents dump a burst of screenshots into the group and ask why half the phones fail. Encode once, 1024 PNG, high contrast, quiet zone 8 if it will be printed later, send as document, caption the SSID so people know what they are joining. Guest network fields: guest WiFi. Everyone else can keep sending photos of their lunch. Mark does not moderate the group and does not unzip their burst.
In-chat scanners are not Camera and not Lens
Some WhatsApp builds read WIFI: payloads. Some open the URL in an in-app browser. Some fail on dense vCards. You do not patch their scanner by re-encoding at a different ECC if the object in the bubble is already a JPEG. Fix the object first. Android Camera versus Lens is the Android page.
What Mark does before you open WhatsApp
Payload in this tab, qrcode library, Canvas, optional logo at roughly 18 percent with ECC forced to H, PNG or SVG download. Nothing posted. No watermark. No short link that would “survive” a recode — the recode would still have to read the modules. A dynamic vendor’s short URL is a different product: the bubble would recode their mark too. Static is not a vaccine against JPEG. It is a refusal to take your WiFi password onto our server. How to fill the fields: how to.
The ceiling
Mark cannot patch WhatsApp. Mark cannot publish a fake “WhatsApp accepts a 1024 PNG as a photo and keeps the modules” megabyte. A 1024 PNG may still be heavy as a document on a weak network; it will still scan better than their photo recode. Mark cannot unsend a photo stack. Mark cannot make a screenshot of a bubble into SVG.
Steps
- Encode on the homepage. Prefer a short https link over a paragraph. For WiFi, use the WiFi type so the string is WIFI:T:… not a URL that happens to mention the SSID. Size 512 or 1024. Margin 4 or 8. Dark on light. Logo only if you will test on a second phone after the chat recode, not only in the preview.
- Save the PNG to Files or Downloads. On iPhone that split is iPhone. On Android it is Files versus Pictures — Android. Do not skip saving because the preview “looks scannable”.
- WhatsApp → attach document → that file. Skip the photo grid. Skip Recents. Skip the in-app camera.
- If they insist on photos, you are choosing recode. Say so. Hold the screen instead. Or send the document anyway.
- Ask one person in the group to scan before you print a hundred stickers of the same payload. Chat success is not print success. Paper: print.
What looks like a bug and is not
- They received a soft square that will not scan. Photo send. Send the Mark file as document.
- The document preview is blurry but the saved file scans. Their thumbnailer. Tell them to open the file.
- Desktop attached a JPEG from Pictures named IMG_2048. Wrong folder.
- View once expired. Delivery mode, not encode.
- Forwarded bubble fails, original document in your Files still scans. You forwarded the recode.
- Status looked fine and died tomorrow. Status is not a file.
- Someone scanned the bubble with Lens and got a different URL than you encoded. They scanned a crop, a reflection, or a different square in the thread. Confirm the document.
Honesty limits
We do not copy WhatsApp Inc. help. We do not promise an in-chat scanner will read ECC H with a logo after JPEG. We do not end-to-end encrypt the file beyond what their client already does. We do not unsend. Success is a PNG you opened, attached as a document, from Files or Downloads, that a second camera could read before you needed the group to. If you still dump Recents into the thread, you sent photos. Matrix contrast itself is troubleshooting.