StegoToolkit

JPEG Steganography Hider

Hide secret data inside real JPEG images using DCT-domain steganography (F5, JSteg) — embedded in the JPEG's own quantized DCT coefficients, not pixels. Also supports JPEG Comment/APP metadata storage.

Upload your JPEG image

The cover image that will contain your hidden data

or drag and drop

Supports JPEG/JPG files · max 50 MB desktop, 20 MB mobile

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

  1. Upload your JPEG photo as the carrier.
  2. Type your secret message or upload a file to hide.
  3. Add a passphrase to encrypt the payload (strongly recommended — also seeds F5's coefficient permutation).
  4. Choose an algorithm — F5 is best (most resistant to statistical detection), JSteg for higher capacity/CTF compatibility, or JPEG Comment for quick metadata storage.
  5. Click Encode — download your stego JPEG.

JPEG Steganography Methods Compared

MethodTechniqueCapacityBest For
F5 (recommended)Matrix encoding (Hamming codes) in DCT coefficients, passphrase-permuted~2–25 KB (varies by image)Default choice — real DCT-domain steganography, resistant to classical chi-square/histogram steganalysis
JStegLSB of non-zero DCT coefficients, no passphrase needed~5–60 KB (varies by image)CTF compatibility, higher capacity — detectable by chi-square/stegdetect
JPEG Comment (COM)Embeds data in the COM segment (0xFFFE marker) — metadata only, NOT steganography~64 KB capacityQuick, visible storage — works even on progressive JPEGs
APP Extension SegmentUses custom APP3 marker (0xFFE3) with identifier — metadata only~64 KB capacitySlightly more obscure than Comment, still visible to hex editors

Frequently Asked Questions

What's the difference between F5 and JSteg?

JSteg replaces the LSB of non-zero DCT coefficients sequentially — simple but detectable by chi-square statistical tests. F5 uses matrix encoding (Hamming codes) so multiple payload bits only require one coefficient change, and a passphrase randomizes embedding positions, making statistical detection much harder.

Why does re-saving a JPEG destroy hidden data in other tools?

Most browser tools use the Canvas API, which converts JPEG to pixels for editing, then re-compresses as JPEG — this re-encoding changes DCT coefficients and destroys any pixel-LSB data. F5/JSteg here modify JPEG DCT coefficients directly, so the output may survive re-save if quality is preserved and no recompression occurs.

What JPEG quality should I use?

Quality 70–90 is optimal. High quality creates many non-zero DCT coefficients (high capacity); low quality (<50) has very few, severely limiting F5/JSteg capacity. The tool shows real capacity computed from your specific JPEG.

Will social media platforms strip this hidden data?

Yes, for all methods. Most social platforms re-encode uploaded JPEGs, destroying DCT-domain embeddings (F5/JSteg) and stripping metadata (Comment/APP). Share via email, direct file transfer, or file-attachment upload — never an image-upload flow.

Is JPEG Comment/APP metadata storage secure?

No — it is explicitly NOT steganography. Anyone with an EXIF viewer or hex editor can see COM/APP segments. Use F5 or JSteg for real concealment; use Comment/APP only for convenience.

Can I hide data in progressive JPEGs?

Only with JPEG Comment/APP — F5 and JSteg require a baseline JPEG (multiple DCT passes aren't supported). Re-export as baseline in GIMP/Photoshop, or use the Comment method.