SQR encodes short messages into images using invisible frequency-domain watermarking. The watermark survives printing, photographing, compression, and moderate cropping.
How it works
- A unique 5-character ID (e.g.
A1B2C) is generated for each record
- The ID is encoded into the image’s frequency domain using a spread-spectrum technique
- The watermarked image looks identical to the original — the difference is imperceptible
- To verify, a photo of the watermarked image is decoded to recover the embedded ID
Embed a watermark
Via record creation (recommended)
When you create a record, the watermark is embedded automatically:
The response includes watermarked_image (base64) — decode and save it:
Standalone embed
If you just want to embed a message without creating a record:
The message is limited to 5 characters. This is by design — shorter payloads are more robust against degradation.
Scan a watermark
To decode a watermark from a photograph:
The corners parameter defines the four corners of the label in the photo, allowing SQR to correct for perspective distortion.
Scan via record endpoint
Once you have the decoded watermark ID, look up the record:
And log the scan event:
Best practices
- Use high-resolution source images (1000px+ on the shortest side)
- Avoid heavy JPEG compression on the watermarked output
- When printing, use at least 300 DPI
- For scanning, photograph the label straight-on with good lighting