The generation preview clearly says 1080p. You hit Download and the file on disk is 720p, 540p, or worse — heavily compressed, with visible macroblocking on flat areas and chroma smear on edges. This is almost always a tier limit, an export setting, or a CDN-side transcode. The pixels you saw in the preview were never on disk. Fix by switching to the HD export action, upgrading the export tier where required, and upscaling with Topaz Video AI, Runway Upscale, or DaVinci Resolve Super Scale where re-rendering is not feasible.
Common causes
Ordered by hit rate.
1. Free or starter tier caps export resolution
Runway Free, Pika Free, Kling Free, and Hailuo Trial all cap exports at 720p even when the preview shows 1080p. The HD pixels were rendered in the cloud but the export pipeline reencodes down.
How to spot it: Look at the plan’s Export Resolution feature line. If it says “720p” or “Standard quality,” your max export is capped regardless of preview.
2. Export action used “Preview MP4” instead of “HD Export”
On Runway you can right-click and Save the preview player video, which is a 540p web preview. The HD Export button in the asset card is the only way to get the rendered pixels.
How to spot it: Check the saved file’s resolution with ffprobe -v error -select_streams v:0 -show_entries stream=width,height file.mp4. If width is 854 or 960, you got the preview.
3. Output codec set to compressed web profile
The default H.264 web profile in some tools uses CRF 28+ for fast delivery. Pixels are there at 1080p but compression destroys them.
How to spot it: Inspect bitrate with ffprobe -v error -show_entries format=bit_rate file.mp4. Anything under 4 Mbps for 1080p is web-tier compressed.
4. CDN delivered a transcoded variant
Sora, Veo, and some hosted UIs serve videos through a CDN that auto-transcodes based on the player size. Right-click save grabs whatever variant the player loaded.
How to spot it: The file changes resolution depending on which window size you used when downloading. The cause is CDN, not the model.
5. Aspect ratio change cropped + downscaled
Generated at 1920x1080 but export preset was Vertical 1080x1920. Tool down-scales to fit and the deliverable is now a small crop window.
How to spot it: Check the aspect ratio of the saved file versus the preview. Mismatch means a re-fit pass happened.
Shortest path to fix
Step 1: Confirm the export action you are using
# Runway
- Asset card -> three-dot menu -> Download HD
- NOT: right-click on player -> Save video as
# Pika 2.0
- My Library -> hover asset -> Download icon
- Format: MP4 HD
# Kling
- Generation detail -> Export HD button
- 1080p available on Standard+, 4K on Pro
# Sora / Veo
- Click the official Download icon in the result card
- Avoid browser context-menu save
Step 2: Upgrade tier if your plan caps resolution
# Resolution caps by tier (verify in your account):
- Runway Free: 720p
- Runway Standard: 1080p
- Runway Pro: 4K (upscale)
- Pika Free: 720p
- Pika Standard: 1080p
- Kling Free: 720p
- Kling Standard: 1080p
- Kling Pro: 1080p+ longer clips
Step 3: Inspect file metadata to confirm the actual problem
# What resolution did you actually get?
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate,bit_rate file.mp4
# Compare to preview metadata
# If width/height are below tier max, escalate to support
# If width/height match but bitrate is under 4 Mbps at 1080p, recompress at higher bitrate
Step 4: Upscale with a quality tool when re-render is not possible
# Topaz Video AI
- Import clip
- Model: Iris MQ for faces, Proteus for general
- Target: 1080p or 4K
- Export ProRes 422 HQ for editing, H.264 for delivery
# Runway Upscale
- Workspace -> Tools -> Upscale Video
- Input: your 720p clip
- Output: 1080p or 4K depending on plan
# DaVinci Resolve Super Scale
- Right-click clip -> Clip Attributes -> Super Scale: 2x
- Sharpness: Medium, Noise Reduction: Low
- Render at target resolution
Step 5: Recompress at proper bitrate if resolution is fine but quality is poor
# Recompress the original at a higher bitrate
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a copy output.mp4
# Or for ProRes (editing intermediate)
ffmpeg -i input.mp4 -c:v prores_ks -profile:v 3 -c:a copy output.mov
# Confirm: bitrate should now be 8-15 Mbps for 1080p H.264
Prevention
- Standardize on the in-app HD Export button across every tool you use.
- Keep a small
ffprobecheck in your workflow to verify resolution after every download. - Match your project sequence resolution to the highest tier output your plan supports.
- Generate at the target aspect ratio so the export does not need to refit and downscale.
- Keep a Topaz / Runway Upscale pass available as a last resort for old assets.