Embed Video on Teachable, Thinkific, Kajabi — The Iframe Way

Embed Video on Teachable, Thinkific, Kajabi — The Iframe Way

If you’ve hit Teachable’s, Thinkific’s, or Kajabi’s video pricing wall — or you just want a player you control — the way out is iframe embeds from a dedicated video host. The mechanics are the same on all three platforms; the UI for pasting the iframe is what differs.

This is the practical walkthrough.

Why bother?

Each LMS has its own version of the video tax:

  • Teachable bundles unlimited video on the higher tiers but throttles bandwidth on lower ones; their “Pro” tier is the unlock and it’s not cheap.
  • Thinkific caps video assets per plan and ladders pricing aggressively as your library grows.
  • Kajabi rolls video into the platform price but has tight per-asset and total-storage limits.

If your library is bigger than a few dozen lessons or your audience grows, the math eventually demands offloading video to a dedicated host. Plus, an LMS-bundled player is generic; you can’t change the colors, add a watermark, or pick the encoding ladder.

The fix is universal: host video elsewhere, embed via iframe, keep the LMS for what it’s good at (course structure, payments, drip schedules, community).

The general pattern

Every modern video host gives you an embed snippet — see the iframe embed code feature page for the canonical AVCaption snippet, the wrapper-div pattern that enforces 16:9 on mobile, and the allow attributes for fullscreen and picture-in-picture.

What changes per LMS is where you paste it.

Teachable

  1. In Teachable, open your course → the lecture you want to update.
  2. Click + Add Content → choose Code (the </> block, not the Video block — the Video block uses Teachable’s bundled hosting).
  3. Paste the iframe snippet. Save.
  4. Preview in an incognito window to confirm playback.

Tip: if you’re moving a whole course off Teachable’s video, do a single test lecture first. Verify mobile playback, fullscreen, and your domain whitelist on the video host.

Thinkific

  1. In your course builder, open the lesson.
  2. Change the lesson type to Multimedia (or add an HTML lesson element).
  3. Paste the iframe snippet into the HTML block. Save.
  4. Toggle Set lesson as required if you want completion gating; combine with a manual completion button if your video host doesn’t push completion events.

Thinkific’s preview is reliable — what you see in preview is what students see.

Kajabi

  1. In your product, open the post (lesson) you want to update.
  2. Add a Custom Code block from the content editor.
  3. Paste the iframe snippet. Save and publish.
  4. Use Kajabi’s Preview as Customer to verify.

Kajabi’s HTML sanitizer occasionally strips attributes. If allowfullscreen disappears, re-add via the Source view.

Lock the embed to your domain

Once your iframe is in the LMS, anyone who views the page source sees the embed URL. Without a domain whitelist, that URL works on any site they paste it into.

Every serious video host (AVCaption included) supports per-video iframe embed code restriction. Add *.teachable.com, *.thinkific.com, or *.kajabi.com (and your custom domain) to the allowlist. Now the embed only renders on your course site.

This won’t stop a determined attacker (Referer is spoofable), but it kills lazy reposting — which is most of your real-world piracy.

Encrypt the actual video

Domain whitelisting protects the embed. To protect the video itself, the host must encrypt segments. AES-128 multi-key HLS is the 2026 standard — segments are useless without keys, keys are signed, signed URLs expire fast.

If your current setup is uploading MP4s straight to your LMS, you have no encryption. Anyone who opens the lesson in a browser and runs yt-dlp against the page has your file. Moving to an encrypted video streaming host solves this in one step.

Brand the player

Generic players give your course a YouTube vibe. A branded player feels like a product. The AVCaption custom embed player lets you set accent color, logo, and (Enterprise) per-viewer watermark.

This matters more than people realize. Premium-feeling player = premium-feeling course = lower refund rate. We see Premium-tier customers shave a noticeable percentage off refund requests after rebranding the player.

Add multi-language subtitles

If your course audience is global, AI subtitles compound revenue. AVCaption’s multi-language subtitles (Enterprise) generate and translate captions across 50+ languages from your source audio.

Set the source language once, pick targets, and the player offers them in the captions menu. No translator agency required. See our deeper take: How to add multi-language subtitles to course videos with AI.

Track real progress (optional)

If you want real watch-time analytics inside Teachable/Thinkific/Kajabi, you need the player to push events back to the parent page. AVCaption’s player emits postMessage events for play, pause, progress, and ended. A few lines of JS in your LMS theme can mark a lesson complete at 90% watched.

This is more work than most creators want to do. The alternative is the standard “Mark as complete” button — fine for 95% of courses.

When to NOT do this

  • Tiny library, low traffic. If your whole course is 3 hours of video and you have 200 students total, the LMS-bundled player is fine. Don’t add complexity for nothing.
  • No engineering bandwidth. Iframe + domain whitelist is a 10-minute change. Player events and watermark logic is a half-day. Be honest about what you’ll actually maintain.
  • Studio-licensed content. If you’re reselling licensed material that mandates Widevine DRM, you’re in VdoCipher territory, not generic embed land.

How AVCaption fits in

AVCaption is purpose-built for the iframe-embed-into-LMS workflow. Free tier (ad-supported) is enough to test the integration end-to-end. Premium ($100/month per 5 TB) removes ads, unlocks domain whitelisting, signed URLs, and the branded player. Enterprise unlocks watermarks and AI subtitles.

For a practical use-case overview, see LMS video hosting and online courses.

Bottom line

The hardest part of moving video off your LMS is the decision. The mechanics are 10 minutes per platform. Pick a host with flat pricing, encrypt the segments, lock the domain, brand the player, and never worry about an LMS bandwidth bill again.

Run the test on a single Teachable / Thinkific / Kajabi lesson before touching the rest. Open an AVCaption account, upload one lesson, paste the iframe into one lesson page, verify the playback and the domain-whitelist 403 in incognito. Once it works on one lesson, the rest is copy-paste.

Frequently asked questions

Why embed external video instead of using the LMS's built-in player? +
Cost, control, and analytics. LMS-included video either has a strict storage cap or rolls bandwidth into your subscription tier — both end up expensive at scale. External embeds let you pick a video host with flat pricing, encryption, and a player you can brand.
Will iframe embeds break Teachable / Thinkific / Kajabi's mobile apps? +
On Teachable's iOS app and Thinkific's mobile web, modern iframes work fine. Kajabi's mobile UX renders custom embeds inside their lesson page wrapper. Test on each platform before launch — quirks change with platform updates.
Can I keep the LMS's progress tracking with an embedded player? +
Partially. Most LMSs only mark a lesson 'complete' when the user clicks a button. For real progress tracking (% watched, drop-off points), you need a player that exposes a JS event API. AVCaption's embed player emits postMessage events you can hook into.
What about SCORM compliance? +
If you need SCORM, you're outside the standard Teachable/Thinkific/Kajabi flow and into LearnDash, Moodle, or LMS365 territory. External video embeds work there too via the same iframe pattern.
Is the embed code different per platform? +
No. The same iframe code (`<iframe src="..." allow="..."></iframe>`) works in Teachable's HTML block, Thinkific's custom HTML lesson, and Kajabi's HTML element. Only the host's UI for inserting it differs.
← content.back_to_index