Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Drupal 11.4.6 Update released for Drupal core (11.4.6)! Release: Drupal 10.6.16 Update released for Drupal core (10.6.16)! Release: Drupal 12.0.0-alpha1 First alpha version released for Drupal core (12.0.0-alpha1). Release: Website Feedback 1.2.1 Minor update available for module website_feedback (1.2.1). Release: Field Group Markup 1.0.5 Minor update available for module field_group_markup (1.0.5). Release: Website Feedback 1.2.0 Minor update available for module website_feedback (1.2.0). Release: User Registration Link Pop Up 1.2.5 Minor update available for module url_popup (1.2.5). Release: User Registration Link Pop Up 1.2.4 Minor update available for module url_popup (1.2.4). Usage Milestone: Menu Condition Module menu_condition crossed 1,000 active installs. Module Revived: EzContent API - Enhanced De-coupled CMS Experience 2.3.9 Module ezcontent_api updated after 15 months of inactivity (2.3.9).

This module generates video thumbnails directly in the browser using JavaScript, eliminating the need for server-side processing. It automatically captures a frame from uploaded videos to use as a thumbnail and allows manual regeneration for optimal results.

The Media Thumbnails Client Video module provides a way to generate thumbnails for video files directly in the user's browser using JavaScript. This bypasses the need for FFmpeg or other server-side video processing tools, such as Media Thumbnails Video uses.

Requirements

This module requires the following:

Installation

Install as you would normally install a contributed Drupal module. For further
information, see Installing Drupal Modules.

Configuration

There is no specific configuration for this module. Once enabled, it integrates
automatically with the Media Thumbnails system.

Usage

Automatic Thumbnail Generation

When a user uploads a video file through a Media entity form (e.g., creating a
Video media item), the module's JavaScript automatically attempts to extract a
frame at the 2-second mark of the video. This frame is sent to the server and
stored temporarily. When the Media entity is saved, the Media Thumbnails plugin
identifies this pre-generated frame and uses it as the entity's thumbnail.

Manual Regeneration

If the automatically generated thumbnail is not satisfactory, users can
manually regenerate it:

  1. Navigate to the Media entity edit page.
  2. Click on the "Regenerate Thumbnail" local task (tab).
  3. Use the interactive video player to find the exact frame you want to use.
  4. Click "Regenerate Thumbnail" to save the selected frame.

Video Poster Support

The module also implements preprocess hooks to automatically set the poster
attribute of <video> tags in Drupal, using the generated thumbnail image.

How it works

  1. Browser-side: When a file is selected in an upload widget, JavaScript
    uses a hidden <video> and <canvas> element to capture a frame.
  2. Transfer: The captured frame is sent via AJAX to a custom endpoint on the
    Drupal site.
  3. Storage: The server saves the frame in public://client-video-thumbs.
  4. Integration: The ClientVideoThumbnail plugin (part of the Media
    Thumbnails ecosystem) checks this directory when a thumbnail is requested for
    a new media item.

Troubleshooting

  • CORS Issues: If your video files are hosted on a different domain (e.g.,
    a CDN or S3 bucket), you must ensure that the remote server sends appropriate
    CORS headers (specifically Access-Control-Allow-Origin), otherwise the
    browser will block the JavaScript from capturing frames.
  • Browser Support: Most modern browsers supporting HTML5 Video and Canvas
    will work. Very old browsers may fall back to the default Media Thumbnails
    behavior (or no thumbnail if no other plugins are available).

Depends on

Dependencies of the latest stable release

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
2
Tracked since
Apr 2026
Latest release
3 months ago
Releases (12 mo)
2 ▲ from 0
Maintenance
Active

Releases

Version Type Core Release date
1.0.0 Stable 9–11 May 5, 2026
1.0.x-dev Dev 9–11 Apr 21, 2026