Description
BitSplit changes the delivery workflow for public WordPress images. Instead of
leaving a finished image at one public URL, it converts the original and generated
sizes to incomplete BitSplit blocks. The browser obtains short-lived reconstruction
data and rebuilds each image on demand.
Learn more at bitsplit.site.
This adds friction to:
- direct “copy URL and download” workflows;
- hotlinking;
- generic image downloaders and scrapers;
- bulk collection of ready-to-use image files.
BitSplit is not encryption, DRM, or a promise that downloading is impossible.
A determined viewer can inspect the browser flow, automate reconstruction, or
capture rendered content. Use it when raising the cost of casual downloading is
valuable; use established encryption and access control when confidentiality is
required.
Included functionality
The plugin protects any number of image attachments. All image functionality
shipped in this WordPress.org package is available without payment, a license,
a trial, or a usage quota.
It includes public or logged-in-only access, Gutenberg image support,
featured-image and srcset handling, and backup/recovery tools.
Delivery flow
- WordPress stores each image as an incomplete BitSplit block, with reconstruction
data stored separately in attachment metadata. - Front-end image markup receives a placeholder instead of the original image URL.
- The browser establishes an ephemeral P-256 ECDH session.
- Reconstruction data is transported with HKDF and AES-256-GCM.
- Block bytes require a short-lived, session-bound signed token.
- The browser reconstructs the image into a temporary Blob URL.
The transport encryption protects reconstruction data in transit; the BitSplit
block itself is not encrypted and contains most source bytes.
Access modes
- Public visitors – public images remain viewable; BitSplit adds download and
scraping friction. - Logged-in users only – anonymous visitors cannot obtain reconstruction data
or block bytes.
WordPress coverage
BitSplit handles normal attachment images, Gutenberg Image and Gallery blocks,
featured images, srcset, classic content containing wp-image-ID, and the
[bitsplit id=”123″] shortcode.
Storage
Incomplete blocks are stored in a plugin-owned directory resolved through
wp_upload_dir(), while reconstruction data stays in WordPress post metadata.
The plugin does not write web-server configuration files or require users to edit
server configuration.
Requirements
- PHP 7.4 or newer
- GMP extension
- OpenSSL with ECDH support
Installation
- Upload the
bitsplit-media-deliveryfolder to/wp-content/plugins/. - Activate BitSplit Media Delivery.
- Open Tools -> BitSplit.
- Choose an access mode.
- Enable split image delivery.
- Export the recovery manifest and store it safely.
FAQ
-
Does BitSplit make downloading impossible?
-
No. Public content must reach the viewer’s browser. BitSplit removes the simple
ready-file URL and makes downloaders reproduce the reconstruction protocol. -
Is BitSplit encryption?
-
No. The reconstruction-data transport uses standard cryptography, but the stored
BitSplit block is an incomplete, unencrypted representation of the source. -
Is any included functionality locked behind payment?
-
No. Every feature and all executable code included in this WordPress.org package
are available without payment, a license, a trial, or a quota. -
What happens when I deactivate or delete the plugin?
-
The plugin attempts to restore protected image attachments to their normal public
paths before removing its metadata. Keep a current exported manifest and filesystem
backup before bulk operations. -
Does it need Python?
-
No. The codec is implemented in PHP with GMP and in browser JavaScript.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“BitSplit Media Delivery” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “BitSplit Media Delivery” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.4
- Make the directory package a self-contained image plugin with no locked functionality.
- Move separately distributed media-type integrations out of the directory package.
- Store images only as keyless blocks and do not write web-server configuration.
1.2.3
- Store images as keyless blocks and migrate records created by earlier versions.
1.2.2
- Improve activation and deactivation recovery.
1.2.1
- Preserve protected image settings during updates.
1.2.0
- Add unlimited image attachment protection.
1.1.0
- Add public and logged-in-only access policies.
- Add short-lived session-bound tokens and same-origin checks.
- Add Gutenberg Image/Gallery, featured-image, classic-content, and srcset coverage.
- Stream block creation for large image files.
1.0.0
- Initial image delivery prototype with ECDH key transport, browser reconstruction,
and recovery manifests.