Why Your Video Link Won't Play: A Practical Diagnosis Checklist
Diagnose a video link that fails to play by separating URL access, HTML responses, codec compatibility, MIME types, range requests and embed errors.

“The upload succeeded, but the video won't play” describes several different failures. The link might return a page instead of a file. The file might use an unsupported codec. Or a working video might be blocked only inside one website's player.
Avoid changing everything at once. Keep the original file and the failing URL, record the browser and device, and work through the checks below. Each step narrows the problem before you create another upload.
Choose the first check from the symptom
| What you observe | Check first | Useful evidence |
|---|---|---|
| A login screen or branded viewing page appears | The link's destination | Final URL and whether the response is HTML |
| The file downloads but will not play | File integrity and encoding | Local playback result, container and stream codecs |
| Audio plays with a black picture | Video stream compatibility | Video codec and a second browser result |
| Playback works but seeking fails | Byte-range delivery | The actual range response and Content-Range |
| Direct playback works; your embed fails | Page and player configuration | Browser console and the embedded request |
| Your device works; a recipient's fails | Access and device differences | Signed-out test and the recipient's exact environment |
Use a non-sensitive sample when sharing diagnostics. A screenshot of a public issue can help; an unredacted private file URL may expose the recording itself.
1. Verify the final resource
Open the exact URL in a signed-out window. If it asks for a login, the recipient may not have the same access as your existing session. If it returns an application viewing page, obtain the appropriate file source or the provider's supported embed method.
In Developer Tools, open Network, reload and inspect the request. Record redirects, the final HTTP status and Content-Type. A successful status alone is not enough: a 200 HTML response cannot stand in for a video file. Our direct video URL comparison explains which address belongs in each workflow.
For an upload made through Video to URL, copy the result shown after the upload succeeds. The tool accepts supported video files up to 100 MiB; quota and capacity restrictions also apply. Do not copy the upload page's own address as though it identifies your file.
2. Separate the container from the codecs
MP4 and MOV describe containers. Inside them, video and audio streams use codecs. Two files ending in .mp4 can therefore have different browser compatibility. Renaming recording.mov to recording.mp4 does not convert its streams.
Check the export information in the application that created your recording. Write down the container, video codec and audio codec; then compare a short test export on the target browser. If conversion is necessary, MOV to MP4 is a separate local tool. Inspect its output before publishing it. The public upload workflow stores the submitted file and does not repair an unsupported encoding.
If the original file itself fails locally, go back to the recording or export. Re-uploading damaged bytes produces another copy of the same problem.
3. Inspect delivery without downloading everything
If you are comfortable with a terminal, substitute your own public test URL:
curl -IL "https://example.com/sample.mp4"
curl -sSL -D - -o range-sample.bin -H "Range: bytes=0-1023" "https://example.com/sample.mp4"
Both commands follow redirects. The first requests headers. The second asks for a byte range and saves the response locally; servers can ignore that request and send the complete file. Inspect the final status and headers before drawing a conclusion. These commands are diagnostics for a URL you control, not mp4tolink API endpoints.
For a satisfiable range request, a partial response uses status 206 and a Content-Range describing the returned portion. A server may instead send the complete resource with 200. An invalid range can produce 416. Capture the actual exchange rather than inferring behavior from one header.
Check that the response identifies the expected media type. Content-Disposition: attachment can explain why navigation starts a download. Changing response headers is a hosting configuration task; changing the URL's extension in a message does not fix them.
4. Compare direct playback with the embed
Open the file directly, then test the page containing it. When only the page fails, inspect that page's console and network errors. Check for a mistyped source URL, an HTTP resource on an HTTPS page, or a site policy blocking the media host.
Separate manual playback from autoplay. Click the player's controls during diagnosis; a browser's autoplay restrictions are a different question from whether it can play the file. Record whether the failure concerns initial loading, sound, seeking or automatic start.
Do not treat every console message as a CORS problem. Describe the blocked operation first. An HTML player, a JavaScript fetch and canvas processing are different uses of a resource and may encounter different restrictions.
5. Close the loop with a small evidence log
Keep five fields: exact browser/device, original-file result, final response type, direct-play result and embedded-play result. Repeat only the check affected by your change. For example, after fixing a source URL, test the embed again before exporting another file.
Once playback works, test a second representative device and confirm the intended revision. Keep a local backup. Public file links should contain material you are comfortable sharing publicly; successful playback does not establish privacy or permanent retention.
Official technical references
- MDN: Media container formats explains containers and their media streams.
- MDN: HTTP range requests documents byte requests and partial responses.
- MDN: HTML video element documents player behavior and attributes.
- MDN: Content-Disposition documents inline and attachment handling.
MP4 to Link & Video to Link FAQs
Why does a video play on my computer but fail in a browser?
A desktop player may support codecs that your browser and operating system do not. Check the video and audio codecs inside the container, then test an appropriate export in the target browser. Uploading or renaming a file does not transcode it.
Does a 200 response prove that the video link is correct?
No. A login page, viewing page or error document can also return 200. Inspect the final response URL, Content-Type and body, and verify that the response actually contains the intended media.
Is a missing Accept-Ranges header enough to diagnose playback failure?
No. An explicit byte-range request gives more useful evidence: inspect whether the server returns a valid 206 response and Content-Range, the full file, or an error. Range support is especially relevant to seeking, but it is only one part of playback diagnosis.
mp4tolink Team
View profile