Why your video looks worse after uploading, and what to do about it

The export was crisp. Twenty minutes later it is on the platform and it looks like a copy of a copy. Nothing went wrong on your side, and there is nothing to be done on theirs. But there is quite a lot to be done before you press upload.

Every platform re-encodes every upload. Your file is not what the audience watches; it is the source for a set of files the platform makes, at several resolutions, at bitrates it chooses, with an encoder it chooses, tuned for its bandwidth costs rather than your picture. This is not a setting you can turn off, and it happens to everyone's video.

What you control is how much there is to lose. Some footage goes through a platform's encoder and comes out nearly untouched; other footage falls apart. The difference is predictable, and most of it is decided at export.

What compression actually does

A video encoder has a budget of bits per second and spends it where it thinks the eye will notice. It finds the parts of the frame that changed since the last frame and describes those; the rest it copies forward. Where the budget runs out, it approximates: flat areas become blocks, gradients become bands, fine detail becomes mush.

So the footage that survives is footage that is cheap to describe: stable shots, clean images, smooth gradients, motion in a few places. The footage that suffers is expensive: grain over the whole frame, fast motion everywhere at once, confetti, rain, foliage in wind, and (a special case) anything dark.

Dark scenes suffer for a specific reason. The encoder thinks in terms of visible differences, and in the shadows the steps between levels are large relative to what is there, so a smooth dark gradient turns into visible bands and a dark room turns into a shifting mosaic of blocks. If your video has a night scene, that is where the damage will show first.

Give them more than they need

The first and largest lever is resolution, and it works for a reason that is not obvious.

Platforms assign bitrate by resolution. A 1080p upload gets a 1080p budget; a 1440p or 4K upload gets a larger one, and on some platforms the higher tiers are also served through a more modern codec that squeezes more picture into the same bits. The consequence, which editors have been quietly exploiting for years, is that a 4K upload watched at 1080p on a phone very often looks better than a 1080p upload watched at 1080p on the same phone, even when the source was 1080p to begin with.

So export above your delivery resolution. If the sources are 4K, Match source and let it be 4K. If they are 1080p and the video matters, a 2× upscale on the finished cut before export is worthwhile, not for the extra pixels but for the encoder those pixels unlock. AI-generated clips, which often arrive at 720p, benefit twice: the upscale regenerates detail that was never there, and the higher-resolution export protects it.

The second lever is quality at export. The platform's encoder can only work with what it is given, so a compressed export goes through a second compression and the artefacts multiply. Export at the high quality preset; the file is larger, and the platform will shrink it anyway, but it shrinks from a clean source. Choose H.264 unless you have a reason not to; H.265 is smaller at the same quality but every platform transcodes it, and the intermediate is one more generation.

Avoid the things compression hates

Some of the damage can be avoided at the source.

Grain. A film-grain overlay across the whole frame is the single most expensive thing you can ask an encoder to describe, and it is the first thing it throws away, leaving a smeared version of whatever was underneath. If you want the look, keep it subtle and expect it to come back smoother than you sent it. If the grain is noise from a low-light source, denoise before export; the noise was costing you bitrate that the picture needed.

Fast dissolves over detailed footage. Two detailed frames overlapping is twice the detail to describe. A short cut is cheaper to encode than a long dissolve and usually looks better after upload for that reason alone.

Very dark grades. If a grade has crushed the shadows for mood, lift them slightly for delivery. The mood survives; the banding does not appear. Adding a little contrast in the mid-tones instead of pulling the blacks down achieves most of the same feeling at a fraction of the compression cost.

Full-frame motion. A handheld shot with the whole frame moving is a worst case. Where a shot can be stabilised or held, the platform version will be far cleaner.

Text has to be built for it

The commonest casualty of re-encoding is text. Thin strokes, small sizes and high-contrast edges are all things an encoder simplifies, so a title that was legible in your export is a shimmer of blocks in the feed.

The rules for titles that survive are the rules for titles at small sizes anyway: a heavier weight than looks right on your monitor, a size that is comfortably readable when the video is a quarter of a phone screen, and a soft shadow or a plate behind it rather than a hard outline, because hard outlines ring. Keep it inside the safe area, and keep it still for long enough to be read after the encoder has done its worst; a fast fly-in of thin text is unreadable twice.

Burned-in captions follow the same rules, with one addition: a solid or semi-solid plate behind caption text is not a stylistic choice, it is what keeps the letters legible over a busy background after compression.

Judge it at delivery size

The last habit is the one that catches everything else. Before uploading, watch the export at the size the audience will watch it: a phone, a feed, a window a quarter of your screen. A shot that reads at full-screen on a monitor and does not read at that size is a shot the platform will finish off.

Then, after uploading, watch the platform's version and compare. If it is materially worse, it will be one of the causes above, and almost always a resolution or a grain one. Re-export higher, remove the grain, upload again. Platforms let you replace or re-upload; a second version that looks right beats a first version that was on time.

What you cannot fix

Nothing about the platform's choices is yours to change. You cannot ask for a higher bitrate, you cannot opt out of the re-encode, and a viewer on a slow connection will get the 480p version whatever you did. The aim is not to avoid loss. It is to send a file that has the least to lose, at a resolution that earns the platform's best treatment, with the important things, the faces, the text, the product, robust enough to survive.

The order that works

  1. Export above delivery resolution: Match source for 4K sources, upscale a 1080p or 720p cut when it matters.
  2. Use the high quality preset and H.264, so the platform encodes from a clean file.
  3. Remove what compression hates: grain and noise, long dissolves over detail, crushed blacks, unstabilised full-frame motion.
  4. Build text to survive: heavier, larger, on a plate, held still.
  5. Watch it at phone size before uploading, and watch the platform's version after.
  6. Replace the upload if it came out worse; the second one is the one that counts.