BitSplit changes how WordPress delivers public media. Instead of keeping a
complete file at a stable public URL, it stores the original and generated sizes
as incomplete blocks and reconstructs each file in the visitor's browser through
a short-lived session.
It is a media-protection layer for photography portfolios, publishers, member
sites, and other WordPress sites where making direct downloads and bulk collection
harder is valuable.
Why use BitSplit?
- No stable ready-to-download media URL - public paths serve incomplete
blocks rather than finished files.
- Images, video, and audio - every supported media type is handled by the
same delivery flow.
- Normal WordPress workflow - use the Media Library, Gutenberg Image, Gallery,
Video and Audio blocks, featured images, and responsive
srcset markup as usual.
- Two access modes - keep media public while adding download friction, or
require visitors to sign in before reconstruction.
- No external service - reconstruction runs on your WordPress site and in the
visitor's browser, with no SaaS account, license key, quota, or payment.
- Backup and recovery tools - export a recovery manifest before site changes
and restore attachment mappings when needed.
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, video, and audio attachments.
Every feature is free: there is no paid tier, license key, trial, add-on, or
usage quota, and the plugin contacts no external service.
It includes public or logged-in-only access, Gutenberg image, gallery, video and
audio support, featured-image and
srcset handling, and backup/recovery tools.
Delivery flow
- WordPress stores each file as an incomplete BitSplit block, with reconstruction
data stored separately in attachment metadata.
- Front-end markup receives a placeholder instead of the original media 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 file into a temporary Blob URL. Video and audio
are streamed through a Service Worker so playback can seek.
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 media remains 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, Gallery, Video and
Audio 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