Bunny.net for hosting your own video: player, CDN and WordPress
When video cannot live on YouTube (courses, private content, sites that cannot carry someone else's branding) you need a CDN with a player. Here is the setup that works.
Short answer
Bunny Stream hosts your videos, distributes them over a global CDN and gives you an embeddable player with no third party branding and no suggested videos at the end. You pay for storage and traffic consumed, not a fixed subscription, so a course with few sales costs cents. It is the right option for paid courses and private video; for public content that needs reach, YouTube is still better because of its distribution.
- Last verified
- January 25, 2026
Antes de empezar necesitas
- A Bunny.net account
- Your videos ready in a standard format such as MP4 H.264
- A site to embed them on
YouTube solves distribution. What it does not solve is control: it puts its own branding on top, suggests other people's videos when yours ends, and decides what may be published.
For a paid course, that is a problem. Bunny Stream is the most reasonable answer in terms of price against effort.
1. Create the video library
In the dashboard, create a Video Library. Pick the region closest to your main audience: that is what affects initial load time the most.
2. Upload and wait for encoding
On upload, Bunny generates several quality levels to adapt to each viewer's connection. Encoding takes a few minutes per video.
3. Customize the player
Brand colors, your own logo, controls and playback speed. Turn on subtitles if you have them: beyond accessibility, plenty of people watch video with the sound off.
4. Protect the content if it is paid
Turn on token authentication. The player stops working if someone copies the URL and pastes it somewhere else.
Combine it with domain restriction: only your site can embed it. With both measures in place, sharing the link stops being useful.
5. Embed it on your site
The code is a standard iframe. For courses, the usual setup is for the membership plugin to decide whether to show the player based on the user's purchase.
Common mistakes
Not setting spending alerts. The usage-based model is an advantage right up until a video gets shared more than expected. Configure alerts from day one.
Choosing the wrong region. If your audience is in Mexico and your library is in Europe, the first load is noticeable.
Forgetting subtitles. They are accessibility, retention and also indexable content if you publish them alongside the video.
Frequently asked questions
Why not just use YouTube?
For public content you want people to discover, YouTube wins without argument. For a paid course, an internal video or a sales page, YouTube puts its branding, its suggestions and its rules on you. That is where your own CDN makes sense.
What does it really cost?
You pay per gigabyte stored and per gigabyte served, with different rates depending on the viewer's region. A course with few students costs very little; a viral video served to a lot of people can climb fast. Check the current rates and set up spending alerts.
Can you stop people from downloading the video?
You can make it much harder with access tokens and signed URLs, and that stops 95% of people. No web system prevents copying entirely: whoever records the screen always can.
Does it work with WordPress?
Yes, the player embeds with an iframe or through the official plugin. For courses, the typical integration is with a membership plugin that controls who sees what.



