As traditional CDNs offering Pull-type as well as Push-type caching, they don’t act as a reverse proxy. That means, unlike Cloudflare or StackPath, they don’t handle the DNS resolution for your domains. Instead, they only offer CNAME subdomains for your caching zones.
Both came into existence around the same time as well. KeyCDN started its operations in 2014-2015, while BunnyCDN came into the light during 2015-2016. There is only a difference of one year or less. At least, that’s what this Google Trends graph says:
KeyCDN seems to be slightly more popular.
Looking at their Twitter pages as well, currently, KeyCDN has more followers. Maybe because they have been around for longer, or because of effective marketing strategies.
However, if you check the usage trends from W3Techs, the story is different. BunnyCDN has a better position.
So, for a person looking at the two providers for the first time, it can be a little confusing to pick one. So, in this review, we will explore the subtle and not-so-subtle differences between BunnyCDN and KeyCDN.
Unlike Amazon S3 and other enterprise-level providers, BunnyCDN and KeyCDN don’t charge for the no. of requests. But still, there are a few items that show up on your monthly bills. Here we will discuss three of them:
- Bandwidth charges
- Storage charges
- Image processing charges
Be it with pull zones or push zones, bandwidth charges will be the main item on your bill. Whenever someone accesses the assets on your CDN zones, it incurs bandwidth fees. So, first, let us look at that:
|Region||BunnyCDN||KeyCDN (first 10TB)|
|North America & Europe||$0.01/GB||$0.04/GB|
So, BunnyCDN’s charges are considerably lower. For traffic from North America and Europe, it is almost one-fourth. However, the price for KeyCDN lowers as your usage increases. For example, if your bandwidth is over 100TB per month, the price becomes one-third to one-fourth.
BunnyCDN also offers custom plans for large users, but the details are not available on their site.
Storage costs for Push Zones
You don’t need to pay for any assets cached on your pull zones. The only charge is for the bandwidth, as we have discussed above. But if you have deployed any push zones, there is a storage charge in addition to the bandwidth charge.
- BunnyCDN – $0.005/GB/month for the first 500TB
- KeyCDN – $0.29/GB/month for the first 500GB, $0.19/GB/mo (500GB-1TB), $0.09/GB (over 1TB)
Again, BunnyCDN is considerably cheaper. The initial charge is almost 1/60th compared to KeyCDN. Suppose you store 1TB of data on both the services and the costs will be like this:
- BunnyCDN: $0.005 * 1000 = $5/mo
- KeyCDN: $0.29 * 500 + $0.19 * 500 = $240/mo
Look at the whopping difference. KeyCDN costs 48X. So, if you are planning to use push zones to store terabytes of data, BunnyCDN is clearly better.
And there is another point. With BunnyCDN, there is no limit to the number of zones you can create with an account. Whereas KeyCDN imposes a limit: 3 zones per account.
Minimum Charge & Minimum Payment
Even if your usage is quite low, there is still a minimum monthly usage and a minimum payment. Let me try to make it clear. Even if you don’t use any bandwidth during a month, but have any active zone, the minimum charge will be deducted from your balance. And when you recharge your account, you have to pay at least the minimum payment amount.
With BunnyCDN, the minimum usage is $1/mo and the minimum payment amount is $10. While for KeyCDN, it’s $4 and $49 respectively. So again, BunnyCDN is almost five times cheaper.
Image Optimization Price
Both providers offer on-the-fly image processing. It allows several things including cropping, resizing, and WebP conversions via simple URL parameters. You can enable it for individual zones for an extra charge:
- BunnyCDN: $9.5/mo, unlimited operations
- KeyCDN: $1 per 2000 operations
The pricing strategy is different here. BunnyCDN offer the service at a flat rate, while for KeyCDN, it’s for the no. of operations. So, for large-scale users, BunnyCDN will be a better choice. On the other hand, if you have fewer images to process in a month, KeyCDN will be cheaper.
- Credit Card
- Credit Card
Data Center Locations / PoPs
|No. of PoPs||42||34|
In the PoPs department, I don’t think you can complain about either BunnyCDN or KeyCDN. Both have their presence in nearly all regions of the world, covering six continents. Look at their location maps as well:
But if you are nit-picking, BunnyCDN has a slight edge as it has a few more locations. Also, they have a data center in Lagos, Nigeria, whereas KeyCDN doesn’t have any center in West Africa.
Pull Zone Features
As the name suggests, pull zones pull the assets from your origin server and store them on edge locations. It supports a variety of features:
|Custom CNAME & SSL||yes||yes|
|Forward Host Header||yes||yes|
|Edge Rules||yes, support conditions||yes, but not conditional|
From the above table, you can see that most of the features are available with both the providers. So, I will mention only the differences:
BunnyCDN’s perma-cache is a unique feature, which is highly helpful in reducing the load on your origin server. With normal caching, infrequent files often get deleted from the edge servers. Such files should be re-pulled from the origin server before sending them to the user.
With Perma-cache, you can connect a pull zone with a storage zone. The latter stands between your origin server and edge servers and stores all the files permanently. So even if a file is not available at an edge server, it pulls from the connected storage zone instead of your origin server. These storage zones also support geo-replication, which ensures lower latency.
Country-level blocking and redirection
Pull zones in BunnyCDN allows blocking or redirecting requests based on a user’s country, whereas, with KeyCDN, I didn’t find a direct way to implement it.
Edge rules allow setting headers and other things for each zone. Here is a list of the rules supported by BunnyCDN:
- Block Request
- Force Download
- Force SSL
- Change Origin URL
- Override Cache Time
- Redirect to URL
- Set Request Header
- Set Response Header
- Enable/Disable Token authentication
You can set these rules conditionally as well. For example, if you want to set Force Download for a particular file, you can do that.
KeyCDN also supports some of these headers and rules. However, it doesn’t support conditions.
BunnyCDN allows implementing the following limits per pull zone:
- Download speed limit
- Requests limits
- Maximum connections per IP
- Monthly bandwidth limit
If you don’t want the usage to exceed a certain limit, this feature is highly useful.
KeyCDN currently doesn’t support such limits. All the requests go through unmetered until you have balance credits in your account.
KeyCDN gets a point here. It supports live video streaming at an affordable cost. BunnyCDN supports HTTP Live Streaming, but according to their FAQ, currently, they don’t allow it.
Optimization & Image Processing
As I mentioned in the pricing section above, Bunny Optimizer comes with a price tag of $9.5/mo. You can enable it at the zone-level.
Not just image processing, it includes css and js file minification as well. Here is a list of the supported features:
- WebP Conversion
- URL parameter based image processing
- CSS and JS minification
- Automatic image optimization for Desktop and mobile devices
KeyCDN also offers a similar feature. But it is not as comprehensive as Bunny Optimizer. Although it supports image processing based on URL parameters, currently there is no option to enable automatic compression. It doesn’t support file minification either.
Push Zone Features
|rsync over SSH||No||Yes|
The ability to select geo-replication regions is the main advantage I found with BunnyCDN storage zones over KeyCDN’s push zones. Because the cost depends on the regions you activate. Currently, there are five regions:
- New York – $0.02/GB
- Los Angeles – $0.02/GB
- Falkenstein – $0.01/GB
- Singapore – $0.03/GB
- Sydney – $0.03/GB
If you select all the five regions, your files will be replicated across all the regions and the total monthly charge will be $0.11/GB (sum of the prices of all locations). Instead, if you activate only a specific location, you will be charged only for that specific location.
KeyCDN also supports geo-replication, but you have no choice to select locations.
On the flip side, KeyCDN supports accessing Push zones via SSH, which I couldn’t find with BunnyCDN storage zones.
KeyCDN supports the Syslog protocol, which allows you to send the logs to another server. The feature comes at an extra charge of $3 per day.
Whereas with BunnyCDN, you can view the detailed logs in the dashboard itself. You can also download it as a .log file. However, there are no mentions about how to set up the Syslog protocol.
On BunnyCDN’s Statistics page, you can monitor the following metrics:
- Bandwidth served: bandwidth, no. of requests, cache hit ratio
- Datacenter traffic distribution
- Details or non-2xx responses, which is useful in troubleshooting
KeyCDN’s Reporting section is divided into two: Usage, and Analytics.
Here is how the Usage page looks like.
And here is the Analytics page:
Overall, BunnyCDN gives a richer feel with more details. Especially the data center traffic distribution is quite helpful in finding where the majority of your visitors are from.
I did experience a few small glitches when I started using BunnyCDN in 2019. So I had to try their support ticket a couple of times. But their support team have been proactive all the time. The longest reply time I’ve got so far is only three hours.
My duration with KeyCDN is not as long as with BunnyCDN. But once I opened a ticket to enquire about their image processing feature while in trial mode. And the response time was slightly longer – almost a day.
However, I have seen people who have received a much faster response than me.
To compare the speed differences between the two CDNs, first I created a sample WordPress site. To make it close to a real site, I added some images and used the Elementor builder to create the page.
Then I tested the loading times from all the locations available in Pingdom Tools. You can see the result in the second column in the below table. After that, I created a pull zone each on KeyCDN and BunnyCDN with the origin URL set to our sample website. Then using the W3 Total Cache’s CDN feature, I integrated each pull zone one after the other and ran the speed tests again.
|Location||without CDN||with KeyCDN||with BunnyCDN|
|Average||1.095s||646ms (41% faster)||673ms (39% faster)|
Although the difference in the average loading time (646ms vs 673ms) is not huge, KeyCDN shows consistently faster results from all locations.
So, according to my tests, KeyCDN has a slight edge in performance.
Pros & Cons of BunnyCDN
- Lots of features like perma-cache
- Cheaper than the competition
- Efficient support
- Documentation could be better: they do have good docs, but I feel that detailed explanations are missing here and there.
- comparatively newer provider
Pros & Cons of KeyCDN
- Slightly faster
- Clean user interface
- Older and more popular
- Higher minimum payment
- Some features are missing
So, overall, my personal choice is BunnyCDN. It is the CDN I currently use on this site as well. That doesn’t mean KeyCDN is not good enough. They have been a stable provider for quite some time with decent performances. But to be honest, I couldn’t find a solid reason to consider KeyCDN over BunnyCDN.
If you have a different opinion or experience, please mention it in the comments.