Skip to main content

Hide a message inside a picture

Type a secret, drop in any picture, and get back one that looks identical, with your words tucked invisibly inside.

shhh…
{{ announcement }}
Choose what to do

1, Pick a picture

{{ encName || 'Your picture' }}
{{ encW }} × {{ encH }} px · fits about {{ capacity.toLocaleString() }} characters

2, Your secret message

{{ secretMessage.length.toLocaleString() }} characters {{ overCapacity ? (secretMessage.length - capacity).toLocaleString() + ' too many for this picture' : (capacity - secretMessage.length).toLocaleString() + ' left' }}

3, Hide it

Pick a picture and type a message first.

Your picture with the message hidden inside, it looks identical to the original
Done. Save it as a PNG and share it. The message survives only if the file stays a PNG, sending it through apps that re-compress images (like some chats) can wipe it.

Reveal a hidden message

Upload a picture made here and read the message hidden in it. Everything happens on your device.

1, Upload the picture

{{ decName || 'PNG uploaded' }}
Ready to reveal

2, Read it

Hidden on {{ decodedTimestamp }}

{{ decodedMessage }}

Your pictures never leave your browser. Everything is processed on your own device, nothing is uploaded. It works offline, and there is no sign-up. Curious how the trick works? Read the plain-English explainer.