In light of the recent conversations about the Unsplash plugin’s CDN, several extensions have popped up this week for disabling it. By default, the plugin serves images from the CDN but saves copies to the WordPress media library in case the plugin is disabled or removed. The plugin does not currently have an option to change this.
Disable Unsplash CDN is the first to be published to the WordPress.org directory for changing the plugin’s default behavior. There are no options or settings – activating it turns it on. Xaver Birsak, a prolific WordPress plugin author, created it to help users who may experience slower page speed caused by the Unsplash CDN.
“I’ve followed the release of the official Unsplash plugin as well the strange one-star rating from Matt Mullenweg which is think is not appropriate,” Birsak said. “The problem he mentioned was, in addition to the Unsplash license, the fact that images are being served from Unsplash (Imgix) servers. I don’t think that this is totally unnecessary from Unsplash as a CDN can serve images much quicker in most cases. For some users this is maybe not the case.”
Birsak was referencing Matt Mullenweg’s recent one-star review of the Unsplash plugin, which drew the ire of many plugin developers whose ability to monetize their products can hinge on getting decent reviews. The review called the plugin “sketchy” and called into question the practice of making the CDN the default:
It’s unclear why they want you to use their CDN and make that the default, it’s probably to support their new advertising business model and get analytics for it. Running a CDN is expensive, and if you’re not paying for it then you are the product. I would not be surprised if Unsplash hotlinked images broke at some point in the future.
If you want a CDN, you should run one for your entire site, not just certain images from a single source — in fact having multiple CDNs running at the same time could slow down your site because of the additional DNS lookups.
Birsak said he checked the plugin and found a simple solution for bypassing the hotlinking, which only requires a few lines of code.
“Since it’s so easy, and others may find it useful, I released this plugin,” Birsak said. “Nowadays with GDPR and the invalidation of the Privacy Shield people are more likely to be concerned about sending data to third party services. So disabling the CDN should at least be an option.”
WordPress developer Tom Nowell also created a quick plugin to disable Unsplash’s CDN, which is now available on GitHub.
“I don’t have qualms with Unsplash themselves but I did miss having the option to choose for myself,” Nowell said regarding the plugin’s CDN default. “Rather than argue to add it, I spent a little time and built the plugin, it’s only small so didn’t take much time. As for the CDN, it’s nice to save bandwidth, though for local development it’s always faster to switch it off.”
Unsplash Plugin Will Not Add an Option to Disable the CDN – Its API Guidelines Require Apps to Use It
The plugins that disable Unsplash’s CDN could immediately become obsolete if Unsplash decided to build in an option into the official plugin to do the same. The company has confirmed the team has no current plans to so.
“The CDN is a feature that dynamically serves the right size and format of image, and includes performance optimizations not available via additional plugins like WordPress.com’s Jetpack or most CDNs,” Unsplash co-founder Luke Chesser said. “We do this to improve the performance of the image loading and allow Unsplash contributors to count the number of times their images have been seen.”
In addition to sharing this data with contributing photographers, Unsplash advertisers also need this data to continue getting value from the new Unsplash for Brands business model.
The total monthly cost in 2019 for the company’s image hosting with Imgix was $42,408, which means Unsplash spends north of $500k per year to serve optimized images via its CDN. Chesser said the cost of the CDN is “very low relative to the number of requests and traffic it can serve,” given how optimized and performant the image serving infrastructure is. Last year Unsplash sent petabytes of data through Imgix’s CDN for 250 million variations of the library’s source images.
“We treat brands as contributors as they also share images on Unsplash,” Chesser said. “We report downloads and views back to them. So yes, the view and download counts do matter to our business from a monetary perspective, but to be clear, if you take away brands, we would still have this requirement as it’s central to growing the library and encouraging more contributors.”
Providing stats to brands undoubtedly helps pay the bills and keeps the lights on, so it is no wonder the requirement to use the CDN will remain in the WordPress plugin. In fact, this requirement was built into Unsplash’s API guidelines in 2018 and applies to all applications accessing the collection:
“All API uses must use the hotlinked image URLs returned by the API under the
photo.urls properties. This applies to all uses of the image and not just search results. “
In 2019, Unsplash received more traffic from its API partners than from the company’s own website and official apps. Any successful monetization strategy that hinges on advertising will need to deliver those stats and requiring applications use the CDN in order to use the API is one way to do that.
Matt Mullenweg recently asked what these API guidelines mean for existing WordPress plugins, like Instant Images, that serve Unsplash images without using the CDN. The plugin has more than 50,000 active installations.
“When we released the updated guidelines we applied them proactively to new apps and worked with developers on a case by case basis over a one year period to consider hotlinking and downloads for legacy apps,” Chesser said. “Instant Images was built before we made the update to the guidelines and so we exempted them long ago, along with a number of other legacy apps.”
Instant Images plugin developer Darren Cooney said he will not be adding an option to his plugin for turning on the CDN and declined to comment further on his reasons.
“I will say that I think the CDN should be opt-in and it should be more clear what happens on the Unsplash side when the CDN is in use,” Cooney said. “What is tracked, why it’s tracked and what benefit do added views provide the contributors.”
When asked whether Unsplash plans to update the plugin to deny API access to sites that have added a plugin to disable the CDN, Chesser said no. WordPress plugins weaponizing themselves against each other is not unheard of, although it is unusual and frowned upon.
“We don’t do things like that,” Chesser said. “I think anyone who knows our team and our community will know that we always try to take reasonable actions as we’re representing a lot of contributors and a large community. If a user wants to install a plugin to deactivate the CDN but still access the library, they can do that by all means, but we don’t want to build, promote, and support that functionality ourselves because it works against our community, our business, and our mission.”
The bottom line is Unsplash is a business, and a business needs to make money. Certainly a company doesn’t commission a WordPress plugin from a team of the caliber of XWP without hoping for a return on that kind of investment. The plugin’s setup process makes it effortless for users to connect to the Unsplash API, but there isn’t any transparency during this process regarding what data users are agreeing to send Unsplash. The plugin needs to be more forthcoming about the data the CDN collects on views and downloads. This would go a long way towards establishing more credibility with skeptics. Those who are wary of the requirement to use the CDN can use a plugin to disable it or install an alternative like Instant Images.
It seems that the “no links to competing products” rule that is invariably enforced in plugin reviews is ignored in Mullenweg’s case…