Click through the live preview below exactly like your recipient will, and double-click any text or picture to change it right where it sits. Or let an AI assistant build it with you (see below). By default nothing here gets saved or sent anywhere — the link is put together entirely in your browser. If you'd rather have a short link, switch on “Save online” below.
To get through, select the cute animals — and leave the blobfish alone. Shows how your own pictures go into the grid.
Give ChatGPT, Claude, Gemini or any other assistant the address below. That one file holds everything it needs: how to ask you the right questions, every parameter, pictures, and how to save the Valentine online through the API or the MCP server (https://d-solve.de/projects/valentine-captcha/llms.txt).
Prefer to write the link yourself? Every parameter is listed with a working example in the documentation.
The assistant only sees what you type into it. Like every Valentine link, the finished link holds all of its content in plain sight.The preview is fully clickable. Double-click anything that lights up on hover to edit it — changes show instantly. Enter saves, Esc undoes. The language switch changes every text you haven't overridden yourself — buttons, loading messages, errors, the reveal.
Either everything travels inside the link and nothing is stored anywhere — or we keep it on a d-solve.de server for a while and you get a short link instead.
Your texts and pictures are kept on a d-solve.de server (Cloudflare, EU/worldwide network) and deleted automatically when the retention period ends. Anyone who has the link can open the Valentine.
You opened a saved Valentine without its edit key, so it’s read only — your changes can be saved as a new Valentine with the button above.
Without it nobody, not even we, can change or delete this Valentine later. Copy it somewhere safe. Never put it into a link.
Read only — you don’t have the edit key for this Valentine. Change whatever you like and save it as a new Valentine.
Double-click a square in the preview (or tap it under “Everything you can change”) and use “Upload picture” there. Deleting a picture here also clears the square that shows it.
Sign in to keep your saved Valentines together — no password, and no key to look after.
Signed in as
One line per recipient: recipient; sender; message. Everything else is taken from the Valentine you built here. Each edit key is shown only once — copy the table before you leave.
| Recipient | Short link | Edit key |
|---|
In the intro and final headlines, the intro paragraph, the “what to find” line and the slider question you can wrap a
phrase in *asterisks* to put it in the italic accent colour, and press
Shift+Enter for a line break.
Can't double-click (e.g. on a phone)? Tap a name here instead. A dot marks what you've already changed.
“All” is the default and the joke: every square secretly has a heart. Squares are numbered 1–9, left to right and top to bottom — the same numbers the preview shows in each square's corner.
Pick at least one square — until you do, all squares count.
Paste a finished Valentine link to read its settings back into the preview — useful for changing one you already built. Anything the link doesn’t set is reset to the default.
Double-click a square in the preview and paste a picture link. Leave a square empty to keep its built-in heart placeholder. For quick testing, a stand-in like https://dummyimage.com/600x400/000/fff&text=test-image-1 works too.
Where do I get a link for my own photo? A photo on your phone or laptop has no URL, so it has to go somewhere public first. Whatever you use, the link must point straight at the image file and start with https:// — paste it into a private/incognito window, and if you see the bare picture and nothing else, it will work here.
upload.wikimedia.org/… link, which is free, permanent and the most reliable option.i.imgur.com/… address), GitHub's Raw button, S3, Cloudinary. Or drag a folder of photos onto Netlify Drop for instant public URLs, no account needed.data: URI. Nothing gets uploaded anywhere, nothing can expire or be taken down, and nobody but the recipient ever sees it. The cost is length: each picture adds thousands of characters to the finished link, and very long links get mangled by some chat apps. Links over roughly 18 000 characters don't open at all in Safari on iPhone (just a white page), and one embedded photo can add 5 000–15 000. Keep the images small, and don't do it for all nine squares.
data: URIbase64 -w0 photo.webp
[Convert]::ToBase64String((Get-Content photo.webp -AsByteStream))
data:image/webp;base64, — or data:image/jpeg;base64, for a JPEG, data:image/png;base64, for a PNG. The prefix has to match the actual file type.Online base64 converters work too, but most of them upload your photo to their server first — which defeats the point. Use one only if it states that it converts in your browser, or stick to the commands above.
Google Photos and iCloud share links are album pages, not files, and won't work. Squares are shown at roughly 200×200 pixels and cropped to a square, so small, roughly square pictures look best. Shrinking a photo down before turning it into a data: URI is covered in the documentation.