About KeepsakeCodes
KeepsakeCodes makes QR codes that are meant to be kept: printed inside an engagement-ring box, set on a wedding table, framed beside a photograph. A plain black-and-white code does its job on a parking meter; it looks wrong on an anniversary card. This site decorates the code — and then proves, before you download it, that the decoration did not break it. KeepsakeCodes is published by Sumvia, the team behind the Sumvia.net network of free browser-native tools.
What an artistic code is
A QR code is a grid of dark and light squares with a few fixed landmarks a scanner locks onto. Artistic codes restyle what can safely be restyled and leave the landmarks alone. KeepsakeCodes offers three families: framed codes, where the untouched code sits on a clean panel inside decorative frame art (heart, floral, ring, classic, or confetti); heart-module codes, where each dark square is redrawn as a small heart; and photo halftone codes, where a picture is shaded into the code itself so the image and the data share the same surface. Eight occasions have dedicated tools — proposal, wedding, baby reveal, valentine, gift tag, treasure hunt, memorial, and pet tag — each preconfigured with the right style, wording, and payload type, plus the photo code for the halftone style itself. A code can carry a link, a hidden message shown at scan time, or a contact card (vCard).
The decode-verify promise
Decoration is risk: every restyled square is a square a scanner might misread. Most decorative QR services leave you to discover the failure after printing. KeepsakeCodes does not: after every render, your browser rasterizes the artwork to an image and runs a real QR decoder on it, then compares the decoded bytes with what you asked to encode. Only an exact match earns the "Verified scannable" badge — and downloads stay locked until a render has that badge. The same check runs in our automated test suite against every style, at multiple sizes, rotated, and after JPEG compression, so a change that breaks scannability cannot ship.
Static codes never expire
Every code made here encodes your content directly — your URL or your message is inside the image itself. There is no shortener, no redirect through our servers, and no subscription keeping the code alive. If this site vanished tomorrow, every code it ever produced would keep scanning. That matters more for keepsakes than for anything else a QR code is used for: a wedding frame should still work at the twentieth anniversary.
Everything happens in your browser
The content you encode, and any photo you blend into a halftone code, is processed entirely on your device. Nothing is uploaded, logged, or stored — photos never leave your computer, and there is no account to create. Once the page has loaded, the generator keeps working on a flaky connection. This is a deliberate design constraint of every Sumvia site.
Tested rendering logic
The encoder and every artistic style are implemented as small, typed functions with automated decode round-trip tests. The example codes shown in page copy are generated at build time by the same engine that powers the interactive tools, so the documentation cannot drift from the implementation. The full rules — which parts of a code may be styled, which must not, and the measured limits behind them — are on the methodology page.
Honest limits
An artistic code is still a physical object at scan time. Print size, paper, lighting, and the scanning phone all matter, and no on-screen verification can guarantee a particular printed result. Our verification means the artwork itself decodes cleanly; you should still scan a test print with a real phone before the moment that matters — the methodology page explains how much margin each style keeps for print degradation.
Get in touch
Found a code that would not scan, or want a new frame style? See the contact page — scan-failure reports are especially welcome and are treated seriously.