Back to the archive
Site Performance

When Product Videos Stall After a Seek

Diagnose ecommerce video seeking with HTTP range requests, 206 responses, Content-Range validation, and browser checks across the full media delivery path.

An ecommerce operator reviewing performance metrics on a laptop.

A product video starts correctly, but dragging the playhead to the assembly demonstration makes it stall. The page itself may load quickly and the video file may return a successful HTTP response. The failure can sit in the path that delivers only the requested portion of the media after a seek.

EcomToolkit recommends checking media delivery separately from page-load performance. This guide focuses on ordinary file-based video delivery and HTTP byte ranges. Adaptive streaming systems have additional playlist and segment behavior. The examples below are diagnostic illustrations, not measurements of a particular CDN or a promise that range support alone will fix every playback problem.

Table of Contents

Start with the actual media request

Open the browser network panel, load the product page, start the video, and seek beyond the buffered region. Identify the request associated with the media, including redirects and any intermediary image or media proxy. The URL shown in the content editor may differ from the URL the browser actually requests.

Record request headers, response status, response headers, and the amount of data transferred. Repeat the action with a fresh page and with an already buffered video. The second case may require no new network request, so it is not a sufficient test of remote seeking behavior.

Also establish the delivery model. A plain MP4 URL, a signed media URL, and an adaptive streaming player are different investigations. Avoid applying assumptions from a single downloadable file to every player. Keep the initial report narrow: the exact product, browser, media URL, seek position, and observed symptom.

Team investigating a browser delivery workflow

Understand the partial response contract

A request such as Range: bytes=0-1023 asks for the first 1,024 bytes because the endpoints are inclusive. A server honoring that single range returns 206 Partial Content with an appropriate Content-Range describing the returned interval and complete representation size. The body must correspond to the interval it declares.

The MDN range request guide explains the request and response behavior. Range handling is optional in HTTP, so a server may ignore the range and return the complete representation with 200 OK. That response is not equivalent to successful partial delivery, even though it is an HTTP success.

For a hypothetical 10,000-byte representation, the following cases make useful protocol checks. These are deliberately tiny examples for understanding headers, not recommended video sizes or a CDN performance benchmark.

Request conditionExpected interpretationEvidence to inspect
Range bytes=0-1023 honoredFirst 1,024 bytes returned206 and bytes 0-1023/10000
Range ignoredComplete representation returned200 and full body
Range starts beyond byte 9999No requested bytes available416 and total size information
No Range headerOrdinary resource retrievalFull response behavior
Conditional range no longer matchesUpdated full representation may be sentValidator and response status

Do not implement a fake repair that changes the status to 206 while forwarding the full body unchanged. The header, body, and representation identity need to agree. A misleading partial response can cause subtler corruption than a clear failure and may behave differently across browsers.

Check the edge proxy and origin together

A media request may cross several layers: browser, CDN, application proxy, object storage, and an upstream media service. Inspect where the Range header is preserved, interpreted, or ignored. A correct origin response does not prove that the final browser response still has the same semantics.

In a controlled environment, compare the origin and public delivery path using the same representation. Signed URLs and authorization may prevent a direct origin comparison, so work with the permitted diagnostic route. Never bypass access rules or expose a private media asset merely to obtain a cleaner test.

Look for transformations that replace the body while preserving old headers. If a proxy rewrites or compresses a representation, offsets and length metadata must remain consistent with what it serves. Cache behavior also matters: a partial body must not accidentally become the cached answer to a later full-resource request.

Use versioned media URLs when your publishing system supports them. Replacing a file under the same URL can interact with cached metadata and validators. Validate the actual updated URL after publication rather than assuming that an editor preview proves the public delivery path has refreshed.

Separate byte delivery from media packaging

Correct ranges are only one layer. The file’s container metadata, codec support, keyframe placement, and player behavior affect startup and seeking too. A browser may need particular parts of the file to locate the requested timestamp. A successful byte request does not establish that the returned bytes are immediately decodable at the chosen point.

If network responses look correct, inspect whether the file itself plays and seeks in the affected browser outside the storefront player. Compare the same file with a known-working asset through the same delivery path. That creates two useful controls: one for the asset and one for the storefront integration.

Do not replace the production video with a new encode before saving evidence from the failing version. Changing packaging, URL, player settings, and CDN configuration at once can remove the symptom without identifying its source. A controlled fix is easier to review and less likely to recur during the next product upload.

Colleagues comparing a test result with the expected behavior

Measure the shopper action rather than request count

Define seek-to-resume time as the interval from a chosen seek action to resumed playback at the intended position. Record a failure when playback does not resume under the test’s stated observation rule. Keep abandoned or interrupted tests separate from successful short delays so the distribution is not biased toward completions.

Count transferred bytes for the interaction and distinguish browser cache use from network transfer. More requests are not necessarily worse: several useful partial requests may transfer less than one complete download. Similarly, a 206 status count is not a customer success metric without the playback outcome.

Diagnostic measureUseful segmentInterpretation caution
Seek-to-resume durationBrowser and network profileCompletion-only samples hide failures
Playback failure countAsset and player versionSeparate unsupported formats
Bytes transferred after seekBuffered versus unbuffered positionCache can remove network work
Range response outcomePublic delivery route206 does not prove decoding success
Repeated full downloadsURL and cache stateCheck ignored ranges and URL churn

Set a store-specific release expectation using the baseline and the importance of the video. A short decorative clip and a long assembly guide support different shopper needs. Avoid inventing a universal seek threshold and presenting it as an industry standard.

Validate errors and file changes deliberately

Use a known small fixture to test a valid bounded range, an open-ended range, and an out-of-bounds start. Verify returned byte counts against the fixture rather than relying only on headers. For the first example above, 0 through 1023 must contain 1,024 bytes; an off-by-one implementation is incorrect even if a player sometimes tolerates it.

The Content-Range reference describes how the header represents successful partial content and unsatisfied ranges. Test validators as well if the delivery layer implements conditional ranges. A changed representation should not be stitched together with bytes from an older version.

Keep invalid-range tests on controlled assets and perform actual playback QA on the public product video. Test both a mobile and desktop browser relevant to the audience, plus a slow network profile. Include a later seek after the video has played for a while, since a one-time startup check misses the reported symptom.

Connect the repair to the product page

After the media fix, verify that the gallery remains keyboard accessible, the poster still loads, and the product selection and add-to-cart controls continue to work. A player repair that introduces a large eager download can degrade the rest of the shopping experience.

Use the product media performance framework for the broader asset budget. If monitoring misses requests late in a long session, check Resource Timing collection coverage before interpreting an apparently empty network report.

EcomToolkit point of view

A video is useful when a shopper can reach the moment that answers their question. Measure that action, inspect the complete delivery path, and keep partial-response correctness separate from player and encoding assumptions. If product demonstrations stall despite healthy page-speed scores, request an EcomToolkit audit focused on a reproducible seek and the bytes delivered after it.

Related partner guides, playbooks, and templates.

Related ecommerce guides.

Free Shopify Audit

Get a free Shopify audit focused on the fixes that can move revenue.

Share the store URL, the blockers, and what needs attention most. EcomToolkit will review UX, CRO, merchandising, speed, and retention opportunities before replying.

What you get

A senior review with the priority issues most likely to improve performance.

Best for

Brands planning a redesign, migration, CRO sprint, or retention cleanup.

Reply route

Every request is routed to info@ecomtoolkit.net.

We use these details to review your store and reply with the next best steps.