StegoToolkit

Pixel Value Differencing Hider

Hide text or files in a PNG/BMP using Pixel Value Differencing (Wu & Tsai, 2003) — edge pixels carry more bits, smooth pixels carry fewer. Edge capacity map, PDH histogram, PSNR/SSIM, AES-256-GCM.

AES-256
Adaptive

Try the demo instantly

Loads a 200×200 textured PNG — shows the edge capacity map immediately

Drop PNG or BMP here, or click to browse

JPEG not supported — lossy compression destroys embedded bits

100% Client-Side Processing

Your image is processed entirely in this browser tab. Nothing is uploaded to any server.

How to Hide Data Using Pixel Value Differencing (5 steps)

  1. Upload a PNG or BMP image as the carrier
  2. Type your secret message or upload a file to hide
  3. Add a passphrase for AES-256-GCM encryption (recommended)
  4. Optional: open Advanced to adjust range table, scan mode, and channel
  5. Click Embed — download your stego PNG with quality metrics

Pixel Value Differencing — 3 Variants Compared

VariantMechanismCapacityBest For
Standard PVDHorizontal pixel pairs, Wu & Tsai (2003) range tableHigh — edge pairs carry up to 7 bitsGeneral-purpose adaptive hiding
Zigzag PVDDiagonal scan order — same range table, different pair orderSimilar to StandardSlightly reduced PDH detection signature
Hybrid PVD+LSBPVD for edge pairs, 1-bit LSB fallback for smooth pairsHigher — smooth regions still carry dataMaximum capacity; combines both detection profiles

Frequently Asked Questions

What is Pixel Value Differencing steganography?

PVD (Wu & Tsai, 2003) is an adaptive steganography method that uses the difference between adjacent pixel values to determine embedding capacity. Pixels in edge regions (large differences) can absorb more hidden bits than smooth regions (small differences) without visible distortion — exploiting the human visual system's reduced sensitivity to changes in high-variation areas.

How does PVD compare to LSB steganography?

LSB modifies the same number of bits in every pixel regardless of image content. PVD is adaptive — edge pixels carry more bits (up to 7), smooth pixels carry fewer (as few as 3). PVD typically achieves higher visual quality (PSNR) at the same payload size, and resists chi-square/RS steganalysis that specifically targets LSB patterns. PVD has its own detection signature instead — Pixel Difference Histogram (PDH) analysis.

Why not JPEG?

JPEG's lossy re-compression changes pixel values in ways that destroy the precise differences PVD embeds. Use PNG or BMP — both lossless, preserving every pixel value exactly.

What's the falling-off boundary problem (FOBP)?

When PVD adjusts a pixel pair to embed data, the resulting values can theoretically exceed [0, 255]. This tool checks, before embedding into any pair, whether the range's worst case would clip — if so, that pair is skipped entirely (left unmodified) rather than blindly clamped, which is what the original naive approach does and what can silently corrupt the decoded bitstream. The Extractor reproduces the exact same skip decision automatically.

What does the range table selector do?

The range table maps a pixel pair's difference to how many bits it can carry. Wu & Tsai's original 6-range table is the standard. The 3-Range and 4-Range alternatives trade some capacity for higher image quality (PSNR) — Advanced mode shows live capacity and PSNR estimates for each.

What's the PVDSTEG v1 header for?

Every encoded image includes a 20-byte PVDSTEG v1 header (variant, range table, channel, encryption flag, compression flag, RS level, payload length, CRC32) embedded via pure PVD on the Blue channel. The Pixel Value Differencing Extractor auto-detects this header — zero configuration needed to decode.

Can PVD steganography be detected?

Yes — Pixel Difference Histogram (PDH) analysis reveals the characteristic stepped pattern the range table creates in the distribution of pixel differences (Zhang & Wang, 2004). Zigzag scanning slightly reduces this signature. AES-256-GCM encryption ensures content stays unreadable even if the embedding itself is detected.