{"id":350680,"date":"2026-09-08T02:57:48","date_gmt":"2026-09-08T02:57:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/video-offload-for-videopress\/"},"modified":"2026-09-08T04:05:57","modified_gmt":"2026-09-08T04:05:57","slug":"video-offload-for-videopress","status":"publish","type":"plugin","link":"https:\/\/ceb.wordpress.org\/plugins\/video-offload-for-videopress\/","author":18715,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.83","stable_tag":"1.5.83","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Video Offload for VideoPress","header_author":"druesome","header_description":"Offloads locally-stored videos to VideoPress via Jetpack. Requires a Jetpack plan that includes VideoPress.","assets_banners_color":"21292d","last_updated":"2026-09-08 04:05:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/video-offload-for-videopress\/","header_author_uri":"https:\/\/profiles.wordpress.org\/druesome\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.83":{"tag":"1.5.83","author":"druesome","date":"2026-09-08 04:05:57","revision":3685861}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3685837,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3685837,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3685837,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3685837,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.83"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The VideoPress Offload admin page showing pending and offloaded videos.","2":"Single video offload with progress tracking.","3":"Media Library integration with offload status column."}},"plugin_section":[],"plugin_tags":[1075,84,46891,222,126447],"plugin_category":[50],"plugin_contributors":[82295],"plugin_business_model":[],"class_list":["post-350680","plugin","type-plugin","status-publish","hentry","plugin_tags-jetpack","plugin_tags-media","plugin_tags-offload","plugin_tags-video","plugin_tags-videopress","plugin_category-media","plugin_contributors-druesome","plugin_committers-druesome"],"banners":{"banner":"https:\/\/ps.w.org\/video-offload-for-videopress\/assets\/banner-772x250.png?rev=3685837","banner_2x":"https:\/\/ps.w.org\/video-offload-for-videopress\/assets\/banner-1544x500.png?rev=3685837","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/video-offload-for-videopress\/assets\/icon-128x128.png?rev=3685837","icon_2x":"https:\/\/ps.w.org\/video-offload-for-videopress\/assets\/icon-256x256.png?rev=3685837","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Video Offload for VideoPress offloads locally-stored videos to VideoPress via Jetpack, then replaces local video references in post content with the native VideoPress block.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Single or bulk offload<\/strong> \u2014 offload one video at a time or all pending videos at once<\/li>\n<li><strong>Content replacement<\/strong> \u2014 automatically replaces Gutenberg video blocks, <code>&lt;video&gt;<\/code> tags, <code>[video]<\/code> shortcodes, and bare URLs with VideoPress embeds<\/li>\n<li><strong>Local file cleanup<\/strong> \u2014 delete local files after confirming they are on VideoPress to free up disk space<\/li>\n<li><strong>WP-CLI support<\/strong> \u2014 offload and manage videos from the command line with <code>wp vov<\/code><\/li>\n<li><strong>Progress tracking<\/strong> \u2014 real-time upload progress with chunked transfer support<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0+<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/jetpack\/\">Jetpack<\/a> connected to WordPress.com<\/li>\n<li>A plan that includes VideoPress: WordPress.com Premium, Business, or Commerce \u2014 or Jetpack VideoPress or Jetpack Complete<\/li>\n<li>VideoPress feature active under Jetpack \u2192 Performance<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h4>Offloading videos<\/h4>\n\n<ul>\n<li><strong>Single video<\/strong>: Click <strong>Offload to VideoPress<\/strong> next to any video in the Media Library or in the VideoPress Offload admin page<\/li>\n<li><strong>Bulk<\/strong>: Use the <strong>Offload All to VideoPress<\/strong> button on the admin page to process all pending videos sequentially with a progress counter<\/li>\n<\/ul>\n\n<h4>After offloading<\/h4>\n\n<p>Each offloaded video gets three actions:<\/p>\n\n<ul>\n<li><strong>View on VideoPress<\/strong> \u2014 opens the video on VideoPress<\/li>\n<li><strong>Replace in Content<\/strong> \u2014 finds every post\/page that embeds the local video and replaces it with a <code>wp:videopress\/video<\/code> block<\/li>\n<li><strong>Delete Local File<\/strong> \u2014 permanently deletes the local file from the server (confirm VideoPress has the video first)<\/li>\n<\/ul>\n\n<h4>WP-CLI<\/h4>\n\n<pre><code>wp vov status          # Summary of offload status\nwp vov offload         # Offload all pending videos\nwp vov offload --id=42 # Offload a single video\nwp vov delete-local    # Delete local files for offloaded videos&lt;h3&gt;How it works&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>The plugin calls Jetpack's internal <code>\/videopress\/v1\/upload\/{id}<\/code> REST endpoint, which handles chunked uploads and authentication with WordPress.com. Upload state is tracked in post meta so a page refresh mid-upload picks up where it left off and auto-polls until complete.<\/p>\n\n<h3>Notes<\/h3>\n\n<ul>\n<li>Offloading requires the site to be publicly accessible (VideoPress fetches the file from the server)<\/li>\n<li>Large files upload in chunks; the spinner stays visible for the full duration<\/li>\n<li>Clicking an individual Offload button disables the others until the upload completes or errors, preventing simultaneous uploads within the same page session<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin relies on the <strong>VideoPress<\/strong> video hosting service, provided by <strong>Automattic<\/strong>, to upload, store, and deliver video files. A Jetpack connection and a WordPress.com plan that includes VideoPress are required.<\/p>\n\n<p><strong>What the service does:<\/strong> VideoPress hosts and streams video files via a global CDN, replacing locally stored videos with optimized embeds.<\/p>\n\n<p><strong>What data is sent and when:<\/strong><\/p>\n\n<ul>\n<li><strong>Video file uploads<\/strong> \u2014 When you click \"Offload to VideoPress\" or run <code>wp vov offload<\/code>, the plugin uploads the video file to VideoPress through Jetpack's REST API (<code>\/videopress\/v1\/upload\/<\/code>). Video metadata (file name, dimensions, duration) is included with the upload.<\/li>\n<li><strong>Video existence checks<\/strong> \u2014 When you visit the VideoPress Offload admin page or the Media Library, the plugin verifies that previously offloaded videos still exist on VideoPress by querying the WordPress.com public API (<code>public-api.wordpress.com\/rest\/v1.1\/videos\/<\/code>). This runs at most once per day per video.<\/li>\n<li><strong>Embed URLs<\/strong> \u2014 When replacing local video references in post content, the plugin generates embed markup pointing to <code>videopress.com\/embed\/<\/code> and loads the VideoPress player script from <code>v0.wordpress.com<\/code>.<\/li>\n<\/ul>\n\n<p><strong>Service links:<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.com\/tos\/\">WordPress.com Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/automattic.com\/privacy\/\">Automattic Privacy Policy<\/a><\/li>\n<li><a href=\"https:\/\/videopress.com\/\">VideoPress<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>video-offload-for-videopress<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to <strong>Media \u2192 VideoPress Offload<\/strong> to begin offloading videos.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20wordpress.com%20plans%20include%20videopress%3F\"><h3>What WordPress.com plans include VideoPress?<\/h3><\/dt>\n<dd><p>VideoPress is included with Premium, Business, and Commerce plans on WordPress.com. For self-hosted sites, Jetpack VideoPress and Jetpack Complete both include VideoPress.<\/p><\/dd>\n<dt id=\"do%20i%20need%20jetpack%20installed%3F\"><h3>Do I need Jetpack installed?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses Jetpack's connection to WordPress.com to upload videos to VideoPress. Jetpack must be installed, activated, and connected.<\/p><\/dd>\n<dt id=\"will%20this%20work%20on%20a%20local%2Fstaging%20site%3F\"><h3>Will this work on a local\/staging site?<\/h3><\/dt>\n<dd><p>The offload process requires your site to be publicly accessible because VideoPress fetches the video file from your server. Local or firewalled sites will fail to upload.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20posts%20after%20offloading%3F\"><h3>What happens to my posts after offloading?<\/h3><\/dt>\n<dd><p>Nothing changes automatically. After a video is offloaded, use the <strong>Replace in Content<\/strong> action to update all posts and pages that reference the local video. The local <code>wp:video<\/code> block is replaced with a <code>wp:videopress\/video<\/code> block.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20an%20offload%3F\"><h3>Can I undo an offload?<\/h3><\/dt>\n<dd><p>The video remains on VideoPress after offloading. You can delete the local file at any time. To revert content changes, use WordPress revision history on the affected posts.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.83<\/h4>\n\n<ul>\n<li>Rename internal prefix from <code>vov<\/code> to <code>vovp<\/code> (4-character minimum per WordPress.org guidelines)<\/li>\n<li>Update text domain to <code>video-offload-for-videopress<\/code> to match plugin slug<\/li>\n<li>Add External Services section documenting VideoPress\/WordPress.com API usage<\/li>\n<li>Improve phpcs:ignore annotation for VideoPress block cacheHtml script tag<\/li>\n<\/ul>\n\n<h4>1.5.82<\/h4>\n\n<ul>\n<li>Code quality improvements for WordPress.org plugin directory submission<\/li>\n<li>Update VideoPress availability messaging (Business and Commerce plans only)<\/li>\n<li>Add upgrade links for WordPress.com and self-hosted sites<\/li>\n<\/ul>","raw_excerpt":"Offloads locally-stored videos to VideoPress via Jetpack, replacing local references with VideoPress blocks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350680"}],"author":[{"embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/druesome"}],"wp:attachment":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350680"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350680"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350680"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350680"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350680"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}