Last Updated on March 4, 2026
jdvrif is a fast, easy-to-use steganography command-line tool for concealing and extracting any file type via a JPG image.
There is also a Web edition which you can use immediately, as a convenient alternative to downloading and compiling the CLI source code.
For increased storage capacity and better security, your concealed data file is compressed with zlib and encrypted using the libsodium cryptographic library.
Supported platforms and data size limits:
You can conceal any file type up to 2GB*, although compatible sites (listed below) have their own much smaller size limits and other requirements.
Flickr (200MB), ImgPile (100MB), ImgBB (32MB),
PostImage (32MB), Reddit (20MB | -r option),
Pixelfed (15MB), Mastodon (~6MB), Bluesky (171KB | -b option),
Tumblr (~64KB), X-Twitter (~10KB).
—–
Compile (Linux)
Note: Compiler support for C++23 required.
$ sudo apt install libsodium-dev libturbojpeg0-dev
$ chmod +x compile_jdvrif.sh
$ ./compile_jdvrif.sh
$ sudo cp jdvrif /usr/bin
—–
Usage (Linux)
$ jdvrif
Usage: jdvrif conceal [-b|-r]
jdvrif recover
jdvrif –info
$ jdvrif conceal your_cover_image.jpg your_secret_file.doc
Platform compatibility for output image:-
✓ X-Twitter
✓ Tumblr
✓ Mastodon
✓ Pixelfed
✓ PostImage
✓ ImgBB
✓ ImgPile
✓ Flickr
Saved “file-embedded” JPG image: jrif_129462.jpg (143029 bytes).
Recovery PIN: [***2166776980318349924***]
Important: Keep your PIN safe, so that you can extract the hidden file.
Complete!
$ jdvrif recover jrif_129462.jpg
PIN: *******************
Extracted hidden file: your_secret_file.doc (6165 bytes).
Complete! Please check your file.
——-
jdvrif mode arguments:
conceal – Compresses, encrypts and embeds your secret data file within a JPG cover image.
recover – Decrypts, uncompresses and extracts the concealed data file from a JPG cover image.
jdvrif conceal mode platform options:
“-b” To create compatible “file-embedded” JPG images for posting on the Bluesky platform, you must use the -b option with conceal mode.
$ jdvrif conceal -b my_image.jpg hidden.doc
You must use the Python script “bsky_post.py” (found in the repo src folder) to post the image to Bluesky. It will not work if you post images to Bluesky via the browser site or mobile app.
To use the script, you will need to create an app password (https://bsky.app/settings/app-passwords) from your Bluesky account.
Standard image post example to your bsky profile:
$ python3 bsky_post.py –handle you.bsky.social –password xxxx-xxxx-xxxx-xxxx –image your_image.jpg –alt-text “alt-text here (optional)” “standard post text here (required)”
“-r” To create compatible “file-embedded” JPG images for posting on the Reddit platform, you must use the -r option with conceal mode.
$ jdvrif conceal -r my_image.jpg secret.mp3
From the Reddit site, select “Create Post” followed by “Images & Video” tab, to attach and post your JPG image.
To correctly download images from Reddit, click the image in the post to fully expand it, before saving.
There is also a Rust port of jdvrif.
This is free and open source software.
Website: github.com/CleasbyCode/jdvrif
Support:
Developer: Nicholas Cleasby
License: MIT License
jdvrif is written in C++. Learn C++ with our recommended free books and free tutorials.
Related Software
| Steganography Tools | |
|---|---|
| OpenStego | Java based tool to hide secret data in image files |
| stegify | Tool written in Go for LSB steganography |
| Stegano | Supports hiding data in PNG images via LSB encoding |
| Snow | Whitespace steganography program |
| Stegosuite | Steganography tool which lets hide information in image files |
| jdvrif | Hide files within a JPG cover image |
| Wavsteg | Uses least significant bit steganography to hide a file in .wavs |
| Steghide | Uses an algorithm which is undetectable by color-frequency tests |
| Steganoroute | Send steganographed text messages to mtr with fake hops in the network |
| Stegoshare | Java based steganography tool |
| snowdrop | Text watermarking and watermark recovery |
| OutGuess | Universal steganographic tool |
| Rooks | Adaptive steganography toolkit |
| StegCracker | Steganography brute-force utility to uncover hidden data inside files |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |


./jdvin
Usage: jdvin [-r] <cover_image> <data_file>
jdvin –info
./jdvout
Usage: jdvout <file_embedded_image>
jdvout –info
Program only support JPG, any mention of PNG in the article is a typo.
Yes, the program only supports JPG. The article was quoting the output of
jdvin --infowhich says in the Arguments / options“To post/share file-embedded PNG images on Reddit, you need to use the -r option.”
So the typo is in the actual program itself.
We’ve removed the reference to PNG.
Hi, I see that you have recently updated the main article “14 Best Free and Open Source Steganography Tools”.
jdvrif has changed extensively since the previous article. If possible, please could you update this page with the following information. Thanks, Nick.
Thanks, article updated.