Learn how MediaCage basic DRM protects your video content from unauthorized downloads.
MediaCage is the free, built-in DRM layer for Bunny Stream. This guide explains how it works, what it does and doesn’t protect against, and when you should consider stepping up to MediaCage Enterprise instead.
MediaCage is a basic free DRM system designed to prevent most attempts at downloading your video content. MediaCage is tightly integrated into Bunny CDN to dynamically encrypt the video content.It was designed to operate as a device-agnostic system and does not require any special hardware or software support on the client.
Unlike enterprise-style DRM systems, MediaCage uses clear-key based keys to encrypt the video files. While the system was designed to make it extremely difficult to download and decrypt the video content, the keys are transferred to the client in a clear format, making them potentially vulnerable to a sophisticated attack.
To prevent unauthorized access, MediaCage uses dynamic key generation. This means each video session generates a unique set of keys that can only be used once with that specific session. This prevents users from sharing or attempting to decrypt the video streams.
While MediaCage was designed to prevent a vast majority of download attempts and successfully tested with well-known download plugins it is not a replacement for an enterprise-grade DRM system such as PlayReady or Widevine. If you host premium, industry or pay-per view video applications or platforms please get in touch with our support team to discuss enterprise DRM.
To offer a secure environment, MediaCage requires playback to be made through our Embed View only. Trying to access the videos directly or within a third-party video player will be disabled.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"bunny.net Documentation","colors":{"primary":"#EF6126","light":"#EF6126","dark":"#EF6126"},"logo":{"light":"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-dark.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=62c091ea1aaea93d0a981902b7783e37","dark":"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-light.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=3610e32d68a9fa458b0116ac58ca812a"},"favicon":"https://mintcdn.com/bunnynet-cb9733c2/1bTPx1eyQm8EK8W3/favicon.png?fit=max\u0026auto=format\u0026n=1bTPx1eyQm8EK8W3\u0026q=85\u0026s=85267b63e804fac7a4dd94599bb8c6e8","navbar":{"links":[{"href":"https://bunny.net/docs/api-reference","label":"API Reference"},{"href":"https://github.com/BunnyWay","label":"GitHub"}],"primary":{"type":"button","label":"Get Started","href":"https://dash.bunny.net/auth/register"}},"footer":{"socials":{"discord":"https://discord.gg/bunnynet","github":"https://github.com/BunnyWay","x":"https://x.com/BunnyCDN","bluesky":"https://bsky.app/profile/bunny.net","linkedin":"https://www.linkedin.com/company/bunnynet","facebook":"https://www.facebook.com/bunnycdn"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","claude","chatgpt","cursor","view","vscode"],"display":"header"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bunnynet-cb9733c2","hasAudioNarration":false,"actualSubdomain":"bunnynet-cb9733c2","customDomains":["bunny.net"],"gitSource":{"type":"github","owner":"bunnyway","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae49f2d21d44d6b52dcfe35","collectionId":"5e262b87-ade9-45d8-9b63-06888c8d59a3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae49f2d21d44d6b52dcfe35"},"feedback":{"thumbs":true,"contextualFeedback":{"allowEmail":true},"agentFeedback":true,"edits":true,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae586f29229f31e96cc51a9","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Documentation","count":752},{"language":"default","tag":"API Reference","count":318},{"language":"default","tag":"Core Platform API","count":109},{"language":"default","tag":"CDN","count":82},{"language":"default","tag":"Shield API","count":66},{"language":"default","tag":"Stream","count":66},{"language":"default","tag":"Magic Containers API","count":56},{"language":"default","tag":"Storage","count":54},{"language":"default","tag":"Guides","count":54},{"language":"default","tag":"Reference","count":52}],"searchSettings":{"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"type":"link","email":"support@bunny.net","url":"https://bunny.net/contact","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dark img[src*=\"/logo/frameworks/angular.svg\"],.dark img[src*=\"/logo/frameworks/eleventy.svg\"],.dark img[src*=\"/logo/frameworks/express.svg\"],.dark img[src*=\"/logo/frameworks/mariadb.svg\"],.dark img[src*=\"/logo/frameworks/nextjs.svg\"],.dark img[src*=\"/logo/frameworks/sphinx.svg\"]{filter:invert(1)}html:not(.dark) img[src*=\"/logo/frameworks/zola.svg\"]{filter:invert(1)}"}],"page":{"pagePath":"stream/mediacage-basic-guide","slug":"/stream/mediacage-basic-guide","pageMetadata":{"title":"Understanding MediaCage basic DRM","description":"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.","href":"/stream/mediacage-basic-guide"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Heading,Info}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`MediaCage is the free, built-in DRM layer for Bunny Stream. This guide explains how it works, what it does and doesn’t protect against, and when you should consider stepping up to MediaCage Enterprise instead.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-mediacage`,children:`What is MediaCage?`}),`\n`,_jsx(_components.p,{children:`MediaCage is a basic free DRM system designed to prevent most attempts at downloading your video content. MediaCage is tightly integrated into Bunny CDN to dynamically encrypt the video content.`}),`\n`,_jsx(_components.p,{children:`It was designed to operate as a device-agnostic system and does not require any special hardware or software support on the client.`}),`\n`,_jsx(Heading,{level:`2`,id:`clear-key-encryption`,children:`Clear-Key Encryption`}),`\n`,_jsx(_components.p,{children:`Unlike enterprise-style DRM systems, MediaCage uses clear-key based keys to encrypt the video files. While the system was designed to make it extremely difficult to download and decrypt the video content, the keys are transferred to the client in a clear format, making them potentially vulnerable to a sophisticated attack.`}),`\n`,_jsx(Heading,{level:`2`,id:`dynamic-key-generation`,children:`Dynamic Key Generation`}),`\n`,_jsx(_components.p,{children:`To prevent unauthorized access, MediaCage uses dynamic key generation. This means each video session generates a unique set of keys that can only be used once with that specific session. This prevents users from sharing or attempting to decrypt the video streams.`}),`\n`,_jsxs(Info,{children:[_jsx(Heading,{level:`3`,id:`security-considerations`,children:`Security Considerations`}),_jsx(_components.p,{children:`While MediaCage was designed to prevent a vast majority of download attempts and successfully tested with well-known download plugins it is not a replacement for an enterprise-grade DRM system such as PlayReady or Widevine. If you host premium, industry or pay-per view video applications or platforms please get in touch with our support team to discuss enterprise DRM.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`limitations`,children:`Limitations`}),`\n`,_jsx(_components.p,{children:`MediaCage is a powerful system. However, to provide the best security possible, it comes with a couple of feature limitations listed below.`}),`\n`,_jsx(Heading,{level:`2`,id:`embed-view-only`,children:`Embed View Only`}),`\n`,_jsx(_components.p,{children:`To offer a secure environment, MediaCage requires playback to be made through our Embed View only. Trying to access the videos directly or within a third-party video player will be disabled.`}),`\n`,_jsx(Heading,{level:`2`,id:`no-mp4-fallback-\u0026-early-play-support`,children:`No MP4 Fallback \u0026 Early-Play Support`}),`\n`,_jsx(_components.p,{children:`Due to lack of security and data protection, MP4 fallback and Early-Play are disabled if MediaCage is active on the video library.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Understanding MediaCage basic DRM","description":"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.","href":"/stream/mediacage-basic-guide"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is MediaCage?","slug":"what-is-mediacage","depth":2,"children":[]},{"title":"Clear-Key Encryption","slug":"clear-key-encryption","depth":2,"children":[]},{"title":"Dynamic Key Generation","slug":"dynamic-key-generation","depth":2,"children":[{"title":"Security Considerations","slug":"security-considerations","depth":3,"children":[]}]},{"title":"Limitations","slug":"limitations","depth":2,"children":[]},{"title":"Embed View Only","slug":"embed-view-only","depth":2,"children":[]},{"title":"No MP4 Fallback \u0026 Early-Play Support","slug":"no-mp4-fallback-\u0026-early-play-support","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"bunnynet-cb9733c2","siteName":"bunny.net Documentation","title":"Understanding MediaCage basic DRM - bunny.net Documentation","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-23T15:39:32.838Z","gitLastModified":"2026-06-23T15:39:01.000Z","originalFileLocation":"stream/mediacage-basic-guide.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\">\u003cmeta data-mint-head name=\"application-name\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Understanding MediaCage basic DRM - bunny.net Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://bunny.net/docs/stream/mediacage-basic-guide\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bunnynet-cb9733c2.mintlify.app/_mintlify/api/og/v2?division=Basic+DRM\u0026amp;title=Understanding+MediaCage+basic+DRM\u0026amp;description=Learn+how+MediaCage+basic+DRM+protects+your+video+content+from+unauthorized+downloads.\u0026amp;theme=3e3fa11ba94222b95e7f52d5\u0026amp;signature=ea2b81774e65c555fb9f16446005f48f51b52fd36fd7b794dc0f9615c5304183\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Understanding MediaCage basic DRM - bunny.net Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bunnynet-cb9733c2.mintlify.app/_mintlify/api/og/v2?division=Basic+DRM\u0026amp;title=Understanding+MediaCage+basic+DRM\u0026amp;description=Learn+how+MediaCage+basic+DRM+protects+your+video+content+from+unauthorized+downloads.\u0026amp;theme=3e3fa11ba94222b95e7f52d5\u0026amp;signature=ea2b81774e65c555fb9f16446005f48f51b52fd36fd7b794dc0f9615c5304183\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EF6126\">\u003clink data-mint-head rel=\"canonical\" href=\"https://bunny.net/docs/stream/mediacage-basic-guide\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/stream/mediacage-basic-guide.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://bunny.net/#organization\",\"name\":\"bunny.net Documentation\",\"url\":\"https://bunny.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-dark.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=62c091ea1aaea93d0a981902b7783e37\"}},{\"@type\":\"WebSite\",\"@id\":\"https://bunny.net/docs#website\",\"name\":\"bunny.net Documentation\",\"url\":\"https://bunny.net/docs\",\"publisher\":{\"@id\":\"https://bunny.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://bunny.net/docs/stream/mediacage-basic-guide#webpage\",\"url\":\"https://bunny.net/docs/stream/mediacage-basic-guide\",\"name\":\"Understanding MediaCage basic DRM\",\"description\":\"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\",\"dateModified\":\"2026-06-23T15:39:01.000Z\",\"isPartOf\":{\"@id\":\"https://bunny.net/docs#website\"},\"breadcrumb\":{\"@id\":\"https://bunny.net/docs/stream/mediacage-basic-guide#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://bunny.net/docs/stream/mediacage-basic-guide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://bunny.net/docs/stream/encoding\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MediaCage DRM\",\"item\":\"https://bunny.net/docs/stream/drm/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Basic DRM\",\"item\":\"https://bunny.net/docs/stream/mediacage-basic\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Understanding MediaCage basic DRM\",\"item\":\"https://bunny.net/docs/stream/mediacage-basic-guide\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://bunny.net/docs/stream/mediacage-basic-guide#article\",\"headline\":\"Understanding MediaCage basic DRM\",\"name\":\"Understanding MediaCage basic DRM\",\"description\":\"Learn how MediaCage basic DRM protects your video content from unauthorized downloads.\",\"url\":\"https://bunny.net/docs/stream/mediacage-basic-guide\",\"mainEntityOfPage\":{\"@id\":\"https://bunny.net/docs/stream/mediacage-basic-guide#webpage\"},\"dateModified\":\"2026-06-23T15:39:01.000Z\",\"publisher\":{\"@id\":\"https://bunny.net/#organization\"},\"isPartOf\":{\"@id\":\"https://bunny.net/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"bunny.net Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"bunny.net Documentation","nav":{"global":null,"products":[{"product":"Home","icon":"book-open","pages":[{"title":"Home","href":""}]},{"product":"CDN","icon":"zap","description":"Accelerate and protect your content globally","pages":[{"title":"CDN","href":"/cdn"}]},{"product":"Magic Containers","icon":"box","description":"Deploy any app anywhere with Docker","pages":[{"title":"Magic Containers","href":"/magic-containers"}]},{"product":"Edge Scripting","icon":"code","description":"Deploy serverless code at the edge","pages":[{"title":"Edge Scripting","href":"/scripting"}]},{"product":"Stream","icon":"video","description":"Video streaming and delivery platform","tabs":[{"tab":"Documentation","groups":[{"group":"Documentation","pages":[{"title":"Bunny Stream","sidebarTitle":"Introduction","mode":"wide","href":"/stream"},{"title":"Quickstart","href":"/stream/quickstart"},{"title":"Authentication","href":"/stream/authentication"},{"title":"Pricing","href":"/stream/pricing"},{"title":"Bunny Stream Changelog","sidebarTitle":"Changelog","url":"/changelog?tags=Stream","href":"/stream/changelog"}]},{"group":"Features","pages":[{"group":"Encoding","pages":[{"title":"Free Encoding","sidebarTitle":"Free Encoding","href":"/stream/encoding"},{"title":"Adaptive bitrate streaming","href":"/stream/adaptive-bitrate"},{"title":"Multi-audio","href":"/stream/multi-audio"}]},{"title":"Premium Encoding","href":"/stream/premium-encoding"},{"title":"Transcribing","href":"/stream/transcribing"},{"title":"Smart Generate","href":"/stream/smart-generate"},{"group":"MediaCage DRM","pages":[{"title":"MediaCage DRM","sidebarTitle":"Overview","href":"/stream/drm/index"},{"title":"Quickstart MediaCage Basic DRM","href":"/stream/quickstart-mediacage-basic"},{"title":"Quickstart MediaCage Enterprise DRM","href":"/stream/quickstart-mediacage-enterprise"},{"group":"Basic DRM","pages":[{"title":"MediaCage Basic DRM","description":"MediaCage DRM Basic is a user-friendly feature that empowers every user to safeguard their video content effortlessly. It is designed with simplicity in mind, allowing users to enable DRM protection with just a few clicks through the dashboard. This feature ensures that your videos are protected from unauthorized access, providing you with the peace of mind that your valuable content remains secure.","href":"/stream/mediacage-basic"},{"title":"Understanding MediaCage basic DRM","href":"/stream/mediacage-basic-guide"}]},{"group":"Enterprise DRM","pages":[{"title":"MediaCage Enterprise DRM","description":"MediaCage Enterprise DRM provides advanced digital content protection for enterprise-level requirements. It integrates cutting-edge technologies such as FairPlay and Widevine to deliver an elevated level of security and enhanced encryption features. Please note that MediaCage Enterprise DRM is a premium feature and requires coordination with our sales team for activation.","href":"/stream/mediacage-enterprise"},{"title":"Google Widevine DRM","href":"/stream/widevine-security-levels"},{"title":"Google Widevine DRM SD only for L3","href":"/stream/widevine-l3"},{"title":"Apple FairPlay Streaming","href":"/stream/fairplay-deployment"}]}]},{"title":"Advertising VAST","href":"/stream/vast"},{"title":"Delivery Tiers","href":"/stream/delivery-tiers"},{"title":"Replication","href":"/stream/replication"},{"group":"Security","pages":[{"title":"Security","sidebarTitle":"Overview","href":"/stream/security"},{"title":"Understanding Bunny Stream security options","sidebarTitle":"Security Options","href":"/stream/security-options"},{"title":"Embedded view token authentication","sidebarTitle":"Token Authentication","href":"/stream/token-authentication"}]},{"title":"Statistics","href":"/stream/statistics"},{"title":"Webhooks","href":"/stream/webhooks"}]},{"group":"Manage Videos","pages":[{"group":"Upload","pages":[{"title":"Dashboard","href":"/stream/dashboard"},{"title":"HTTP","href":"/stream/http-api"},{"title":"URL Fetch","href":"/stream/url-fetch"},{"title":"TUS Resumable Uploads","href":"/stream/tus-resumable-uploads"},{"group":"Frameworks","pages":[{"title":"Upload videos to Bunny Stream from Laravel","sidebarTitle":"Laravel","href":"/stream/upload/laravel"},{"title":"Upload videos to Bunny Stream from Rails","sidebarTitle":"Rails","href":"/stream/upload/rails"},{"title":"Upload videos to Bunny Stream from Django","sidebarTitle":"Django","href":"/stream/upload/django"}]}]},{"title":"Collections","href":"/stream/collections"},{"title":"Tagging","href":"/stream/tagging"},{"title":"MetaTags","href":"/stream/metatags"},{"title":"Storage Structure","href":"/stream/storage-structure"}]},{"group":"Playback","pages":[{"title":"Bunny Player","sidebarTitle":"Bunny Player","href":"/stream/player"},{"title":"Overview","sidebarTitle":"Player settings","href":"/stream/player-settings"},{"title":"Embedding videos","href":"/stream/embedding"},{"title":"Playback control API","href":"/stream/playback-api"},{"title":"MP4 Fallback","href":"/stream/mp4-downloads"},{"group":"Frameworks","pages":[{"title":"Use Bunny Player with React","sidebarTitle":"React","href":"/stream/player/react"},{"title":"Use Bunny Player with Next.js","sidebarTitle":"Next.js","href":"/stream/player/nextjs"},{"title":"Use Bunny Player with Vue and Nuxt","sidebarTitle":"Vue and Nuxt","href":"/stream/player/vue"},{"title":"Use Bunny Player with Svelte and SvelteKit","sidebarTitle":"Svelte and SvelteKit","href":"/stream/player/svelte"},{"title":"Use Bunny Player with Astro","sidebarTitle":"Astro","href":"/stream/player/astro"},{"title":"Use Bunny Player with JavaScript","sidebarTitle":"JavaScript","href":"/stream/player/javascript"},{"title":"Sign Bunny Player embed URLs on the server","sidebarTitle":"Signed embed URLs","href":"/stream/player/signed-embeds"}]},{"group":"Mobile SDKs","tag":"New","expanded":true,"pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/stream/mobile-sdk"},{"title":"Token authentication with Mobile SDKs","sidebarTitle":"Mobile SDK Token Authentication","href":"/stream/mobile-sdk-token-authentication"},{"title":"Expo Video guide","href":"/stream/expo-video"},{"title":"Android SDK","tag":"Kotlin","href":"/stream/android-sdk"},{"title":"iOS SDK","tag":"Swift","href":"/stream/ios-sdk"},{"title":"React Native SDK","tag":"Typescript","sidebarTitle":"React Native SDK","href":"/stream/react-native-sdk"}]},{"group":"3rd Party Players","pages":[{"title":"Introduction","href":"/stream/players/index"},{"title":"Bitmovin player integration","href":"/stream/players/bitmovin"},{"title":"Shaka Player integration","href":"/stream/players/shaka"},{"title":"Widevine HTML5 integration","href":"/stream/players/widevine"},{"title":"Fairplay HTML5 player integration","href":"/stream/players/fairplay"}]},{"title":"Custom head HTML migration guide","href":"/stream/custom-head-html-migration-guide"}]},{"group":"Reference","pages":[{"title":"Video Specification","href":"/stream/video-specification"},{"title":"Vimeo2Bunny CLI","href":"/stream/vimeo2bunny"},{"title":"Data and Privacy","href":"/stream/data-and-privacy"},{"title":"API Reference","url":"/api-reference/stream","href":"/stream/api-reference"}]}]}]},{"product":"Storage","icon":"hard-drive","description":"Global object storage","pages":[{"title":"Storage","href":"/storage"}]},{"product":"Shield","icon":"shield","description":"Stay protected and online no matter what","pages":[{"title":"Shield","href":"/shield"}]},{"product":"Optimizer","icon":"sparkles","description":"Automatic image and web optimization.","pages":[{"title":"Optimizer","href":"/optimizer"}]},{"product":"DNS","icon":"globe","description":"Unlock the true power of DNS with an ultra-fast scriptable platform","pages":[{"title":"DNS","href":"/dns"}]},{"product":"Database","icon":"database","description":"Serverless SQLite over HTTP","pages":[{"title":"Database","href":"/database"}]},{"product":"Integrations","icon":"puzzle","description":"Official and third-party plugins and integrations","pages":[{"title":"Integrations","href":"/integrations/wordpress"}]},{"product":"CLI","icon":"terminal","description":"Manage bunny.net from your terminal","pages":[{"title":"CLI","href":"/cli"}]},{"product":"API Reference","icon":"square-terminal","description":"Build \u0026 Integrate with the Platform API","pages":[{"title":"API Reference","href":"/api-reference"}]},{"product":"Partners","icon":"handshake","description":"Manage customers, pricing, and billing as a bunny.net partner","pages":[{"title":"Partners","href":"/partners"}]}]},"basePath":"","title":"Understanding MediaCage basic DRM - bunny.net Documentation","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":[],"chunks":[]}