Stegstr
Getting started

Your first hidden message

Five minutes, no account. Works the same in the web version and the desktop app.

1. Choose a photo

Use a real photograph with detail: foliage, fabric, a crowd, brickwork. The hidden data lives in the texture, so a plain wall, a sky, a screenshot or a logo carries very little and Stegstr will tell you the image is too small for the payload.

2. Write, then embed

In the app, write a post or pick the notes you want to carry, then choose Embed image. The default method is Robust, which survives being recompressed and resized by messaging apps. Choose a payload mode:

ModeCarriesWhen
StandardA short note, about 160 bytesThe usual choice; the message travels entirely inside the image.
LocatorA pointer to your postMost robust. The image carries only a locator; the post itself syncs over relays when both sides have Network on.
BulkOver a kilobyteOnly for channels that do not recompress: "send as file", email, a drive.

Stegstr reads the image back before saving it. If the self-test fails, nothing is written and the app says why.

3. Send it anywhere

Send the JPEG as a normal photo through WhatsApp, Telegram, Instagram, or anything else. Do not screenshot it, rotate it, or crop it; those destroy the hidden data. Recompression and resizing are fine.

4. Detect on the other side

The recipient opens Stegstr, drops the received image on Detect, and the message appears. Stegstr tries every hiding method it knows and verifies the result, so images made by older versions still open.

Turning Network on

Network is off by default. Turn it on to sync posts and direct messages over Nostr relays; the default relay is the Stegstr relay, and public relays can be added in Settings. A Local identity never publishes. Read what leaves your device before you switch it on.

Mac users: the app is unsigned. The first time, right-click it and choose Open.