Title: VidCellar Lite
Author: Suhaib Siddiqi
Published: <strong>September 30, 2026</strong>
Last modified: October 9, 2026

---

Search plugins

![](https://ps.w.org/vidcellar-lite/assets/banner-772x250.jpg?rev=3721083)

![](https://ps.w.org/vidcellar-lite/assets/icon-256x256.png?rev=3721240)

# VidCellar Lite

 By [Suhaib Siddiqi](https://profiles.wordpress.org/ssiddiqi4/)

[Download](https://downloads.wordpress.org/plugin/vidcellar-lite.2.3.0.zip)

 * [Details](https://pcd.wordpress.org/plugins/vidcellar-lite/#description)
 * [Reviews](https://pcd.wordpress.org/plugins/vidcellar-lite/#reviews)
 *  [Installation](https://pcd.wordpress.org/plugins/vidcellar-lite/#installation)
 * [Development](https://pcd.wordpress.org/plugins/vidcellar-lite/#developers)

 [Support](https://wordpress.org/support/plugin/vidcellar-lite/)

## Description

VidCellar Lite is a standalone GPLv2-or-later WordPress plugin for managing and 
playing videos on your own WordPress site. It does not require an external account
or a license key. It is suitable for hosting online streaming libraries, film and
music festival videos, webinars, training, and enterprise videos.

Start with VidCellar Lite, a free core video platform for managing and streaming
videos from your WordPress website. An [optional Pro](https://canvasly.pro/vidcellar)
add-on is available separately for advanced monetization, cloud storage, paid-content
access, analytics, advertisement insertion, and other premium features.

Unlock full potential of video streaming with [VidCellar Pro](https://canvasly.pro/vidcellar),
with paid contents, with pay-per-view, or paid membership, advanced analytics, E-
mail marketing, and advertisement revenue, emoji, Live Streaming and much more..

Features include:

 * White-label HTML5 player (no third-party branding): custom colours, your own 
   logo/watermark, and a choice of which controls appear.
 * Chapters with timeline markers and hover titles (WebVTT file, timestamp list,
   or timestamps in the description).
 * Multi-language WebVTT subtitles and alternate audio languages.
 * Searchable, synchronised transcript (below or beside the video).
 * Playback speeds 0.25× to 2×, HLS quality selector (Auto/1080p/720p/…), Picture-
   in-Picture, theater mode and fullscreen.
 * Sticky mini-player that docks to a screen corner on scroll, with mobile options.
 * Video library and Watch pages.
 * Administrator-managed video categories.
 * Secure local video storage and playback.
 * Resumable/chunked uploads for large video files, subject to server resources 
   and hosting limits.
 * Video file type and MIME validation.
 * Video thumbnails and optional trailers.
 * Ratings and view counts.
 * Background video optimization when FFmpeg is available on the server.
 * Adaptive bitrate streaming (HLS): each upload is encoded into 1080p/720p/480p/
   360p renditions in the background, and the player switches quality automatically
   to match the viewer’s connection. Native HLS on Safari/iOS, bundled hls.js elsewhere,
   MP4 fallback everywhere.
 * Fast, lightweight player: a poster-and-play-button “facade” loads no video element
   and no player library until the visitor presses play, which keeps pages fast 
   and Core Web Vitals healthy.
 * “VidCellar Video” block and `[vidcellar_player id="…"]` shortcode to embed a 
   single video anywhere.
 * Content protection (VidCellar  Content Protection):
    - AES-128 encrypted HLS: every segment is encrypted on disk and in transit; 
      each rendition has its own key, issued only against a valid signed link.
    - Signed, short-lived links (HMAC-SHA256) for playlists, keys, segments and 
      MP4, refreshed in the background while a viewer watches. Optional binding 
      to the viewer’s network.
    - Anti-hotlinking: Origin/Referer allow-list, CORS and Cross-Origin-Resource-
      Policy, plus generated nginx and Apache rules (X-Accel-Redirect / X-Sendfile
      and nginx auth_request supported).
    - Dynamic watermark drawn over the video with the viewer’s email, username, 
      IP address, a live timestamp and a traceable session ID; it moves and changes
      opacity every few seconds and resists removal with developer tools.
    - Viewer-session log to trace a leaked recording from the session ID in its 
      watermark.
 * Categories can be renamed or deleted (videos are moved, never deleted).
 * Trailers open in a pop-up player.
 * Responsive HTML5 video playback.
 * WordPress-native administration, permissions, nonces, and REST APIs.
 * Optional deletion of plugin data during uninstall; data is retained by default.

VidCellar Lite is fully usable on its own. Paid monetization, payment gateways, 
coupons, advertising controls, commercial storage integrations, and advanced revenue
features are provided separately by an optional [Pro add-on](https://canvasly.pro/vidcellar).

### Privacy

VidCellar Lite does not require registration with an external video service and 
does not send video files to a remote video server. The plugin stores its video 
metadata and locally uploaded video files on the WordPress site. Site administrators
are responsible for configuring their site’s privacy policy and for describing any
other services, analytics, storage providers, or media services they independently
configure.

### Upgrade to Pro

An [optional Pro](https://canvasly.pro/vidcellar) add-on is a separate premium product
that is not included in this WordPress.org plugin. The Lite plugin remains fully
usable without Pro. Optional Pro information and purchase links are shown only inside
the WordPress administration area.

### Third-party libraries

VidCellar Lite bundles [hls.js](https://github.com/video-dev/hls.js) 1.7.3 (`assets/
vendor/hls/hls.light.min.js`), licensed under the Apache License 2.0 (`assets/vendor/
hls/LICENSE.txt`). The human-readable source is available at https://github.com/
video-dev/hls.js/tree/v1.7.3. It is loaded only when a visitor presses play on a
browser without native HLS support.

### License

VidCellar Lite is licensed under the GNU General Public License, version 2 or later.

https://www.gnu.org/licenses/gpl-2.0.html

## Screenshots

[⌊Video library.⌉⌊Video library.⌉[

Video library.

[⌊Video management screen.⌉⌊Video management screen.⌉[

Video management screen.

[⌊Video categories.⌉⌊Video categories.⌉[

Video categories.

[⌊Video upload interface.⌉⌊Video upload interface.⌉[

Video upload interface.

[⌊Watch page and JS unbranded player video player.⌉⌊Watch page and JS unbranded 
player video player.⌉[

Watch page and JS unbranded player video player.

[⌊CidCellar Captions & Chapters⌉⌊CidCellar Captions & Chapters⌉[

CidCellar Captions & Chapters

[⌊Player appearance⌉⌊Player appearance⌉[

Player appearance

## Blocks

This plugin provides 1 block.

 *   VidCellar Video Embed a VidCellar video in the white-label player: adaptive(
   HLS) streaming, chapters, subtitles, audio languages, searchable transcript and
   sticky mini-player.

## Installation

 1. In WordPress, go to **Plugins > Add New Plugin > Upload Plugin**.
 2. Upload the VidCellar Lite ZIP and activate the plugin.
 3. Open **VidCellar > Videos** to add videos.
 4. Use the automatically created Videos and Watch pages, or place `[vidcellar_browse]`
    and `[vidcellar_video]` shortcode on your own pages. To embed one video in any 
    post, use the **VidCellar Video** block or `[vidcellar_player id="12"]`.
 5. Configure your video categories under **VidCellar > Categories**.

## FAQ

### Is VidCellar Lite free?

Yes. VidCellar Lite is a standalone GPLv2-or-later plugin and does not require a
license key or an external account.

### Can I upload large videos?

Yes. The built-in resumable uploader supports files up to 30 GiB, subject to available
disk space, PHP/web-server configuration, request limits, and hosting resources.

### Does Lite process payments?

No. Payment and monetization features are not included in Lite. They are available
separately in an optional [Pro add-on](https://canvasly.pro/vidcellar).

### Where are videos stored?

Lite stores uploaded videos in protected local storage under the WordPress uploads
directory. The plugin creates protection rules for supported web-server configurations.
Site administrators using Nginx or another web server should also configure server-
level protection as appropriate for their hosting environment.

### Does VidCellar Lite send my video data to an external service?

No. Lite does not require an external video service and does not send video files
to a remote video server. Video data and plugin records remain on the WordPress 
installation unless the site administrator separately configures another service.

### What does adaptive streaming need on my server?

Local HLS encoding needs FFmpeg and ffprobe installed on the server, PHP’s `proc_open()`
enabled, and a Linux/macOS host. VidCellar shows a checklist under **VidCellar >
Settings**. Without these, videos still play as MP4. Encoding runs in the background,
one rendition at a time; on low-traffic sites, a real server cron job (instead of
WP-Cron) makes jobs progress faster. Action Scheduler is used automatically when
another plugin (for example WooCommerce) provides it.

### Are HLS segments protected?

Yes. Playlists and segments are stored in the same protected folder as the videos
and are served through WordPress with short-lived signed URLs.

### How do I change the Watch-page heading?

Edit the WordPress Page that contains `[vidcellar_video]` shortcode. The Page title
is used as the Watch-page heading.

### What happens if I deactivate the plugin?

Deactivation does not delete the plugin database tables or video files. Data is 
retained so the plugin can be reactivated safely.

### What happens if I uninstall the plugin?

By default, VidCellar Lite retains its database tables and uploaded video files.
An administrator can explicitly enable the plugin’s delete-data-on-uninstall setting
before uninstalling if permanent removal is desired.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“VidCellar Lite” is open source software. The following people have contributed 
to this plugin.

Contributors

 *   [ Suhaib Siddiqi ](https://profiles.wordpress.org/ssiddiqi4/)

[Translate “VidCellar Lite” into your language.](https://translate.wordpress.org/projects/wp-plugins/vidcellar-lite)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/vidcellar-lite/), check
out the [SVN repository](https://plugins.svn.wordpress.org/vidcellar-lite/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/vidcellar-lite/)
by [RSS](https://plugins.trac.wordpress.org/log/vidcellar-lite/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.3.0

 * Lite is now a free library and player only: every video is free to watch. Login,
   role and membership gating (who-can-watch rules on videos and categories, the
   site default, the paywall card settings and the membership-plugin integrations)
   moved to VidCellar Pro 2.6, next to pay-per-view.
 * Removed: VidCellar  Content Protection  “Access & paywall” tab, and the “Who 
   can watch” fields on videos and categories.
 * For add-ons: new `vidcellar_viewer_decision` filter (may this viewer watch?),`
   vidcellar_paywall` filter for the locked card, `vidcellar_video_is_protected`
   filter for watermarking, and admin hooks `vidcellar_video_form_rows`, `vidcellar_video_saved`,`
   vidcellar_video_row_badges`, `vidcellar_category_columns`, `vidcellar_category_column`,`
   vidcellar_category_form_fields`, `vidcellar_category_saved`, `vidcellar_category_renamed`,`
   vidcellar_category_deleted`.
 * Existing rules and settings are kept in the database; VidCellar Pro 2.6 picks
   them up automatically.
 * Fix: saving a video in the editor no longer resets its price to 0 (which made
   VidCellar Pro paid videos free).

#### 2.2.1

 * Fix: updating could crash the site (“Call to a member function get_page_permastruct()
   on null”) when the Videos or Watch page had been deleted. The upgrade routine
   now recreates missing pages on init, after WordPress has loaded its permalink
   settings.

#### 2.2.0

 * New: VidCellar  Content Protection. AES-128 HLS encryption (new uploads are encrypted
   before publishing; “Encrypt HLS” converts existing videos in the background without
   interrupting viewers), signed short-lived stream links with background refresh,
   Origin/Referer and CORS enforcement, optional network binding, and an “encrypted
   stream only” mode that refuses the downloadable MP4.
 * New: REST endpoints — POST /vidcellar/v1/stream/session (access check, signed
   URLs, watermark identity), GET /vidcellar/v1/hls/key/{id}/{rendition} (key exchange)
   and GET /vidcellar/v1/stream/validate (fragment validation for nginx auth_request).
 * New: generated nginx and Apache rules (Content Protection  Server rules), optional
   X-Accel-Redirect / X-Sendfile / LiteSpeed delivery and clean /vcstream/ URLs.
   The plugin checks whether the private media folder is reachable over HTTP.
 * New: dynamic canvas watermark (email, username, IP, live time, session ID) with
   random position and opacity, tamper detection, Picture-in-Picture disabled and
   a full-window player on iPhone so the watermark is never bypassed.
 * New: who-can-watch rules per video, per category and site-wide — WordPress roles,
   WooCommerce Memberships, MemberPress, Restrict Content Pro, Paid Memberships 
   Pro. Locked videos show a customizable paywall card over the player frame; if
   access ends mid-session the card replaces the playing video.
 * New: viewer-session log (Content Protection  Viewer sessions) to trace a leaked
   recording.
 * New: categories can be renamed (their videos and access rule move with them) 
   and deleted (videos are moved to another category).
 * New: trailers open in an accessible pop-up player; closing it stops the trailer.
 * Fixed: “HLS: encoding 480p 0%” stayed at 0%. The Videos screen now shows a live
   progress bar with percentage, encoded time, speed and time left, updated every
   few seconds without reloading, and keeps the jobs moving even when WP-Cron is
   idle. Durations are now read from WebM/MKV stream tags too (browser recordings
   often have no container duration), and progress falls back to counting written
   segments.
 * Changed: the private media folder’s .htaccess now covers Apache 2.2 and 2.4.

#### 2.1.0

 * Performance: all HLS renditions are now encoded in ONE FFmpeg pass (the source
   is decoded once and split), instead of one process per rendition with a background-
   job wait between each. Option to go back to one-at-a-time on low-memory servers.
 * Performance: libx264 uses -preset veryfast (or superfast), single-pass capped
   CRF (-crf 23 with -maxrate/-bufsize, never 2-pass) and -threads 0 to use every
   CPU core.
 * Performance: optional hardware encoding — NVIDIA NVENC, Intel Quick Sync, VAAPI
   and Apple VideoToolbox are auto-detected with a real test encode; a failed GPU
   job is retried on the CPU automatically.
 * Performance: the MP4 fallback no longer blocks a PHP/WP-Cron request. It runs
   detached, and sources that are already H.264/AAC at a streaming bitrate are remuxed
   in seconds instead of re-encoded.
 * New: 4K (2160p) rendition. Only renditions equal to or smaller than the source
   are encoded; admins choose which resolutions to build and the encoding speed/
   quality/hardware options under VidCellar  Settings.

#### 2.0.0

 * New: white-label HTML5 player built in dependency-free JavaScript (assets/js/
   player/src, bundled to assets/js/vidcellar-player.js). Native browser controls,
   remote-playback and download chrome are suppressed.
 * New: VidCellar  Player settings page — primary/accent/control-bar/menu colours,
   bar opacity, corner radius, logo watermark (position, size, opacity, link), visible-
   control toggles, speed presets and default speed, keyboard shortcuts, caption
   size, transcript layout, and mini-player options. Live preview.
 * New: VidCellar  Captions & Chapters — per-video WebVTT subtitles in several languages(
   default track, subtitles or SDH captions), alternate audio files with an “original
   soundtrack” name, and chapters from a WebVTT file, a timestamp list or the video
   description.
 * New: chapter markers on the timeline (click to jump), chapter title in the hover
   tooltip and next to the time, chapter menu.
 * New: settings menu with Chapters, Subtitles/CC, Audio, Playback speed (0.25×–
   2×) and Quality (Auto + each HLS rendition via hls.js; Safari keeps OS-managed
   Auto).
 * New: audio language switching — HLS alternate audio (hls.js and native audioTracks)
   or synced audio files.
 * New: protected audio languages. Saving an audio language moves the file out of
   the Media Library into private storage (vidcellar-private/videos/audio/) and 
   removes the attachment, so there is no public link. Viewers get expiring, HMAC-
   signed links (?vc_audio=…) that are access-checked on every request (filter vidcellar_audio_access;
   VidCellar Pro limits them to buyers). The player refreshes a link that expires
   mid-session. Removing or replacing a language deletes its file; deleting a video
   deletes its audio folder.
 * Note for nginx hosts: like your videos, the private folder relies on .htaccess
   on Apache. On nginx add a rule denying /wp-content/uploads/vidcellar-private/(
   file names are also randomised).
 * New: searchable transcript built from the subtitles: highlights the current line,
   follows playback inside the panel, click a line to jump (also before the player
   is started), accent-insensitive search with match navigation, follows the selected
   subtitle language.
 * New: sticky mini-player using IntersectionObserver (same video element, no re-
   buffering), corner/size/offset settings, play/pause, back-to-video and close 
   buttons, full-width bar or off on small screens.
 * New: Picture-in-Picture and theater (full-width) mode; one player plays at a 
   time.
 * New: shortcode attributes sticky=”yes|no” and transcript=”yes|no|open”; matching
   block options.
 * New: filters vidcellar_player_config and vidcellar_player_tracks; JS API window.
   VidCellarPlayer and vidcellar:ready / vidcellar:theater / vidcellar:dock events.
 * Changed: trailers use the same custom player (MP4 only, no docking).
 * Changed: frontend.js now only handles ratings and pre-2.0 server-rendered players;
   the facade/HLS code moved into the player bundle (same lazy-loading behaviour:
   one poster image until the first click).
 * Database: adds a player_tracks column to the videos table (added automatically
   on update).

#### 1.2.1

 * Developer hooks for storage add-ons (used by VidCellar Pro 1.2 cloud offload):`
   vidcellar_hls_segment_url`, `vidcellar_ensure_local_source`, `vidcellar_abr_purged`,`
   vidcellar_video_deleted`, `vidcellar_admin_video_status`. No behaviour change
   on their own.

#### 1.2.0

 * New: Adaptive bitrate streaming (HLS). Uploads are encoded into a 1080p/720p/
   480p/360p ladder (never upscaled; portrait videos handled) with aligned keyframes
   and fMP4 segments. Renditions are encoded one at a time as detached FFmpeg jobs,
   so PHP time and memory limits do not apply; stalled or killed jobs are detected
   and retried, and the master playlist is published only when encoding finishes.
 * New: Signed, expiring segment URLs for HLS playback from protected storage, with
   range support.
 * New: Facade player. The Watch page, trailer, block and shortcode render a poster
   and play button only; the video element and hls.js are created on click. Posters
   below the fold load via IntersectionObserver, and the first player’s poster is
   prioritised for LCP.
 * New: “VidCellar Video” block and `[vidcellar_player]` shortcode.
 * New: Adaptive streaming settings (renditions, auto-build, cloud transcoding webhook)
   and HLS status/progress on the Videos screen.
 * New: Developer hooks: `vidcellar_abr_dispatch`, `vidcellar_hls_access`, `vidcellar_remote_manifest_url`,`
   vidcellar_hls_token_ttl`, `vidcellar_abr_ladder_definitions`, `vidcellar_abr_max_concurrent_jobs`,`
   vidcellar_abr_ready`.
 * Improved: Front-end script loads deferred; catalog thumbnails lazy-load with 
   reserved dimensions.
 * Deleting a video now also removes its generated HLS renditions (the original 
   upload is still kept).

#### 1.1.9

 * Fixed resumable uploads rejecting every raw chunk with “No valid upload chunk
   was received.” (an operator-precedence bug in the upload error check).
 * Fixed a JavaScript error when resuming an upload whose chunks had all already
   reached the server.
 * Fixed a fatal error on the Videos page: the [vidcellar_browse] shortcode callback
   rejected the attributes WordPress passes.
 * Category names such as “Short Films” are no longer replaced by their slug once
   a video uses them, the active category tab is highlighted again, and video edit
   forms preselect the right category.
 * The Watch page shows the average rating once instead of twice, and updates it
   after a visitor rates.

#### 1.1.8

 * Enqueued the dashboard pricing stylesheet with wp_enqueue_style() instead of 
   printing a style tag.

#### 1.1.7

 * Stops registering a Lite Settings submenu when VidCellar Pro is active, so Settings
   is not duplicated.

#### 1.1.6

 * Moved the Pro plans and Lite vs Pro comparison table from Videos to Dashboard.

#### 1.1.5

 * Restored the VidCellar Lite vs Pro comparison table on Videos (above Add a video)
   and Need Help.

#### 1.1.4

 * Added the optional Pro licensing pricing table to the Videos screen, above Add
   a video.

#### 1.1.3

 * Removed the duplicate first admin submenu titled VidCellar. The first submenu
   is now Videos.

#### 1.1.2

 * Updated the public plugin name, slug, author, and text domain to VidCellar Lite.
 * Enqueued admin video-management JavaScript instead of printing an inline script
   tag.
 * Added the missing reviewer_key column to the reviews table on activation and 
   upgrade.
 * Loaded public CSS/JS only on pages that use the plugin shortcodes.

#### 1.1.1

 * Resolved Plugin Check short PHP echo-tag errors by using full PHP echo syntax
   throughout the plugin.
 * Hardened public query-string handling with unslashing, sanitization, validation,
   and context-appropriate nonce exceptions for public browsing/streaming URLs.
 * Hardened admin POST and upload handling, including centralized request/file access
   helpers and MIME validation.
 * Escaped generated HTML attributes and content, including rating controls and 
   shortcode-generated markup.
 * Updated custom-table SQL to use prepared statements and WordPress identifier 
   placeholders where supported.
 * Replaced avoidable direct file deletion/move operations with WordPress filesystem
   APIs and documented narrowly-scoped native stream/process operations that are
   required for chunked uploads, video range streaming, and optional FFmpeg transcoding.
 * Improved CSV export implementation without direct fopen/fclose calls.
 * Raised the minimum supported WordPress version to 6.2 for `%i` database identifier
   placeholders.

#### 1.1.0

 * Prepared the Lite release for WordPress.org distribution.
 * Updated the plugin and stable tag to 1.1.0.
 * Improved the Watch-page heading resolution so the WordPress Page title is used
   reliably.
 * Retained existing database compatibility and migration safeguards.
 * Refined installation, privacy, data-retention, and Pro separation documentation.

#### 1.0.9

 * Improved Watch-page heading resolution across normal WordPress queries, request
   URLs, page-builder contexts, and the configured Watch page.
 * No database changes required.

#### 1.0.8

 * Improved Watch-page title handling and page-title resolution.

#### 1.0.7

 * Improved Watch-page title handling.

#### 1.0.6

 * Added editable Watch-page heading support based on the WordPress Page title.

#### 1.0.5

 * Improved Lite administration and compatibility handling.

#### 1.0.2

 * Fixed Lite video helper loading for Pro shortcodes.
 * Added defensive compatibility fallback for category normalization.
 * Improved activation compatibility with existing databases.

#### 1.0.1

 * Fixed Lite/Pro activation schema compatibility and legacy helper loading.
 * Added safeguards against duplicate function declarations.
 * Improved migration safety for existing installations.

#### 1.0.0

 * First Lite release.
 * Free video library and secure local playback.
 * Categories, ratings, thumbnails, trailers, and view counts.
 * Resumable large-file uploads with validation.
 * WordPress-native security controls and GPLv2-or-later licensing.

## Meta

 *  Version **2.3.0**
 *  Last updated **1 hour ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/vidcellar-lite/)
 * Tags
 * [chapters](https://pcd.wordpress.org/plugins/tags/chapters/)[hls](https://pcd.wordpress.org/plugins/tags/hls/)
   [subtitles](https://pcd.wordpress.org/plugins/tags/subtitles/)[video player](https://pcd.wordpress.org/plugins/tags/video-player/)
   [video streaming](https://pcd.wordpress.org/plugins/tags/video-streaming/)
 *  [Advanced View](https://pcd.wordpress.org/plugins/vidcellar-lite/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/vidcellar-lite/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/vidcellar-lite/reviews/)

## Contributors

 *   [ Suhaib Siddiqi ](https://profiles.wordpress.org/ssiddiqi4/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/vidcellar-lite/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://paypal.me/SSiddiqi275)