{"id":339316,"date":"2026-07-18T17:17:48","date_gmt":"2026-07-18T17:17:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pixelvault-image-rescue\/"},"modified":"2026-07-22T20:39:47","modified_gmt":"2026-07-22T20:39:47","slug":"pixelvault-image-rescue","status":"publish","type":"plugin","link":"https:\/\/tt.wordpress.org\/plugins\/pixelvault-image-rescue\/","author":23531481,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.1","stable_tag":"0.3.1","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"PixelVault Image Rescue","header_author":"PixelVault","header_description":"Keep hotlinked Imgur images working. Automatically rehosts Imgur images onto PixelVault's edge so they survive UK blocking and Imgur deletions \u2014 no account required to start.","assets_banners_color":"635439","last_updated":"2026-07-22 20:39:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pixelvault.dev\/imgur-rescue","header_author_uri":"https:\/\/pixelvault.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":107,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.2":{"tag":"0.2.2","author":"rumbolabs","date":"2026-07-18 17:17:33"},"0.2.3":{"tag":"0.2.3","author":"rumbolabs","date":"2026-07-22 15:34:51"},"0.3.0":{"tag":"0.3.0","author":"rumbolabs","date":"2026-07-22 20:37:22"},"0.3.1":{"tag":"0.3.1","author":"rumbolabs","date":"2026-07-22 20:39:47"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3618880,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3618880,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3618880,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3618880,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.2","0.2.3","0.3.0","0.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3619184,"resolution":"1","location":"assets","locale":"","width":2068,"height":1554},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3619184,"resolution":"2","location":"assets","locale":"","width":2068,"height":418}},"screenshots":{"1":"Settings \u2192 Image Rescue: per-host detection with live at-risk counts, and a checklist to choose which hosts to rescue (Imgur, Discord CDN, imgbox).","2":"Migrate &amp; Own: copy your at-risk images into PixelVault hosting you own \u2014 reversibly \u2014 in one click."}},"plugin_section":[],"plugin_tags":[128337,3863,163,272870,23089],"plugin_category":[50,59],"plugin_contributors":[272229],"plugin_business_model":[],"class_list":["post-339316","plugin","type-plugin","status-publish","hentry","plugin_tags-broken-images","plugin_tags-cdn","plugin_tags-images","plugin_tags-imgbox","plugin_tags-imgur","plugin_category-media","plugin_category-utilities-and-tools","plugin_contributors-rumbolabs","plugin_committers-rumbolabs"],"banners":{"banner":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/banner-772x250.png?rev=3618880","banner_2x":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/banner-1544x500.png?rev=3618880","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/icon-128x128.png?rev=3618880","icon_2x":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/icon-256x256.png?rev=3618880","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/screenshot-1.png?rev=3619184","caption":"Settings \u2192 Image Rescue: per-host detection with live at-risk counts, and a checklist to choose which hosts to rescue (Imgur, Discord CDN, imgbox)."},{"src":"https:\/\/ps.w.org\/pixelvault-image-rescue\/assets\/screenshot-2.png?rev=3619184","caption":"Migrate &amp; Own: copy your at-risk images into PixelVault hosting you own \u2014 reversibly \u2014 in one click."}],"raw_content":"<!--section=description-->\n<p>Images you hotlinked from third-party hosts break all the time \u2014 Imgur geo-blocked them for UK visitors and deletes them, imgbox has been throwing 503s, and Discord attachment links now expire. <strong>PixelVault Image Rescue<\/strong> keeps them working automatically: when a page loads it rewrites at-risk image links so they load through PixelVault's edge instead of the failing host \u2014 and, optionally, migrates them into image hosting you own.<\/p>\n\n<ul>\n<li><strong>Instant fix, no account required.<\/strong> Activate the plugin and at-risk images start loading through PixelVault right away.<\/li>\n<li><strong>Reversible and non-destructive.<\/strong> Rewriting happens at output time only \u2014 your posts are never modified. Disable the plugin and the original markup returns untouched.<\/li>\n<li><strong>Handles <code>src<\/code> and <code>srcset<\/code><\/strong>, in post content, featured images, and widgets. An optional whole-page mode also catches theme-hardcoded images.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li><strong>Install and activate.<\/strong> Live rescue turns on by default and shows how many at-risk images it found on your site, per host.<\/li>\n<li><strong>Live rescue<\/strong> rewrites each at-risk image to load through PixelVault's rescue proxy, which fetches the image once and serves it from a global edge network \u2014 so it keeps working even when the original host is blocked or down.<\/li>\n<li><strong>Migrate &amp; Own (optional).<\/strong> Add a free PixelVault API key to copy every at-risk image into your own PixelVault project and rewrite your posts to permanent, owned URLs.<\/li>\n<\/ol>\n\n<h4>Which hosts<\/h4>\n\n<ul>\n<li><strong>Imgur<\/strong> \u2014 live rescue and migrate. Geo-blocked in the UK and deletes images.<\/li>\n<li><strong>imgbox<\/strong> \u2014 live rescue and migrate. Intermittent 503s \/ possible shutdown.<\/li>\n<li><strong>Discord CDN<\/strong> \u2014 migrate only. Discord attachment links now expire, so live rescue can't reliably re-fetch them; add an API key and migrate to copy them into hosting you own before they're gone.<\/li>\n<\/ul>\n\n<h4>Two ways to rescue<\/h4>\n\n<ul>\n<li><strong>Live rescue<\/strong> \u2014 zero setup, no account, instant. Best for keeping existing embeds visible today. It is durable-cached but re-fetches from the original host, so it can still break if that host deletes or expires the image.<\/li>\n<li><strong>Migrate &amp; Own<\/strong> \u2014 a free API key copies each image into hosting you control and rewrites posts to permanent CDN URLs, independent of the original host. Fully reversible: every edited post keeps a revision, and a one-click <strong>Restore original URLs<\/strong> button reverts everything.<\/li>\n<\/ul>\n\n<h4>Perfect for<\/h4>\n\n<ul>\n<li>Blogs and forums with years of hotlinked Imgur, imgbox, or Discord images.<\/li>\n<li>UK sites where Imgur images stopped loading after the geo-block.<\/li>\n<li>Anyone who wants to stop depending on a third party that can block, delete, or expire their images.<\/li>\n<\/ul>\n\n<h4>About PixelVault<\/h4>\n\n<p>PixelVault is image hosting on a global edge network \u2014 permanent URLs, on-the-fly transforms, and zero egress fees, with a free tier. This plugin is the WordPress front-end for its image-rescue and migration features.<\/p>\n\n<p>Learn more at <strong><a href=\"https:\/\/pixelvault.dev\/?utm_source=wordpress.org&amp;utm_medium=plugin&amp;utm_campaign=image-rescue\">pixelvault.dev<\/a><\/strong>.<\/p>\n\n<ul>\n<li>Image rescue overview: <a href=\"https:\/\/pixelvault.dev\/imgur-rescue?utm_source=wordpress.org&amp;utm_medium=plugin&amp;utm_campaign=image-rescue\">pixelvault.dev\/imgur-rescue<\/a><\/li>\n<li>Documentation: <a href=\"https:\/\/pixelvault.dev\/docs?utm_source=wordpress.org&amp;utm_medium=plugin&amp;utm_campaign=image-rescue\">pixelvault.dev\/docs<\/a><\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to <strong>PixelVault<\/strong> (https:\/\/pixelvault.dev), a third-party image-hosting service, to rehost at-risk images from <strong>Imgur, imgbox, and Discord CDN<\/strong>. It uses two PixelVault endpoints:<\/p>\n\n<p><strong>1. Rescue proxy \u2014 Live rescue (always on when enabled)<\/strong><\/p>\n\n<ul>\n<li><strong>What it does:<\/strong> rewrites at-risk image links on your pages (Imgur and imgbox) to load through PixelVault's rescue proxy, which fetches each image and serves it from PixelVault's edge.<\/li>\n<li><strong>What is sent:<\/strong> only the URLs of the at-risk images found on the pages being rendered, sent to the rescue endpoint (default <code>https:\/\/img.pixelvault.dev\/rescue<\/code>). No account or key is required.<\/li>\n<li><strong>When:<\/strong> each time a page containing an at-risk image is rendered.<\/li>\n<\/ul>\n\n<p><strong>2. Import API \u2014 Migrate &amp; Own (optional, admin-triggered)<\/strong><\/p>\n\n<ul>\n<li><strong>What it does:<\/strong> when you add a PixelVault API key and click <strong>Migrate all at-risk images<\/strong>, the plugin imports each at-risk image (Imgur, imgbox, or Discord) into your own PixelVault project and rewrites your posts to the resulting permanent URLs.<\/li>\n<li><strong>What is sent:<\/strong> the source image URLs to import and your PixelVault API key (sent server-side as a Bearer token), to the import endpoint (default <code>https:\/\/api.pixelvault.dev\/v1\/images<\/code>).<\/li>\n<li><strong>When:<\/strong> only while you are running a migration or restore from the plugin's settings screen. Nothing is sent on the front end.<\/li>\n<\/ul>\n\n<p>No visitor data and no post content beyond the at-risk image URLs themselves are ever sent. Both endpoints are configurable if you self-host PixelVault.<\/p>\n\n<p>By using this plugin you agree to PixelVault's Terms (https:\/\/pixelvault.dev\/terms) and Privacy Policy (https:\/\/pixelvault.dev\/privacy).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate it.<\/li>\n<li>Visit <strong>Settings \u2192 Image Rescue<\/strong>. Live rescue is on by default; you'll see how many at-risk images were found and can choose which hosts to rescue.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20image%20hosts%20does%20this%20rescue%3F\"><h3>Which image hosts does this rescue?<\/h3><\/dt>\n<dd><p>Imgur and imgbox are rescued both ways \u2014 live rescue (front-end) and Migrate &amp; Own. Discord CDN is Migrate &amp; Own only, because Discord attachment links expire and can't be reliably re-fetched later; migrating copies them into hosting you own while they still load.<\/p><\/dd>\n<dt id=\"does%20this%20modify%20my%20posts%3F\"><h3>Does this modify my posts?<\/h3><\/dt>\n<dd><p>No. Live rescue happens when a page is rendered \u2014 your saved content is never changed, and deactivating the plugin fully reverts the behavior. (Migrate &amp; Own does edit post content, but saves a revision for each and is reversible from the settings page.)<\/p><\/dd>\n<dt id=\"my%20imgbox%20images%20stopped%20loading.%20can%20this%20help%3F\"><h3>My imgbox images stopped loading. Can this help?<\/h3><\/dt>\n<dd><p>Yes. Enable imgbox under <strong>Settings \u2192 Image Rescue<\/strong> and live rescue will route your imgbox images through PixelVault's edge. For a permanent copy, add an API key and run Migrate &amp; Own.<\/p><\/dd>\n<dt id=\"my%20discord%20image%20links%20broke.\"><h3>My Discord image links broke.<\/h3><\/dt>\n<dd><p>Discord attachment URLs now expire, so once a link is dead there's nothing to re-fetch. Add a PixelVault API key and run <strong>Migrate &amp; Own<\/strong> while the links still work to copy the images into hosting you own.<\/p><\/dd>\n<dt id=\"some%20images%20still%20aren%27t%20rewritten.\"><h3>Some images still aren't rewritten.<\/h3><\/dt>\n<dd><p>Enable <strong>Whole-page mode<\/strong> in the settings. It also rewrites theme-hardcoded and background images at the cost of a little extra processing.<\/p><\/dd>\n<dt id=\"is%20it%20permanent%3F\"><h3>Is it permanent?<\/h3><\/dt>\n<dd><p>Live rescue is durable-cached, not permanent \u2014 it re-fetches from the original host, so it can still break if that host deletes or expires the image. For permanent ownership, add an API key and run <strong>Migrate &amp; Own<\/strong>, which copies the images into your PixelVault project and rewrites your posts to owned URLs.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20a%20migration%3F\"><h3>Can I undo a migration?<\/h3><\/dt>\n<dd><p>Yes. Migration saves a revision for every edited post, and the settings page has a <strong>Restore original URLs<\/strong> button that reverts posts back to their original URLs (your owned copies on PixelVault are kept).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Added plugin screenshots (settings + per-host detection, and Migrate &amp; Own) to the WordPress.org listing. Readme and assets only \u2014 no functional changes.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Multi-host rescue. Beyond Imgur, the plugin now rescues <strong>imgbox<\/strong> images (live rescue and Migrate &amp; Own) and <strong>Discord CDN<\/strong> images (Migrate &amp; Own only \u2014 Discord attachment links expire, so copies are made into hosting you own before they're gone).<\/li>\n<li>New <strong>per-provider settings<\/strong>: a \"Hosts to rescue\" checklist lets you enable each host, with a live at-risk count per host and an urgency note when a failing host is detected.<\/li>\n<li>Provider-aware throughout \u2014 scan report, migration, and restore all cover every enabled host, and the external-services disclosure lists all three.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Readme only: expanded the plugin description (how it works, the two rescue modes, use cases, and links to pixelvault.dev). No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Escape rewritten rescue URLs with esc_url() before they are returned to the front end, falling back to the original image URL if a URL is ever rejected.<\/li>\n<li>Whole-page mode now closes its output buffer only when that buffer is provably its own (top of the stack and opened by this plugin), closes it as late as possible on shutdown, and never opens more than one \u2014 so a buffer opened by another component is never flushed or left misaligned.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Whole-page mode now explicitly closes its output buffer on shutdown.<\/li>\n<li>Documented the optional Migrate &amp; Own import endpoint under External services.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Mode B (Migrate &amp; Own): with a PixelVault API key, copy Imgur images into your project and rewrite posts to permanent, owned URLs. Browser-driven with a progress bar, idempotent (skips already-migrated URLs), and reversible via a Restore button.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release. Mode A (live rescue): rewrite Imgur <code>src<\/code>\/<code>srcset<\/code> in content, featured images, and widgets; optional whole-page mode; settings page with an at-risk image count.<\/li>\n<\/ul>","raw_excerpt":"Keep hotlinked Imgur and imgbox images working \u2014 rescue them onto PixelVault&#039;s edge, or migrate them into image hosting you own.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/339316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=339316"}],"author":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rumbolabs"}],"wp:attachment":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=339316"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=339316"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=339316"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=339316"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=339316"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=339316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}