Back to Blog guides

How to download embedded videos using a built-in app browser

· 5 min read

You find a training video on your company’s internal wiki. Or a lecture behind a login wall on a course platform. Or a news segment embedded in an article using Brightcove or Wistia. You want to save it locally. And every tool you try fails.

That’s because embedded videos are a completely different problem than downloading from YouTube or Vimeo. The video isn’t hosted at a clean, public URL. It’s buried inside a custom player, served through tokenized streams, and often protected by session cookies that expire the moment you try to access the URL directly. Browser extensions can’t see it. Pasting a page URL into yt-dlp returns an error. Copy-pasting the embed source gives you nothing useful.

I hit this wall repeatedly before I figured out the approach that actually works.

Why embedded videos break every other method

Most video download tools work by matching URLs to known sites. yt-dlp has extractors for YouTube, Vimeo, Twitter, and about a thousand other platforms. If the video lives on one of those sites, yt-dlp knows exactly how to pull it.

Embedded videos don’t work that way. A company training portal might use Brightcove as its player but serve the video through a custom CDN behind authentication. A news site might use JW Player with DRM tokens baked into the stream URL. A university course platform might use its own proprietary player that no extractor has ever been written for.

Browser extensions have a different problem. They try to detect video elements in the page DOM, but modern embedded players load video through JavaScript, serve it as chunked HLS or DASH streams, and often don’t expose a downloadable source in the HTML at all. The extension sees the page. It doesn’t see the video.

So you’re stuck with a video playing perfectly in your browser and zero ways to save it. Frustrating.

The trick: watch network traffic, not the page source

Here’s what actually works. Instead of trying to parse the page or match the URL to a known site, you watch what the browser itself is doing. When a video plays, the browser makes network requests to fetch the actual media data. Those requests contain the real URLs — the CDN endpoints, the stream manifests, the .ts or .mp4 segments that make up the video.

If you can intercept those requests, you can capture the video. It doesn’t matter what player the site uses. It doesn’t matter if yt-dlp has an extractor for it. If the video plays in a browser, the browser is fetching it from somewhere, and that somewhere is a URL you can download from.

This is exactly how StreamStow’s built-in browser works.

How the built-in browser handles it

StreamStow includes a tabbed browser inside the app. It’s a real browser — WebKit-based, supports JavaScript, handles cookies, renders pages the same way Safari does. But underneath, StreamStow’s video detection engine monitors every network request the browser makes.

When you browse to a page with an embedded video and the video starts playing, StreamStow watches the network traffic for video stream signatures. HLS manifests (.m3u8), DASH manifests (.mpd), direct MP4 links, progressive downloads — it catches all of them. When it finds a match, a notification pops up in the browser tab: video detected.

You click the download button. That’s the whole process.

No URL copying. No pasting into a separate tool. No guessing which extractor to use. The browser did the hard work of authenticating, loading the page, and starting the stream. StreamStow just grabbed the media URL that the browser was already fetching.

Walking through a real example

Say you have access to a paid course platform — something like Teachable, Thinkific, or a custom LMS your company uses. The course has 40 video lectures and you want to save them for offline viewing on a flight next week.

Open StreamStow’s browser. Go to the course platform’s login page. Log in with your credentials. Your session cookies are stored in the browser, just like they would be in Safari or Chrome.

Browse to the first lecture. Hit play. Within a few seconds, StreamStow detects the video stream and shows the download notification. Click download, pick your save location (or send it to the vault if you want it encrypted), and the file starts saving.

Move to the next lecture. Same thing. The browser remembers your login state, so you don’t re-authenticate for every video. Tab through the lectures, downloading as you go.

The key part: your cookies and login session persist across tabs and between app launches. Paywalled content, login-gated corporate training, subscription course platforms — if you can play the video in the browser, you can download it. The built-in browser handles the authentication, and the detection engine handles the capture.

Where this beats pasting URLs into yt-dlp

I use yt-dlp through StreamStow’s GUI for public sites all the time. YouTube, Reddit, Twitter — yt-dlp handles those perfectly and it’s fast.

But yt-dlp needs an extractor for each site. When you paste a URL from some random corporate intranet or a niche course platform, yt-dlp doesn’t know what to do with it. It doesn’t have login cookies for that site. It can’t render JavaScript to trigger the video player. It just sees a URL and tries to match it against its database of supported sites.

The built-in browser sidesteps all of that. It doesn’t need to know anything about the site in advance. It renders the page, watches what happens, and captures the stream. Same approach works on any site that plays video through standard web protocols.

Sites where this matters most

Embedded video is everywhere, but some categories are especially tricky:

News sites — CNN, BBC, Reuters, and hundreds of smaller outlets use custom players (often Brightcove or JW Player) with tokenized stream URLs. You can’t right-click and “Save Video As” because there’s no video element in the traditional sense.

Corporate intranets — Training videos, all-hands recordings, onboarding content. These sit behind SSO authentication on platforms that no public tool supports. The built-in browser handles SSO flows just like any browser would.

Course platforms — Teachable, Kajabi, Podia, and custom LMS installations. You paid for the course. You should be able to watch it on a plane without WiFi.

Webinar recordings — Zoom, GoToWebinar, and similar platforms often embed recordings on authenticated pages. yt-dlp sometimes handles direct Zoom links, but the embedded versions on custom domains usually fail.

Government and institutional sites — Training portals, public hearing recordings, archived proceedings. These frequently use outdated or obscure players that no download tool has bothered to support.

Three free trial downloads

If you want to test this on a specific site before buying, StreamStow gives you three free downloads with no account required. Pick the most difficult embedded video you know about — the one behind a login, the one using a weird player, the one that every other tool choked on. Try it in the built-in browser.

StreamStow is $29, one time. No subscription.

Content disclaimer

StreamStow is designed for downloading personal content, public domain videos, and creative commons media. Please respect copyright laws and platform terms of service.

Open StreamStow, point the browser at the page with the embedded video, and let the detection engine do its thing. If the video plays, it downloads.

Try StreamStow free

Native macOS video downloader with encrypted storage. 3 free downloads included.

Download for Mac