I scanned the Bitcoin blockchain for images; what i found will shock you. Much has been said online about the arbitrary data and content that can be found on the Bitcoin blockchain. This possibility has not only spawned a niche art scene, but it has also led to a movement towards ‘non-monetary transactions’ on the Bitcoin network. If you heard from one of its supporters or detractors, you would figure that blockchain is basically a wall filled with graffiti.
Well, I decided to try the question: are there actually pictures on the blockchain? And what does this really mean for Bitcoiners who are simply trying to run their own full node and maximize their financial sovereignty?
My method was simple: I had to buy a fresh hard drive to store the blockchain on, and then I had to run classic image recovery software over the data – something used to rescue images from broken hard drives, something designed to find raw image data.
I chose PhotoRec to do the photo recovery work, an open source photo recovery program that has been around for over 20 years. The software is designed to find image files in raw data. This can be used to recover images and other file formats from hard drives that have failed or been damaged. In fact, it is often used to recover lost wallet.dat files from the early days of Bitcoin wallets, before the spread of the seed word format.
Synchronization of the full Bitcoin node
For storing the full Bitcoin blockchain, I decided to buy a 4-terabyte disk drive for a few hundred dollars. I then installed the latest version of Bitcoin Core on it and started syncing the chain. The process, which involves downloading and verifying the accounting integrity of all transactions in Bitcoin history, took about 72 hours, or three days, automated and running in the background by the Bitcoin Core software.
I did that with an otherwise powerful gaming machine; the biggest bottleneck in terms of time was the disk drive, which is slow to read and write data as needed when Bitcoin’s blockchain syncs. The slow part of the process involves the unused transaction output set, or UTXO. When a user syncs the blockchain, each unused transaction value (output) or positive balance is organized into the UTXO set, and as these values ​​are used, they are removed from the set while the new address to which those satoshi were sent is added.
On the disk drive, this UTXO indexing process could have taken three weeks by some estimates, so to speed it up, my clanker (AI agent) suggested that we instead index the data in RAM and then move the data back to the 4-terabyte disk drive. While the whole process took three days, running in the background, an SSD could have done the whole job in about a day. SSD drives are much faster than disk drives; they are more modern, but they are also easily four times the price, or more.
Once the blockchain was fully downloaded and validated, we moved the UTXO index from RAM back to disk and started the Bitcoin software; the chain was fully synced and the wallet ready to go. Now it was time for the next step: restoring the images stored on the blockchain.
Image recovery on the Blockchain with PhotoRec
With the full Bitcoin blockchain on my disk drive, I turned off Bitcoin Core and asked my clanker (Cursor AI agent) to run PhotoRec 7.2 on the drive. The default PhotoRec process looks for jpg, png, gif, tif, bmp, ico, psd and raw formats. The process ran for over 11 hours on the blockchain data and ultimately found … (drumroll) … nothing.
Over a terabyte of blockchain data and half a day of scanning and no images turned up. The PhotoRec wiki page gives a simple example of how the software works: “PhotoRec identifies a JPEG file when a block begins with: 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xe1 or 0xff, 0xd8, 0xff.” In other words, the program looks at the data on disk for bytes that signal that there is an image file.
The program is capable of showing false positives; it stored 8 ICOs and 4 identical PNG files that do not display any images when opened as seen in the image below. So no meaningful images of any kind were actually found.
Where did the Jpegs go? XOR magic tricks
How is this possible? For years, crypto people have been talking about NFTs and how to engrave image data on the Bitcoin blockchain. Millions of dollars have moved in this niche, and a whole culture war is being fought over the matter as we speak. Can there really be no pictures on the chain?
It turns out that the risks associated with arbitrary data have been discussed and planned in Bitcoin Core development circles for a long time, as early as 2011. XOR, a simple data obfuscation technique, is used to scramble all blockchain data while it is at rest on a hard drive.

You may have heard that the basic language of computers consists of 0s and 1s. Well, in a nutshell, XOR compares two digits or bits and returns 1 if the bits are different or 0 if the bits are the same. In the case of Bitcoin, XOR compares each bit of the blockchain data to a random key generated during the initial installation, resulting in dormant data that other programs cannot make sense of. But when the Bitcoin software is running, it has the key to decode that data and use it at will. XOR is also very fast, so it doesn’t affect performance meaningfully. Here is an example of the Bitcoin genesis block before and after an XOR.

XOR is currently applied to both blockchain data and the UTXO set. XOR was originally discussed in 2014 when antivirus software began to be hit with blockchain data that it interpreted as virus code. The antivirus software would then quarantine a block, destroying the blockchain data and crashing Bitcoin, making synchronization impossible. By the end of 2015, XOR had been implemented on the UTXO set’s data at rest, and by 2024 it was implemented on all blockchain data at rest.
Furthermore, the XOR process means that no arbitrary data can be identified or extracted from the blockchain without deliberately bypassing the XOR, a process that is not necessary for the monetary use of Bitcoin. Since the Bitcoin Core software keeps a simple database of the location of each encoded block, it can easily retrieve its data, decode it, and use it in a targeted way.
Syncing Bitcoin in an unencrypted way is a custom process that can take as long as syncing from scratch, since it basically has to rewrite the full terabyte of data in a new order, and that doesn’t make much sense to someone who just wants the normal privacy and security benefits of running a Bitcoin node. So when it comes to the vast majority of copies of Bitcoin blockchain data resting on the computers of normal Bitcoiners around the world, there is actually no identifiable arbitrary data or images. Shocking, I know. Feel free to run the PhotoRec test yourself on your own node!
