[{"data":1,"prerenderedAt":128},["ShallowReactive",2],{"tool-content-en-image-steganography":3},{"id":4,"title":5,"body":6,"description":118,"extension":119,"locale":120,"meta":121,"navigation":122,"path":123,"seo":124,"stem":125,"toolId":126,"__hash__":127},"tools\u002Ftools\u002Fen\u002Fimage-steganography.md","Image Steganography",{"type":7,"value":8,"toc":107},"minimark",[9,14,18,22,62,65,69,72,76,86,90,93,97,100,104],[10,11,13],"h2",{"id":12},"what-this-tool-does","What this tool does",[15,16,17],"p",{},"Hide a secret message or an entire file inside an ordinary image, then read it back out. The data lives in the least significant bit of each pixel's color channels — a change of at most ±1 per channel, invisible to the eye. Everything runs locally in your browser; nothing is uploaded.",[10,19,21],{"id":20},"hiding-data","Hiding data",[23,24,25,34,45,52],"ol",{},[26,27,28,29,33],"li",{},"Load a ",[30,31,32],"strong",{},"cover image"," (PNG, WebP, or JPEG — click, drag-and-drop, or paste).",[26,35,36,37,40,41,44],{},"Choose ",[30,38,39],{},"Text"," or ",[30,42,43],{},"File"," and provide the secret.",[26,46,47,48,51],{},"Optionally set a ",[30,49,50],{},"password",".",[26,53,54,55,58,59,51],{},"Press ",[30,56,57],{},"Hide in image",", then ",[30,60,61],{},"Download PNG",[15,63,64],{},"The capacity bar shows how many bytes the image can hold (roughly width × height × 3 ÷ 8, minus a small header). Fully transparent pixels are skipped, since pipelines routinely destroy their color values.",[10,66,68],{"id":67},"encryption","Encryption",[15,70,71],{},"With a password set, the payload is encrypted with AES-256-GCM using a key derived via PBKDF2-SHA256 (310,000 iterations) before a single bit touches the image. The salt and IV are random per embed. Without the password the data is unreadable — and undetectable as encrypted.",[10,73,75],{"id":74},"extracting","Extracting",[15,77,78,79,82,83,85],{},"Switch to ",[30,80,81],{},"Extract",", load the image, enter the password if one was used, and press ",[30,84,81],{},". The tool tells apart the failure modes: no hidden data at all, data written by a newer format version, data truncated by cropping or re-encoding, and a wrong password.",[10,87,89],{"id":88},"the-one-rule-keep-it-png","The one rule: keep it PNG",[15,91,92],{},"The hidden bits are part of the exact pixel values. Re-saving as JPEG, screenshotting, or sending the image through chat-app compression recomputes pixel values and destroys the payload. Keep the downloaded PNG untouched end to end. If an embed succeeded but extraction says \"no hidden data\", the image was recompressed somewhere along the way.",[10,94,96],{"id":95},"verification","Verification",[15,98,99],{},"After embedding, the result view compares cover and result side by side and reports the stats: pixels changed, max channel delta (always ±1), mean delta, and PSNR — typically above 50 dB, far beyond what eyes or casual inspection can distinguish.",[10,101,103],{"id":102},"performance-and-privacy","Performance and privacy",[15,105,106],{},"Embedding and extraction run in a Web Worker when available, with a main-thread fallback. Your password and secret are never persisted — this tool stores no preferences or user data at all.",{"title":108,"searchDepth":109,"depth":109,"links":110},"",2,[111,112,113,114,115,116,117],{"id":12,"depth":109,"text":13},{"id":20,"depth":109,"text":21},{"id":67,"depth":109,"text":68},{"id":74,"depth":109,"text":75},{"id":88,"depth":109,"text":89},{"id":95,"depth":109,"text":96},{"id":102,"depth":109,"text":103},"Hide text or files inside PNG pixels with LSB steganography, optional AES-GCM encryption, and extract them back — all in your browser.","md","en",{},true,"\u002Ftools\u002Fen\u002Fimage-steganography",{"title":5,"description":118},"tools\u002Fen\u002Fimage-steganography","image-steganography","5uqQZ0_0dIfZPCRR8OPiQtlZ_T9qPLY4jiZzFPfAlAU",1792391418491]