StegoToolkit

WebP Steganography Encoder

Hide text or files inside WebP images using LSB embedding across RGB(A) pixels, seeded scatter mode, and automatic lossy-to-lossless conversion. Real pixel-level verification, AES-256-GCM encryption, CTF challenge builder. 100% client-side.

1-4 bit depth
Lossy auto-convert
AES-256
100% client-side

Before uploading: share the output only as a file attachment, not a social/chat "share as image" link — Twitter, Instagram, WhatsApp, and Facebook all re-encode WebP images to JPEG on upload and destroy hidden data.

Try demo — embed a message instantly

Loads a short sample lossless WebP — no upload needed

Drop a WebP file here

Lossless (VP8L) works best — lossy (VP8) is auto-converted

100% Client-Side Processing

Your image is decoded and re-encoded entirely in this browser tab via WebAssembly. Nothing is uploaded.

How to Hide Data in a WebP Image (5 steps)

  1. Upload a WebP image — lossless (VP8L) works directly; lossy (VP8) is converted automatically
  2. Type your secret message or upload a file to hide
  3. Choose bit depth and channels (Standard/Forensic mode) — 1-bit RGB is the safe default
  4. Add a passphrase for AES-256-GCM encryption (recommended)
  5. Click Embed — download your stego WebP (output stays WebP, not PNG)

WebP Steganography Methods — What This Tool Handles

MethodMechanismCapacityBest For
LSB in RGB(A) pixelsModifies the least significant 1-4 bits of raw pixel channel values(pixels × channels × bit_depth) / 8 bytesRecommended default — imperceptible at 1-bit depth
Scatter (seeded PRNG pixel order)Passphrase-seeded Fisher-Yates shuffle picks non-sequential pixel positionsSame as LSB, non-sequentialForensic mode only — breaks the sequential pattern LSB detectors expect, but needs the seed to decode
Lossy → lossless auto-convertDecodes a lossy (VP8) source and re-encodes it as lossless (VP8L) before embeddingn/a — carrier preparation stepAutomatic whenever a lossy WebP is uploaded — no additional quality loss

Frequently Asked Questions

What's the difference between lossless and lossy WebP?

Lossless WebP (VP8L) preserves exact pixel values — perfect for steganography. Lossy WebP (VP8) modifies pixels during compression, which would destroy hidden bits. This tool automatically detects which type your file is and converts lossy input to lossless before embedding.

Why does the output stay as WebP instead of converting to PNG?

Most steganography tools convert WebP to PNG. This tool preserves the format — web developers using WebP need WebP back. Lossless WebP is often smaller than an equivalent PNG with identical pixel values, though the actual saving depends on the image.

Can I embed data in animated WebP?

Not yet — per-frame embedding for animated WebP is a planned feature. Uploading an animated WebP shows a clear message rather than a silent failure; use a still WebP for now.

My WebP file is 'lossy' — can I still use it?

Yes — it's converted to lossless first. This decodes the lossy WebP's current pixel values (which already have lossy artifacts) and re-encodes them losslessly. No additional quality loss occurs, but the file will be larger.

Are files uploaded to a server?

No — pixel decode/encode runs entirely in your browser via WebAssembly (the same libwebp-based library used by the WebP Decoder and StegSolve Online). Files never leave your device.

Related Tools