Couples Dare Game

Each partner uploads a secret photo and sets a dare for the other. Your partner's photo stays blurred until they complete your dare — then it's revealed with confetti. Runs entirely in your browser; nothing is ever uploaded.

Privacy first: Photos never leave your device. Everything runs in JavaScript using FileReader & Canvas. Use the export button to share a save-file with your partner.
Partner A — Your Setup
📷
Tap or drag a photo here
Partner B — Your Setup
📷
Tap or drag a photo here

Both partners need to fill in their section before starting. You can also do it separately using the Share / Import flow.

Each person's photo is locked behind the dare their partner set. Complete the dare, then tap "I did it!" to reveal the photo.

Export session

Save the current session (photos + dares + completion state) as a JSON file. Send it to your partner so they can load it on their own device.

Import session

Load a session file your partner exported. Your existing progress will be merged (dares you already completed stay completed).

📂
Tap or drag a session.json here

How it works

① Each partner sets upUpload a photo and type a dare challenge for the other person.
② Photos are lockedEach photo is pixelated/blurred via Canvas. You see a teaser — not the real picture.
③ Do the dareRead your partner's dare, complete it in real life, then tap "I did it!"
④ Photo revealedThe original photo appears with a confetti burst. No cheating — it only unlocks on your side.
⑤ ShareExport the session as JSON and send it to your partner so they can continue on their device.

Frequently asked questions

Is anything sent to a server?
No. This tool is 100% client-side. Photos are read locally with the browser's FileReader API and drawn on a Canvas element. Nothing is ever uploaded anywhere. When you export a session, the JSON file is generated in memory and downloaded directly to your device.
Can my partner really not see the photo until they complete the dare?
The photo is immediately pixelated on canvas — the original image data is kept in a JavaScript variable, but the visible preview is a heavily pixelated Canvas render (8×8 pixel blocks). The full image is only drawn back to the canvas when "I did it!" is tapped. Since everything is in the same browser session, there is no hard cryptographic lock — this is a fun honour-system game, not a security product. For extra mystery, set up your partner's dare on their device, or use the export/import flow so each person only loads their own session file.
What happens to the exported JSON file?
The JSON contains the names, dare texts, completion flags, and the photos encoded as base64 data URLs. You can text, email, or AirDrop the file to your partner. They load it on their own device using the Import flow, and the game continues independently on each device. Neither copy depends on a network connection.
What photo formats are supported?
Any image your browser can decode — JPEG, PNG, WebP, HEIC (on Safari), and GIF. Very large photos (above ~8 MB) are still read but may take a moment to process.