Episode Editor — Media
The Media section of the episode editor collects the audio and video URLs for an episode, plus per-tier audio variant overrides for shows with paid subscription tiers.
Audio File URL
The primary audio file for the episode. Paste the full URL to the hosted audio file — Benecaster links to this file rather than hosting it.
This is the base audio URL: the fallback that plays for any tier not covered by a specific variant (see Tier Audio Variants below). An episode with no audio URL is still in the feed: it carries the episode’s video file instead (see Video URL below).
Supported: MP3, AAC, M4A, OGG, OPUS, and any other audio MIME type your podcast host serves. The URL must be publicly accessible so podcast apps can fetch it.
Platform-hosted media. If the address is on a membership platform such as Patreon (including Patreon video on stream.mux.com), Supercast, Supporting Cast, Memberful, Glow, Substack or Anchor, a Platform-hosted media note appears under the field as you type: “This episode’s media file is hosted by the platform you’re leaving, which decides how long it keeps working. Move it to your podcast host and update its URL under Media.” The same note appears under the Video URL when that address is on one of these platforms. It is a warning only, and the episode still saves. Only the address’s domain is checked, so a file whose name merely mentions a platform is not flagged. See Moving Audio Files Off Patreon.
Video URL
The video file URL for the episode, if applicable. Used when the episode type is set to Video in Show Settings. Like the audio URL, this is a link to a hosted file — Benecaster does not store the file.
When both an audio URL and a video URL are set, the feed uses the video URL if the show’s episode type is Video; otherwise the audio URL is used.
On your website, the video plays when the episode has no audio URL: on the episode page, on its archive card, in an [benecaster_episodes] list, and in the [benecaster_player] and [benecaster_latest_episode] shortcodes. When the episode has both, the website plays whichever Primary media names. [benecaster_player media="audio"] or media="video" asks for one specifically. The video never starts by itself. Only a visitor who can hear the episode gets the episode’s own video; see Episodes Overview, and Video Preview below for what a locked visitor can be shown.
On Your Website, Play
When Primary media is Video, On your website, play chooses what a subscriber gets on the website: Use show setting (the default, from Show Settings → Details → Show Flags), Video, or The tier’s audio. The tier’s audio plays only for a subscriber whose tier has its own file under Tier Audio Variants; anyone else gets the video. It never changes your podcast feeds.
Embed Code
Below the video URL, after — or —, the Embed code, or a YouTube or Vimeo link box takes the embed HTML a video host gives you, or a plain YouTube or Vimeo link, as an alternative to a direct video URL. An episode can also carry embedded audio, which arrives only by import or through the REST API; there is no box for it here.
On your website, the episode page and its archive card play the first of these the episode has: the audio URL, then embedded audio, then the video URL, then the video embed. An embed is shown only to a visitor who can hear the episode.
An embedded player must load over https://. An <iframe> whose address starts with http:// is left out, and scripts and event handlers are removed from the code. Every major host serves its player over https.
Detect
Detect reads the episode’s duration, file size and format from the media file and fills them in. It checks the file your feed carries: the Video URL when the episode has no Audio URL, or when Primary media is Video and there is a video URL; otherwise the Audio URL. The button sits beside that URL, with its success or error line and a box showing Duration, File size and Format under it. On a video-only episode, then, it is beside the Video URL.
The values are kept when you save the episode. Detect is the only way to fill in the duration from the file.
Saving fills in a blank file size. When you press Save Draft, Update or Publish and the episode’s File size is blank, Benecaster checks the same file Detect would and stores its size, and its format too when Format is blank and the file’s host reports an audio or video type. This works for audio and video episodes alike, so you do not need to press Detect just to get a file size into your feed. A size or format already there, typed or found by Detect, is never replaced. If the file can’t be reached, the episode saves normally with no error, and Benecaster waits an hour before checking that file again; a changed URL is checked straight away. The duration is not filled in this way.
The button is unavailable until the episode has been saved once (Save the episode first to detect metadata.) and while there is no URL to check (Enter an audio or video URL first.).
Preview Clip URL
Below Download tracking, in the Audio section, you can set a Preview clip URL — a short clip that plays on the website to visitors who can’t hear the full episode instead of the usual “locked” message.
Paste the URL to a hosted clip file, the same way you would for the main audio URL. The field’s placeholder shows an example: https://your-host.com/preview.mp3. Leave it empty for no preview — a locked visitor then sees the ordinary locked message, as before.
The clip is saved with the episode. It is never added to any podcast feed — not the RSS enclosure, not <podcast:trailer> — so it never reaches a listener’s podcast app. It only ever plays in the website’s web player.
Where it plays: anyone who can’t hear the episode — because it’s locked behind a tier they don’t have — gets a player with the clip in place of the locked message, in three places: the episode page, the episode’s card in the archive list, and the [benecaster_player] shortcode. Anyone who can hear the episode always gets the full file, never the clip. On the episode page, the subscribe section below the player still shows even when the clip is playing; on the archive card and in the shortcode, the clip player replaces the locked message entirely.
Requires the main Audio File URL above. An episode that only has an embed code or a video — with no audio URL — keeps its ordinary locked message even when a preview clip is set, because the web player has nowhere to put the clip without a base audio URL to swap. For those episodes, use a Video Preview.
An episode locked because of a required buy-up is locked the same way as any other locked episode, so its preview clip (if set) plays there too, for any visitor without the buy-up.
Developer: for a different clip per visitor, or a clip you don’t want to store as a URL here, see the show-preview-player-to-non-subscribers recipe.
Video Preview
Video preview chooses what a visitor who can’t watch the episode sees on your website instead. It is never added to a podcast feed or a download, and it never starts by itself.
- None (the default): they see the locked message.
- Separate clip file: a short video of its own, a file or a YouTube or Vimeo link. This is the safe choice, because visitors never get the full episode.
- Part of the episode’s video: a start and end time, typed like
0:30, on the episode’s own video file or a YouTube or Vimeo video. Any other embed (Wistia and so on) can’t use a time span, so use a separate clip.
A Time Span Is a Teaser, Not Protection
Choosing Part of the episode’s video gives a locked visitor a way to the whole episode. The player starts and stops at your times, but the page carries the full video’s address:
- A video file: anyone can open that address, save the file or share it.
- YouTube: a viewer can move past your times or open the video on YouTube and watch all of it. If the video is public on YouTube, that costs you little. If it is unlisted because it is only for paying subscribers, anyone who sees this preview can get it. Benecaster can’t tell which it is.
- Vimeo: a viewer can still get past your times, so anyone who sees this preview can get a video you keep private on Vimeo. On a Vimeo time span only, the page also loads Vimeo’s player script.
The editor shows the warning for your host and won’t save a time span until you tick I understand viewers can get the full video. Changing the video clears the tick, so you confirm again. If the video your time span depends on has been removed, visitors see the locked message.
If your video is the thing people pay for, use a separate clip.
Video preview and Preview clip URL together. An episode with both plays the video one when Primary media is Video, and the audio clip otherwise. A video preview works on a video-only or embed-only episode, which the audio clip can’t.
Developer: to turn a preview off or serve your own clip, see Turn the video preview off, or serve your own clip.
Tier Audio Variants
The Tier Audio Variants section appears below the base audio URL field. It is only visible on shows that have at least one paid subscription tier configured, whether the show uses Benecaster’s built-in membership or a membership plugin. It lists the show’s paid tiers, lowest first. Free tiers and the built-in Public tier are not listed: they hear the base audio.
If the episode is moved to another show, it keeps variants only for tiers the new show also has.
Tier audio variants let you provide a different audio file for each paid tier on your show. A common use case: hosting public and paid versions of an episode — the public tier gets a 5-minute preview; paid tiers get the full episode — without maintaining two separate episode records.
A variant replaces the video too. On an episode whose Primary media is Video, a tier with its own audio variant gets that audio file, both in its feed and in the file its podcast app downloads. A tier with no variant of its own, and none to take from a lower tier, gets the video.
How It Works
Each paid tier in your show’s tier hierarchy gets its own URL input field. The fields are displayed in tier order from lowest (least expensive) to highest.
The cascade-up algorithm fills in gaps: if a tier has no variant URL set, Benecaster uses the variant from the next lower tier that does have one. If no lower tier has a variant, Benecaster falls back to the base audio URL. This means you only need to set variants for the tiers that actually differ — you don’t have to fill in every field.
A placeholder in each field shows the URL that would be served to that tier if the field is left blank: either the cascade-resolved variant URL or the base audio URL. The placeholder updates live as you fill in (or clear) other fields, so you can see the cascade resolution at a glance.
A helper text line below each field shows which tier the cascade resolves to when the field is blank. For example: “Falls through to: Free tier (base audio)” or “Falls through to: Basic tier variant.”
On Your Website
Variants apply on your website as well as in podcast apps. A signed-in subscriber who can play the episode hears the same file their feed lists, in the episode page player, the players in episode lists, [benecaster_player], [benecaster_episodes] and the Download episode link. Benecaster takes the tiers their membership plugin (or built-in membership) reports they hold right now, in that plugin’s order, and plays the variant for the first of them that carries the episode, using the same cascade as the feed. A member holding two tiers hears the version their feed lists, and after a Tier Mapping change or a switch of membership plugin the website plays the new tier’s file straight away. Visitors who are not signed in hear the base audio URL, and a preview clip is unaffected. A visitor who arrives through an episode’s email link hears the file for the subscriber the link was sent to.
One difference from the feed: when a subscriber is beyond your plan’s subscriber limit, or your license is in its grace period, their feed moves them to the public version, but on the website they still hear their tier’s file.
Downloads from a podcast app always match the feed. With download tracking on, the file a podcast app downloads is the variant for the tier its feed takes the episode from, worked out from the tiers the listener holds now, so a member holding two tiers, or one whose tier changed under Tier Mapping, downloads the version their feed shows. A listener whose feed has fallen back to your public episodes downloads the public version, as their feed lists it. That covers a subscriber beyond your plan’s limit, a follower, a subscriber during your license’s grace period, and someone with no membership who still owns an episode outright.
A theme that overrides the episode player, episode-card player or download templates keeps playing the base audio URL until its override is updated. Developers can get the right URL for a viewer with benecaster_get_episode_audio_url().
Variant Fields
Each tier’s variant row has one field:
- URL — the audio file URL for this tier. Leave blank to use the cascade-resolved URL from a lower tier (or the base audio URL if none exist).
When a variant URL is set and a subscriber in that tier downloads the episode, Benecaster serves that variant URL through the download proxy. The download log records which tier’s variant was served in the variant_slug column — used for per-tier attribution in analytics.
Clearing Variants
Setting a tier’s URL field to blank removes the variant for that tier. On save, Benecaster removes the entry from the episode’s stored variant data and the cascade-up algorithm takes over on the next feed request.
To remove all variants and revert to base audio for all tiers, clear every tier URL field and save.
See Also
- Setting Tier Availability — controlling when each tier can access an episode
- Your RSS Feeds — how feeds are compiled and delivered
- Episodes Overview — the full episode data model
See Also
Need this built rather than just documented? See our services →