Embedding Payloads
The Embed workflow hides text or file data inside an image or WAV carrier. ##
Carrier Options
Images
Stegodon accepts image carriers and writes the output as PNG.
For images, hidden data is embedded into the least significant bits of selected RGB channels.
WAV audio
Stegodon supports PCM WAV files with:
- 8-bit samples
- 16-bit samples
For WAV files, hidden data is embedded into least significant bits of audio samples.
Embedding Controls
Bits per channel/sample
| Setting | Meaning |
|---|---|
| 1 | Lower capacity, stealthier |
| 2 | Higher capacity, easier to detect |
Image channels
For images only, you can choose any combination of:
- Red
- Green
- Blue
Alpha is not used.
If no image channels are selected in the UI, the code defaults to all three.
Randomize payload placement
When enabled, the payload is not written in simple sequential order.
Instead, Stegodon shuffles the available embedding positions using:
- a passphrase-derived seed
- xorshift32
- Fisher–Yates shuffling
The header itself remains sequential so extraction can discover the file format and options.
AES-GCM encrypt payload
When enabled, the payload is encrypted before embedding.
Encryption uses:
- AES-GCM
- PBKDF2 key derivation
- SHA-256
- 150,000 iterations
- 16-byte salt
- 12-byte IV
- 256-bit AES key
The salt and IV are stored in the header.
Payload Types
Text
The entered text is UTF-8 encoded and embedded as bytes.
File
The selected file is embedded as raw bytes.
The filename is stored in the Stegodon header and shown again during extraction.
Capacity
Stegodon computes approximate raw capacity.
Image capacity
Capacity depends on:
- image width and height
- selected channels
- chosen LSB depth
Approximate formula:
capacity_bits = number_of_pixels × selected_channels × lsb_count
capacity_bytes = floor(capacity_bits / 8)WAV capacity
Capacity depends on:
- sample count
- bits per sample
- chosen LSB depth
Approximate formula:
capacity_bits = number_of_samples × lsb_count
capacity_bytes = floor(capacity_bits / 8)Overhead
Embedded data includes:
- a Stegodon header
- the payload bytes
- optional filename bytes
- optional crypto salt and IV
This means your usable payload size is smaller than the raw capacity estimate.
Embedding Process
At a high level, Stegodon does the following:
- Gather carrier settings.
- Read the payload.
- Optionally encrypt the payload.
- Build a compact header.
- Convert header and payload bytes into LSB-sized symbols.
- Write the header sequentially.
- Write the payload sequentially or randomized.
- Export the result.
Output Preview
During image embedding, Stegodon shows:
- original preview
- stego preview
During WAV embedding, Stegodon shows:
- original audio player
- stego audio player
It also provides a direct download link.
Common Errors
Payload too large
If the payload plus header exceeds available capacity, Stegodon throws an error.
Missing passphrase
If randomization or encryption is enabled and the passphrase is blank, embedding is blocked.
Unsupported WAV
If the WAV is not PCM 8-bit or 16-bit, embedding will fail.
Best Practices for Embedding
- Use PNG for images
- Use WAV PCM for audio
- Use 1-bit LSB when stealth matters most
- Use encryption for confidentiality
- Use randomization for stronger concealment
- Avoid filling the carrier near maximum capacity unless necessary
Updated 7 days ago
