How to Find and Save Video URLs Using Inspect Element
Find a video URL in page markup, capture the request in DevTools, and save it with the context needed to understand why it may expire.
To find a video URL with Inspect Element, first check the page’s <video> and <source> markup. If it does not show a usable source, open DevTools’ Network panel, reload the page while recording, start playback, and inspect the media request. Copy the request URL and save it with a note about where and when you captured it; it may be a playlist or a temporary, session-bound URL rather than a permanent video file.
Use this workflow only for media you are allowed to access and save. Seeing a request in DevTools does not grant permission to download, copy, decrypt, or redistribute its contents.
1. Check the page’s video markup
In Chrome, right-click the page and choose Inspect. In Firefox, open Developer Tools and choose Inspector. Search the Elements or Inspector panel for <video, then check the element and any nested <source> elements.
<video controls>
<source src="https://example.com/video.mp4" type="video/mp4">
</video>
A src may point to a file such as MP4 or WebM, or to a streaming playlist. Some pages set the source with JavaScript, so the initial HTML may have no URL or may show only a partial player shell. In those cases, use Network.
2. Capture the video request in Network
- Open DevTools and select Network.
- If page navigation is part of the player setup, enable Preserve log.
- Clear the existing request list, then reload the page with DevTools open.
- Start playback. Some players do not request media until playback begins.
- Filter by Media, if available, or search the request list for likely media file or playlist names.
- Select a likely request and inspect its full Request URL. Copy it and save it in a plain-text note or project log.
The Network panel is generally more reliable than static markup for JavaScript-created players because it shows resources the browser actually requested. A request may be a playlist or one segment among many, not a single complete video. Chrome documents inspecting request URLs and exporting Network logs in its [DevTools Network documentation](https://developer.chrome.com/docs/devtools/network/).
3. Check the Media panel when available
Chrome’s Media panel can summarize audio and video sources associated with a player. Open DevTools’ command menu or panel options to find Media if it is not already visible, select the player, and inspect its source information. The panel can also save player information as JSON. It is useful when the Network list contains many requests, but use Network to inspect the actual request details and timing. See [Chrome’s Media panel guide](https://developer.chrome.com/docs/devtools/media-panel/).
4. Identify what kind of URL you found
| What you see | Likely meaning | What to save |
|---|---|---|
.mp4 or .webm |
Often a direct media file, though query parameters or access checks may still apply. | The complete request URL, including its query string. |
.m3u8 or another playlist request |
A streaming playlist that references media segments or alternate streams. | The playlist URL and a note that it is a stream, not necessarily one complete file. |
| Many small media requests | Often adaptive streaming: the player requests segments as playback progresses. | The playlist or manifest request, if identifiable, plus relevant context. |
| A URL with long query parameters | May include authorization or an expiration time. | Store it privately and note when and in what session it was captured. |
Do not strip query parameters just because the URL looks untidy: they may be required for access. Treat copied URLs as potentially sensitive, especially when they contain tokens or session identifiers.
5. Save a useful record
For a simple record, paste the URL into a plain-text note, bookmark, or project log and include the page where you found it and the capture time. If you need the surrounding request evidence, export a HAR from the Network panel. HAR files can contain sensitive data such as cookies, authorization headers, and visited URLs, so sanitize the file before sharing it. Chrome explains HAR export and sensitive data handling in its [Network panel documentation](https://developer.chrome.com/docs/devtools/network/).
Browser differences and embedded players
Chrome labels the markup panel Elements; Firefox calls the equivalent panel Inspector. The workflow is otherwise similar: use markup for a declared source, and Network for runtime requests. Panel labels and layout can differ between browser versions.
If the player is inside an iframe, inspect the frame that owns the player. In the Elements/Inspector panel, locate the iframe and open its document if the browser allows it; then observe Network activity while that frame’s player loads and plays. With cross-origin frames, the parent page’s markup may not expose the frame’s internal video source. The browser’s Network panel can still show requests initiated by the page and its frames.
Common problems and fixes
| Symptom | Cause | Fix |
|---|---|---|
| No media request appears | Recording began after the request, or the player waits for playback. | Clear the log, keep Network open, reload, and start playback. Enable Preserve log if navigation occurs. |
| Only small segments appear | The player is likely using adaptive streaming. | Look for a playlist or manifest request. Do not assume one segment is the whole video. |
| The copied URL returns an error | It may require the original session, cookies, a referrer, or a still-valid token. | Reproduce the request in the authorized original session. Do not publish URLs containing private tokens. |
| The source is missing from Elements | JavaScript may create the player or assign its source later. | Capture the runtime request in Network, or inspect the player in Media. |
| The player is in an embedded frame | The parent document does not own the player’s markup. | Inspect the frame’s document and watch its Network requests during playback. |
| Protected playback cannot be saved as a file | The player may use DRM or other access controls. | DevTools can reveal requests but does not authorize decrypting or redistributing protected content. Use an authorized export or contact the rights holder. |
Performance, reliability, and privacy
Network capture is passive inspection of requests the browser makes, but reloading and playing can cause the page to fetch substantial media data. Stop playback after capturing what you need. For reliability, capture from the start of a fresh load, preserve the log when navigation matters, and record the page and time alongside the URL. A URL that works now may expire or be tied to the current browser session, so do not treat it as a durable archive without confirming the publisher provides that use.
HAR is more complete than a copied URL because it preserves request context, but that completeness increases privacy risk. Review and sanitize HAR data before sending it to another person or uploading it to an issue tracker.
Or skip the browser setup
If your goal is to document a page around a video rather than extract its media, [ScreenshotNeo](https://screenshotneo.com) can return a screenshot or PDF from one GET request. It is a website capture API, not a video downloader; it does not replace the DevTools steps above for finding media URLs.
cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
const bytes = new Uint8Array(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));
See the [ScreenshotNeo API docs](https://screenshotneo.com/docs/) for request options. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed; an MCP server lets AI agents take screenshots; and 1,000 screenshots per month are free with no card, with paid plans starting at $5 for 3,000. [Start free with ScreenshotNeo](https://screenshotneo.com/account/sign-up/).
FAQ
Does a video URL always end in .mp4?
No. It may be a WebM file, a playlist, or an opaque request URL whose path has no obvious extension.
Why does the URL stop working later?
Some sites use short-lived authorization parameters or require the browser session that requested the URL. Re-capture it in an authorized session if needed.
Can I share a HAR file to show what happened?
Only after reviewing and sanitizing it. A HAR may contain cookies, authorization details, and browsing data.


