Why your video looks blurry after upload
It looked sharp on your desktop and soft on the page. Usually the player is still climbing, the renditions are still cooking, or the source was never as good as it seemed.
Blur after upload almost always has one of five causes. The player may be starting at a low rendition. Higher renditions may still be processing. The source may be low bitrate or upscaled. The player may be too small for a higher rendition. Or the content may be hard to encode. Check the quality menu first, then the source file.
You spent a day on a video, and it arrives on the page looking like it was filmed through a window. The file was crisp in the editor and crisp in the preview. Now edges are soft, text is fuzzy and smooth gradients have turned to steps. The first instinct is to blame the host's compression. Sometimes that is right. More often, the cause lies somewhere between what you looked at and what the viewer is being shown.
This guide is a step-by-step diagnosis. It starts with five minutes of checks that solve most cases. Then it works through the five causes, most common first, with the fix for each. You do not need to upload again until you have confirmed that the source is the problem. For the wider picture on resolution, bitrate and frame rate, see the video quality hub.
Diagnose in five minutes
Do these in order; most cases are resolved by the second step.
Let it play for thirty seconds, then look again
Adaptive streaming starts at a conservative rendition and steps up as it measures bandwidth. The first seconds are not representative.
Open the quality menu and pick the top rendition
If the picture sharpens, the automatic setting was choosing lower for a reason: bandwidth, player size or a rendition not yet available.
Check whether processing has finished
Shortly after upload, higher renditions may still be encoding. Wait, refresh and check the menu again.
Go fullscreen on a good screen
A 1080p rendition in a 500-pixel embed is downscaled; blur there is the page, not the video. Fullscreen shows the rendition as encoded.
Inspect the source with ffprobe
ffprobe -v error -show_entries stream=width,height,bit_rate,r_frame_rate,avg_frame_rate -of default=nw=1 source.mp4tells you the resolution, bitrate and whether the frame rate is constant.
Symptom, likely cause, fix
| What you see | Most likely cause | What to do |
|---|---|---|
| Sharp after a few seconds | Adaptive start-up | Nothing; this is normal |
| Quality menu tops out below your resolution | Processing incomplete, or source resolution lower than you thought | Wait; then check the source with ffprobe |
| Sharp in fullscreen, soft in the page | Small embed on a dense display | Size the embed properly or accept it; nothing is wrong with the file |
| Soft at every rendition, including the top | Weak source: low bitrate, upscale, double compression | Re-export from the original at a higher bitrate |
| Blocky in fast motion, fine elsewhere | Content harder than the bitrate allows | Raise the source bitrate; reduce grain and noise |
| Text and thin lines smeared | Small text at 4:2:0, or a screen recording at low bitrate | Record at native resolution, larger interface scale, higher bitrate |
| Audio drifts and frames stutter | Variable frame rate source | Convert to constant frame rate before upload |
Cause one: adaptive streaming and the first few seconds
VideoBB delivers video as HLS, and the player's automatic quality setting picks a rendition based on measured bandwidth and the size of the player. When playback starts it has measured nothing, so it begins low to avoid a stall, then steps up as segments arrive. On a fast connection the climb takes a few seconds; on a congested one it may hover at 480p or 720p for a while and rise later. This is the behaviour that makes video start instantly, and it is by design. The adaptive streaming guide explains the decision logic. The fix, if you need to see the top rendition now, is the quality menu. The quality levels help page shows where it is and how Auto behaves.
Cause two: the renditions are not all there yet
After an upload completes, the transcoder produces every rung of the ladder, and they do not all finish at once. A video can be playable while its higher renditions are still encoding, in which case the quality menu simply does not offer them yet. This is most noticeable with long or 4K uploads, where the top renditions are the slowest to produce. Give it time, then refresh. If a rendition never appears, the source's resolution is the usual reason. The ladder does not upscale, so a 1280×720 source will never gain a 1080p rendition. And 1440p and 2160p renditions only show in the menu for Premium viewers.
Cause three: the source was the problem
When the top rendition is soft in fullscreen, the file that went in was soft, and the transcoder faithfully reproduced it. There are five common ways this happens. The first is an export at or below the rendition's own bitrate, so 5 Mbps of compressed 1080p became 5 Mbps of doubly compressed 1080p. The second is a clip upscaled from a lower resolution, which has the label but not the detail. The third is a file exported from a screen recorder or messaging app at a small default bitrate. The fourth is footage passed through two or three encoders on the way, each adding flaws. The fifth is a phone export that was quietly downscaled to save space. ffprobe exposes all of these: compare the reported resolution and bitrate with what you expected. The bitrate guide gives upload targets, and the rule of thumb is roughly twice the top rendition's bitrate.
Cause four: content the encoder finds expensive
Some footage is hard to encode at any fixed bitrate. Fine, moving texture such as water, foliage, crowds, confetti and rain changes every pixel every frame. Film grain and sensor noise look like detail to an encoder and consume bits that should have gone to the subject. Fast whole-frame motion, handheld shake and rapid cutting all force the encoder to start from scratch often. When the budget runs out, the encoder blurs fine detail first, then blocks flat areas. That is why a talking head looks pristine at 5 Mbps and a concert crowd looks like watercolour.
Two fixes work. First, reduce what does not need encoding: use mild noise reduction on grainy footage and stabilisation on shaky footage. Second, give the source more bits so the second generation starts clean. What you cannot do is raise the rendition's target, which is fixed for everyone.
Cause five: the player is smaller than you think, or larger
The automatic quality setting takes the player's size into account, and size is measured in device pixels. A 640-pixel-wide embed on a standard display needs no more than 720p. The same embed on a phone or laptop with a 2× display is 1,280 device pixels wide and can use 1080p. If the player is small, the top renditions are never selected automatically, which is efficient and correct but can look like the video is stuck at a low quality. Conversely, a 720p source stretched across a wide layout will be upscaled by the browser and look soft no matter what the player does. Size the embed with the responsive embeds guide and match your source resolution to how large the video will actually be shown.
Fixes, in order of effort
- Wait, then choose the top rendition manually to confirm what is actually there.
- Size the embed to the space it has and test in fullscreen before judging the file.
- Re-export from the original project at roughly twice the top rendition's bitrate, constant frame rate, at the resolution you shot.
- Apply light noise reduction and stabilisation to expensive footage before export.
- For screen recordings, capture at native resolution with a larger interface scale.
- Replace an upscaled or doubly-compressed source with a clean one; nothing downstream can recover what it lacks.
When it really is the compression
Occasionally every check passes and a scene still shows artefacts at the top rendition. That is the encoder working within a fixed budget on content that exceeds it: a hosted ladder trades some peak quality for a stream that plays everywhere without stalling. The mitigations above narrow the gap, and Premium viewers gain 1440p and 2160p renditions with more room. The transcoding guide follows a file through the pipeline. If one video fails or looks broken everywhere while others play well, the playback problems help page explains how to report it.
Frequently asked questions
Does VideoBB compress my video?
Yes, every host does. The upload is decoded and re-encoded into a ladder of H.264 renditions at fixed bitrate targets. They run from 200 kbps at 144p to 5,000 kbps at 1080p, with 9,000 and 16,000 kbps for the Premium 1440p and 2160p rungs. Compression is what makes the video stream to any device without buffering. The quality of each rendition depends on the quality of the source it was made from.
Why is the 1080p option missing from the quality menu?
Either the rendition is still being produced, or the source was smaller than 1080p. Renditions are encoded at or below the source resolution, so a 1280×720 file gets 720p and down. Check the source with ffprobe; if it reports 1920×1080, wait for processing to complete and refresh. If it reports less, the export was downscaled somewhere before upload.
Will uploading a bigger file make it sharper?
Only if the extra size is detail rather than padding. A re-export from the original at a higher bitrate helps; the same compressed file re-saved at a higher bitrate does not, because the artefacts are already baked in. Start from the cleanest version you have, export once at the recommended bitrate, and upload that.
My thumbnail is sharp but the video is soft. Why?
Thumbnails are single still frames, and stills are cheap to encode well; a moving picture at the same resolution spends its bits across time. A sharp thumbnail with a soft video usually means the source bitrate was too low for the content's motion, or the player is at a lower rendition. Check the quality menu, then the source bitrate.
Sources
- FFmpeg: ffprobe documentation — Inspecting resolution, bitrate and frame rate of a source file.
- MDN: Web video codec guide — Chroma subsampling, artefacts and the effect of bitrate on quality.
- MDN: Window.devicePixelRatio — Why an embed's size in device pixels differs from its CSS size.
- Apple: HLS authoring specification for Apple devices — How adaptive players are expected to select renditions.
Related guides

Video bitrate guide
Bitrate is the budget an encoder spends on every second of picture. Here is how to read it, how to set it, and how much to give a file before you upload.

Adaptive bitrate streaming, explained
A player that changes quality mid-stream is making a prediction every few seconds. How the rendition ladder is built, how the player chooses a rung, and what makes the choice hard.

Responsive video embeds
Fixed 640×360 frames crop on phones and float in wide columns. Two lines of CSS fix it for good, and there is a fallback for older stacks.

Video transcoding, explained
Transcoding turns one source file into a set of aligned versions ready for adaptive streaming. Here is what happens at each stage, and which settings decide the result.