This is a research guide based on cited documentation. It is not a report of firsthand testing. Our editorial method

Why video is the wrong workload for a WordPress host

A course page is a few hundred kilobytes of HTML. A lesson video is often hundreds of megabytes, and every student who watches it pulls that file again. On a managed WordPress plan, that traffic is counted against the same server bandwidth and disk allowances that serve your checkout and lesson pages.

WP Engine's support article on reducing bandwidth and storage usage advises against looping videos and says to consider hosting the videos on YouTube, Vimeo, or with another provider. Kinsta's overage documentation, as published on 13 October 2026, lists server bandwidth overage at $0.50 per GB and disk space overage prorated at $2 per GB per month. Those rates are reasonable for a web page; they are expensive for a video library.

Hypothetical cost math using Kinsta's published rate: a 500 MB lesson watched 400 times is about 200 GB of transfer. If that transfer were served from the server and fell outside your plan allowance, 200 GB at $0.50 per GB would be $100 for one lesson in one month. The same file also occupies disk on every backup and staging copy.

What the video platforms charge, from their own pricing pages

Cloudflare Stream and Bunny Stream publish usage pricing. They meter differently, so compare them with your own catalogue rather than headline rates. Cloudflare counts minutes; Bunny counts gigabytes. Vimeo plan prices were not readable from Vimeo's pages on 13 October 2026, so they are omitted here; check the live checkout before committing.

  • Cloudflare example: a 20-hour course is 1,200 minutes, which needs two 1,000-minute storage increments, or $10 per month. If 300 students each watch the full 1,200 minutes, that is 360,000 minutes delivered, or $360 in that month.
  • Bunny example: Bunny's own calculator example on its pricing page, 300 GB of video with 50 GB of monthly traffic and one replication point, shows $4.5 per month on the Standard tier and $3.25 on the Volume tier.
  • Minutes-based billing rewards high-bitrate video; gigabyte-based billing rewards efficient encodes. Estimate both from your real watch time.
PlatformStorageDeliveryOther published terms
Cloudflare Stream$5 per month for each 1,000 minutes of storage capacity, prepaid$1 per 1,000 minutes deliveredIngress and encoding are always free; no additional egress fees
Bunny StreamFrom $0.01 per GBFrom $0.005 per GB$1 monthly minimum; no transcoding fees; no security fees
VimeoNot verifiedNot verifiedSpecific-domain embedding is available on all plans except Free and Basic

Domain restriction is not the same as members-only access

Moving video off the host only helps if strangers cannot lift the embed. The platforms offer two different controls, and course sites usually need both.

Domain restriction limits where the player will load. Vimeo's help centre documents a Specific domains embed setting, available on all plans except Free and Basic, with up to 50 domains per video. Cloudflare's Stream documentation says embed codes can be used on any domain by default and that its Allowed Origins feature lets you specify which origins are allowed for playback.

Signed playback limits who can load it. Cloudflare documents that by default a video can be viewed by anyone with just a video id, and that once a video requires signed URLs it can no longer be accessed publicly with only that id. Bunny documents embed view token authentication as the default mechanism to prevent other sites from embedding your videos, and separate CDN token authentication at the Pull Zone level for direct video URLs.

Domain restriction stops another website from embedding your lesson. It does not stop someone from sharing the lesson page itself if your page protection fails. Signed or token-authenticated playback, generated only for a logged-in member, ties each view to your access rules.

Who should move video off the host, and who can wait

SituationRecommendationReason
Paid lessons with self-uploaded MP4 files in the media libraryMove to a video platform before the next host changeEvery view counts as server bandwidth and every backup carries the files
Videos already on Vimeo or another platform but embeddable anywhereKeep the platform; turn on domain restriction or signed playbackThe cost problem is solved; the leak problem is not
A handful of short free preview clipsCan stay, but watch bandwidth after launchesLow volume rarely matters until a promotion spikes it
Live cohorts or webinarsOut of scope for on-demand platforms covered hereLive delivery is priced separately

Move video before you move hosts

Moving video first makes the WordPress migration smaller, faster to copy, and quicker to restore. Treat it as its own project with an acceptance check.

  • Inventory every lesson that links to a file in wp-content/uploads, including videos referenced inside LearnDash lesson settings rather than the post body.
  • Upload to the platform, record each new video ID against the lesson, and turn on domain restriction or signed playback before replacing any embed.
  • Add your staging domain to the allowed list while testing, then remove it after cutover so the staging copy cannot serve lessons publicly.
  • Log in as a test member and confirm playback on each lesson type; log out and confirm the player refuses to load.
  • Only after playback is accepted, remove the old files from uploads so backups and the migration copy shrink.
  • Re-check host bandwidth for the next full billing period to confirm the drop.

Questions before you decide

Is domain restriction alone enough for paid lessons?

It stops other websites from embedding the player, but Cloudflare documents that a Stream video can be viewed by anyone with its video id unless signed URLs are required. Pair domain restriction with signed or token-authenticated playback.

Does Cloudflare Stream charge for uploading or encoding?

Cloudflare's Stream pricing page states that ingress and encoding are always free; you pay for stored minutes and delivered minutes.

Sources & verification

Product details and prices can change. Check the linked provider before buying.

  1. WP Engine: Reduce bandwidth and storage usage Accessed 13 Oct 2026
  2. Kinsta: WordPress hosting overages Accessed 13 Oct 2026
  3. Cloudflare: Stream pricing Accessed 13 Oct 2026
  4. Cloudflare: Securing your Stream Accessed 13 Oct 2026
  5. Bunny.net: Stream pricing Accessed 13 Oct 2026
  6. Bunny.net: Stream security Accessed 13 Oct 2026
  7. Vimeo: Embed privacy settings Accessed 13 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.

Your decision at a glance

Compare the options

Full comparison

Documentation-based guidance. No tested ranking or performance score.

Managed WordPress

Kinsta

Consider it for
Use Kinsta Single 20GB, listed at $35/month, when a WordPress course site needs published PHP-capacity controls and a staging rehearsal.
Starting cost
Single 20GB listed $35/month on 2026-09-15; first-month promotions and annual billing change the cash invoice
Before you choose
Do not treat visitor allowances as class concurrency. No plan here is verified for a specific learner count.

Checked 15 Sep 2026 · Pricing source

View Kinsta plans

Direct provider link; no affiliate tracking added by this publication. Link disclosure

Managed WordPress

WP Engine

Consider it for
Use WP Engine Essential when the quoted plan covers your plugin stack, membership cache rules, and an isolated staging copy.
Starting cost
Essential 1-site card displayed $336/year on 2026-09-15 with promotional first-year pricing; confirm undiscounted checkout
Before you choose
Skip if you cannot rehearse membership access and payments at the destination. No measured speed advantage is claimed.

Checked 15 Sep 2026 · Pricing source

View WP Engine plans

Direct provider link; no affiliate tracking added by this publication. Link disclosure

Shared hosting

SiteGround

Consider it for
Use SiteGround StartUp, advertised at $2.99/month for a prepaid first 12 months then $17.99/month, when one WordPress site needs shared hosting rather than a server you administer.
Starting cost
StartUp first-term $2.99/mo prepaid 12 months, renews $17.99/mo on 2026-09-15 (world page: ex. VAT); 1 website, 10GB, ~10,000 visits marketing estimate
Before you choose
Visit marketing estimates are not class concurrency. Renewal is $17.99/mo after the prepaid term. No course-capacity test is claimed.

Checked 15 Sep 2026 · Pricing source

View SiteGround plans

Affiliate link: we may earn a commission on an eligible purchase. Link disclosure