Comparison of 2023 Image CDNs — Cloudflare Polish, Bunny Optimizer, Vercel Image Optimization, imgproxy, and WebP Cloud Services
这篇文章有简体中文版本,在: 2023 年图片 CDN——Cloudflare Polish, Bunny Optimizer, Vercel Image Optimization, imgproxy 和 WebP Cloud Services 对比
Image optimization, which might already be a familiar supplementary service for CDNs, allows users to enable the “image optimization” feature when selecting a CDN for their website. Optimization in this context typically involves the following:
- Scaling and cropping images using parameters like
width
- Controlling image quality transformations using parameters like
lossy=1,q=80
- Converting images to formats like WebP/AVIF that are better suited for web display to reduce file sizes
Before the introduction of our WebP Server Go open-source project, users seeking similar image transformation capabilities were mostly limited to using CDN supplementary services or manually converting images locally and then uploading them to their websites (while also considering compatibility with older browser versions). WebP Server Go aims to provide users with an open-source solution for image optimization without relying on CDNs.
However, during our communication with users, we discovered that some might lack the ability or plans to host their own servers (for instance, those using static website frameworks like Hugo/Hexo). Others might find the installation and maintenance of WebP Server Go to be cumbersome. To address this, we developed a SaaS product over the past three months called WebP Cloud. This product allows users to experience image optimization effects in a manner similar to using CDNs.
We understand that once we venture into the realm of SaaS and CDN-like functionalities, we’re entering a complex industry. In this article, we’ve chosen several mainstream CDN providers offering relevant features and compared our WebP Cloud alongside them.
Price Comparison
Provider (Corresponding Product) | Price | Bandwidth | Daily Image Output Limit | Original Images |
---|---|---|---|---|
Cloudflare (Polish) | $25/mo per domain | ♾️ | None | ♾️ |
Bunny (Bunny Optimizer) | $9.5/mo per domain + Overages | ♾️ | None | ♾️ |
EWWW Image Optimizer (Standard) | $7/mo per domain | 200 GB | None | ♾️ |
EWWW Image Optimizer (Growth) | $15/mo for 10 domains | 400 GB | None | ♾️ |
Vercel Image Optimization (Hobby) | $0/mo per account | 100 GB | None | 1000 |
Vercel Image Optimization (Pro) | $20/mo per account | 1 TB + $40/100 GB | None | 5000 + $5/1000 |
WebP Cloud Services (Free) | $0/mo per account | ♾️ | 2000 | ♾️ |
WebP Cloud Services (Lite) | $3/mo per account | ♾️ | 5000 | ♾️ |
WebP Cloud Services (Plus) | $10/mo per account | ♾️ | 15000 | ♾️ |
imgproxy.net | $41.58/mo per account | ♾️ | None | None |
Feature Comparison
Provider (Corresponding Product) | Custom Domains | Image Cropping | Additional Features (Watermark, Flip, Blur, etc.) | AVIF Support |
---|---|---|---|---|
Cloudflare (Polish) | ✅ | ❌ | ❌ | ❌ |
Bunny (Bunny Optimizer) | ✅ | ✅ | ✅ | ❌ |
EWWW Image Optimizer (Standard) | ❌ | ❌ | ✅ | ❌ |
EWWW Image Optimizer (Growth) | ✅ | ❌ | ✅ | ❌ |
Vercel Image Optimization (Hobby) | ✅ | ✅ | ❌ | ✅ |
Vercel Image Optimization (Pro) | ✅ | ✅ | ❌ | ✅ |
WebP Cloud Services (Free) | ✅ | ✅ | ✅(Flip, Brightness, Contrast, Saturation, Hue, Sharpen, Blur, Filters) | ✅ |
WebP Cloud Services (Lite) | ✅ | ✅ | ✅(Flip, Brightness, Contrast, Saturation, Hue, Sharpen, Blur, Filters) | ✅ |
WebP Cloud Services (Plus) | ✅ | ✅ | ✅(Flip, Brightness, Contrast, Saturation, Hue, Sharpen, Blur, Filters) | ✅ |
imgproxy.net | ✅ | ✅ | ✅ | ✅ |
In the above comparison, we note that for some providers to access specific features, users may need to change their DNS to point to the CDN’s address. The drawback here is that such changes can result in downtime during the transition, and the CDN’s DNS might lack certain features (e.g., Cloudflare’s DNS doesn’t support certain capabilities like Route 53’s support for geolocation routing). However, the advantage is that if users have already changed their DNS and their websites are already through the respective CDN provider, enabling those features is nearly a one-click process.
If not using DNS redirection, CDNs typically provide an extra domain or allow users to use their own additional domain. For example, if the original image URL was:
https://www.example.com/wp-content/uploads/2023/07/image.jpg
It might need to be changed to:
https://cdn.example.com/wp-content/uploads/2023/07/image.jpg
To make this transition user-friendly, CDN providers need to offer additional assistance, such as providing WordPress plugins, replacement scripts, and tutorials to modify existing website tags.
Cloudflare Polish
Documentation: https://developers.cloudflare.com/images/polish/
Cloudflare Polish service cannot be purchased independently; it requires the purchase of the Cloudflare Pro Plan ($25/month per domain). Polish converts images to the WebP format, with options to choose lossy conversion. It doesn’t offer other features like thumbnail generation. The advantage is that once the Pro Plan is purchased, there are no additional image-related limitations. However, the drawback is that the entire website must use Cloudflare for it to work, requiring modification of the domain’s NS records to Cloudflare’s. It’s suitable for users with Cloudflare-supported domains and a sole image optimization requirement. For those with additional needs or not wanting to use Cloudflare as a CDN, it might not be suitable.
Cloudflare also offers another product called Cloudflare Image Optimization. This is a separate paid service that doesn’t require Cloudflare Pro. Images are transformed by appending additional addresses, like /cdn-cgi/image/width=80,quality=75/uploads/avatar1.jpg
, or /cdn-cgi/image/width=100/<https://s3.example.com/bucket/image.png>
. Similar to Polish, it requires entire domain integration with Cloudflare. The cost is $1 per month per 100k images delivered.
Bunny Optimizer
Documentation: https://docs.bunny.net/docs/stream-image-processing
BunnyCDN’s Bunny Optimizer is an additional product that doesn’t require NS modification. Users create domains on BunnyCDN and enable this product. Unlike Cloudflare, Bunny Optimizer has more parameter options for various image operations such as cropping, flipping, blurring, and sharpening (using parameters like ?blur=0,?crop=3500,3500
). However, it doesn’t support image watermarking.
BunnyCDN, operated by BunnyWay d.o.o., is a Slovenian-European company.
EWWW Image Optimizer
Documentation: https://docs.ewww.io/article/4-getting-started
This product seems quite remarkable. The images on their official website, https://ewww.io/, mostly begin with ewtbsxzkfw9.exactdn.com
. For instance:
https://ewtbsxzkfw9.exactdn.com/wp-content/uploads/2022/09/ft1.png?strip=all&lossy=1&ssl=1&fit=523,489
Moreover, from the response headers, it appears that they may be utilizing BunnyCDN.
It’s uncertain whether they are directly employing BunnyCDN’s Optimizer. However, in comparison to Bunny, they provide several plugins, such as the WordPress plugin https://docs.ewww.io/article/4-getting-started.
(Interestingly, the image addresses in the aforementioned documentation begin with d33v4339jhl8k0.cloudfront.net
, for example:
https://d33v4339jhl8k0.cloudfront.net/docs/assets/57c6eee1c69791083999e671/images/5c5b2c0c2c7d3a66e32e169e/file-ERskC5hGyx.png
It seems this product may not be fond of “eating its own dog food.”
Vercel Image Optimization
Documentation: https://vercel.com/docs/concepts/image-optimization#source-images
Vercel has a close relationship with NextJS, and the Image Optimization feature here is designed for NextJS sites hosted on Vercel.
A typical user is Mirror.xyz. For instance, on an article page like https://dev.mirror.xyz/Jn62zF5n62BfowdaFgm3uIx3Fgp2vIR7b-HTSxKVXqk, the image address is:
https://dev.mirror.xyz/_next/image?url=https://mirror-media.imgix.net/nft/7WubHdcduGYqO3uKL4JSz.png?h=null&w=null&auto=compress&w=640&q=75
From the URL, it’s apparent that the original image is:
https://mirror-media.imgix.net/nft/7WubHdcduGYqO3uKL4JSz.png
The integration method involves appending /_next/image?url=
to the URL. According to Vercel’s documentation, if you’re using NextJS, you just need to define the image with a format like:
<Image src="/hero.png" width="700" height="745" />
This automatically optimizes the image output. For users already using NextJS + Vercel, this feature provides a seamless experience. However, this service isn’t a general-purpose solution.
imgproxy.net
Website: https://imgproxy.net/
The usage is similar to Vercel’s Image Optimization, but it’s a more general-purpose service. A notable user of this service is https://dev.to/. For example, there are image addresses on the page like:
https://res.cloudinary.com/practicaldev/image/fetch/s--ZU-2axST--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8afrf5y9mwf4uq3ss1o.png
The actual original image address is:
https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8afrf5y9mwf4uq3ss1o.png
As you can see, they also utilize parameter concatenation for integration, similar to how WebP Cloud operates. This service, like WebP Cloud, uses libvips as the underlying conversion engine.
Interestingly, this company’s service appears to be the most expensive among the services being compared. The lowest-priced plan is 499 USD per year.
WebP Cloud Services
Document: https://docs.webp.se/
This is a new service we’ve been working on in the past two months. Its main functionality is to provide WebP/AVIF conversion for images on websites without requiring users to host our open-source component WebP Server Go. This service is particularly suitable for static blogs like Hugo, Hexo, etc.
By registering an account on WebP Cloud and providing your website’s address, WebP Cloud will provide you with a new domain. When users access images using the new domain and their website’s image URLs (URIs), WebP Cloud will convert the images to WebP/AVIF format and deliver them. This process significantly reduces image size while preserving image quality, thereby accelerating overall website loading speed.
For instance, if your website’s original image URL is https://yyets.dmesg.app/api/user/avatar/Benny
, WebP Cloud will provide a new address such as https://vz4w427.webp.ee
. Simply accessing https://vz4w427.webp.ee/api/user/avatar/Benny
will display the compressed image.
Our pricing model: There are no restrictions on access traffic; we only charge based on the number of image accesses. Free users receive a daily quota of 2000 image outputs and can create three proxies, each with 100MiB of non-expiring cache.
- This quota is sufficient for websites/blogs with relatively low traffic. If there’s a sudden surge in traffic, you can purchase additional access at a lower cost (similar to extra data plans for mobile phones). This extra cost is deducted from your paid quota if your free quota is exhausted.
Additionally, we offer two subscription services:
- Lite, currently priced at $3/month. Plus users can create 6 proxies, and the daily output quota increases to 5000 images per proxy. Each proxy also receives 512MiB of non-expiring cache.
- Plus, currently priced at $10/month. Plus users can create 10 proxies, and the daily output quota increases to 15000 images per proxy. Each proxy also receives 1024MiB of non-expiring cache.
Cache functionality means that all previously output images are cached by default in WebP Cloud (without expiration), so subsequent accesses will directly retrieve images from WebP Cloud, avoiding further requests to the source server and eliminating additional bandwidth and traffic burden.
Since integrating our service doesn’t require changing your Name Servers (NS) to ours (in fact, we don’t operate our own NS servers), we’ve made it easy for users to connect by providing plugins for platforms like WordPress, Hugo, Halo, etc. You can find related documentation at https://docs.webp.se/webp-cloud/access/.
Moreover, because NS changes are unnecessary, we’ve implemented extra security measures to prevent unauthorized usage of your source images. For example, we offer custom User-Agent (UA) settings for source requests(fetch original image from origin), CORS headers, and Referer restrictions. This aspect sets us apart from other CDNs compared earlier.
Furthermore, like other CDNs, we support Custom Domains, enabling you to use your own domain for image delivery. For example, two of our users (Keshane’s Simple Blog and STRRL’s backyard) use their respective domains https://webp.keshane.moe and https://webp.strrl.dev to connect to WebP Cloud.
Conclusion
As evident from the preceding text, once we delve into functionalities like SaaS and CDN, we step into a rather complex industry. Nearly every image processing service tends to encompass features like rotation, brightness adjustment, saturation enhancement, etc. Moreover, when compared with other products, the discrepancies in our network coverage become quickly apparent. This is due to our current node presence limited to Europe. Consequently, in this aspect, we are constrained to compete with other providers by focusing on differentiation.
In addition to offering the majority of CDN features, our distinct characteristics include:
- Persistent Cache: This feature allows for significant reduction of pressure on your source server, as images are cached over extended periods.
- Additional Source Settings: We provide options to safeguard your source server images from being bypassed by the CDN, ensuring a layer of protection.
- Watermark and Filter Functionality: Our service offers the convenience of applying watermarks or filters to images in batches.
- Open-Source WebP Server Go: For those inclined to host their own product, we provide the open-source WebP Server Go, rendering our WebP Cloud service optional.
- Responsive Telegram Group: Our Telegram group (https://t.me/webp_se) provides support across time zones (UTC +2 and UTC +8). Given our smaller scale, every paying user is a loyal supporter, and they can engage with our team at any time.
- Non-Financing Approach: Operating without the pressures of profitability or external investments, we remain steadfast in pursuing what we deem right. We also explore various interesting directions. Notably, our entire service runs on ARM64 machines, and we are not subject to the influence of investors dictating our direction.
If you find our service intriguing, feel free to log in to the WebP Cloud Dashboard for a firsthand experience. And if you’re curious about the array of magical features it offers, our WebP Cloud Services Docs are there for your exploration. We hope you enjoy the experience!
The WebP Cloud Services team is a small team of three individuals from Shanghai and Helsingborg. Since we are not funded and have no profit pressure, we remain committed to doing what we believe is right. We strive to do our best within the scope of our resources and capabilities. We also engage in various activities without affecting the services we provide to the public, and we continuously explore novel ideas in our products.
If you find this service interesting, feel free to log in to the WebP Cloud Dashboard to experience it. If you’re curious about other magical features it offers, take a look at our WebP Cloud Services Docs. We hope everyone enjoys using it!
Discuss on Hacker News