Choose ByteDance for hosted API upscaling and interpolation, Topaz for interactive local restoration, and Real-ESRGAN for self-hosted pipelines; source damage and delivery needs matter more than a 4K label.
The short answer: choose by source, not output resolution
ByteDance Video Upscaler is a convenient API route when you need a 1080p, 2K, or 4K delivery file from AI-generated, UGC, short-series, or old-film footage. Topaz Video is the better fit when an editor needs local previews and manual model control. Real-ESRGAN is the low-cost, scriptable baseline, but frame-by-frame processing needs extra work to avoid flicker and to preserve audio.
| Your job | Best starting point | Why |
|---|---|---|
| Clean AI-generated clip to 2K/4K | ByteDance Video Upscaler | AIGC preset and a single video-to-video job |
| Editor-controlled restoration on a workstation | Topaz Video | Local rendering, previews, and a desktop workflow |
| Many clips with full pipeline control | Real-ESRGAN | Open-source inference and automation |
| Commercial API with published per-second rates | ByteDance through fal | Queue API, webhooks, presets, and billing controls |
What ByteDance Video Upscaler actually exposes
The Replicate page identifies the model as ByteDance’s vCube video upscaler. It documents 480p, 720p, and 1080p inputs going to 2K or 4K, with enhancement and interpolation in one pass. The model is not a still-to-video generator: it processes an existing video file.
The important controls are the scene preset, processing tier, target resolution, and target frame rate. Replicate lists aigc, short_series, ugc, old_film, and common scenes; its page also describes standard and an allowlist-only pro tier. Replicate’s README says a 5-second clip typically takes 3–5 minutes, so this is not a real-time preview tool.
| Control | Documented options | Practical use |
|---|---|---|
| Scene | aigc, short_series, ugc, old_film, common | Match the preset to the source |
| Resolution | 240p through 1080p, 2K, and 4K on Replicate | Pick the delivery ceiling, not automatically 4K |
| Frame rate | 24, 30, 60, and a documented 120 option | Match the source unless interpolation is intentional |
| Tier | standard; pro is access-gated on Replicate | Reserve Pro for faces and fine detail |
| Output | One MP4 | Check audio and metadata in your chosen provider |
fal exposes more controls than Replicate, including tiers, fidelity, bit depth, presets, and up-to-8K schema targets, but its visible rate card only covers 1080p, 2K, and 4K.
Controls that change the bill
fal lists standard 30-fps prices of $0.0072 per second for 1080p, $0.0144 for 2K, and $0.0288 for 4K. Its page says 60 fps doubles the cost, while Pro is 10 times the normal price. That makes a 30-second 4K/30 standard render about $0.864, before any account-specific charges.
| fal configuration | Rate per output second | 30-second example |
|---|---|---|
| Standard, 1080p/30 | $0.0072 | $0.216 |
| Standard, 2K/30 | $0.0144 | $0.432 |
| Standard, 4K/30 | $0.0288 | $0.864 |
| Standard, 4K/60 | $0.0576 | $1.728 |
| Pro, 4K/30 | $0.288 | $8.640 |
These are fal prices, not universal ByteDance pricing; BytePlus VOD uses separate minute-based pricing by tier, resolution, and frame-rate band.
Comparing the same old clip without fooling yourself
A useful comparison needs one source and one delivery target. Use a 5–10 second crop from the old video containing a face, fine texture, subtitles or signage, a moving edge, and a flat dark area. Keep the source, crop, output resolution, frame rate, codec, and audio-remux step constant.
| Pipeline | What to render | What to inspect |
|---|---|---|
| ByteDance | old_film or common, 2K or 4K, source-matched FPS | Grain, faces, text, temporal stability |
| Topaz Video | A consistent enhancement model and identical output settings | Detail recovery versus invented texture |
| Real-ESRGAN | Same frames with a documented model and tile setting | Frame-to-frame consistency, halos, and runtime |
Treat results as a benchmark only when source, settings, runtime, cost, and blinded side-by-side review are recorded; vendor pages establish capabilities and prices, not a universal quality winner.
The table above is a routing guide, not a quality guarantee: test the source before committing to a full render. The failure modes matter more than the logo. Tiny subtitles may turn into sharpened strokes; faces can become waxy or over-detailed; film grain can become crawling noise; and a 24-fps source rendered at 60 fps may look smoother without containing new captured motion. A soft, heavily compressed, interlaced, or badly exposed source may look worse at 4K because ringing and hallucinated detail are now easier to see.
API workflow: submit, poll, download, and batch
The fal API is asynchronous. Keep the key on a server, submit a public URL or uploaded file, poll the queue, and download the returned MP4. A minimal Python worker can look like this:
import os
import fal_client
VIDEO = "https://example.com/archive/clip.mp4"
result = fal_client.subscribe(
"fal-ai/bytedance-upscaler/upscale/video",
arguments={
"video_url": VIDEO,
"target_resolution": "4k",
"target_fps": 30,
"enhancement_preset": "old_film",
"enhancement_tier": "standard",
"fidelity": "high",
},
with_logs=True,
)
print(result["video"]["url"])
For production batches, replace subscribe with queue submission plus a webhook or status polling. Add retries for transient failures, record the provider request ID, and cap concurrency so a folder of short clips does not create an uncontrolled bill. Process a 5–10 second crop first; only then submit the full source.
Real-ESRGAN’s frame workflow is more manual: extract frames with FFmpeg, run the official video inference script or an image model, reassemble the numbered frames at the original frame rate, and remux the original audio. Preserve frame numbering and use lossless or high-quality intermediates; otherwise the comparison is testing your intermediate codec as much as the upscaler.
When upscaling makes footage worse
Stop or lower the target when any of these appears in a short test:
- Text changes shape. The model is reconstructing a guess, not recovering readable characters.
- Faces drift between frames. Choose a more conservative tier or a local workflow with better controls.
- Edges ring. Strong sharpening is outlining contrast rather than restoring detail.
- Grain crawls. Noise has become temporal texture; restoration may need denoising before enlargement.
- Motion looks unnatural. Interpolation has changed timing or created blended objects.
- The source is interlaced or badly exposed. Deinterlace or correct the source first.
- The delivery target is only 1080p. A 4K render adds cost and may expose artifacts that will be downsampled away.
ByteDance’s old_film preset is a useful test for archive material, but the public model pages do not promise scratch removal, flicker correction, audio preservation, or a particular codec. Treat those as workflow questions, not guaranteed features.
FAQ: practical decisions before rendering
Can ByteDance upscale video to 4K?
Yes. Replicate documents 2K and 4K targets, while fal exposes 4K and additional schema values. The exact limits, price, and tier depend on the host.
Should I convert 24 fps to 60 fps?
Only when the delivery requires it or you have reviewed interpolation artifacts. A higher frame rate does not recreate motion that was never captured.
Is ByteDance cheaper than Topaz?
For a few API seconds, hosted ByteDance can be inexpensive; fal lists $0.864 for 30 seconds at 4K/30 standard. Topaz Video’s official pricing documentation lists Video at $299 per year prepaid or $33 per month on an annual commitment. The break-even depends on your GPU, volume, and whether you need cloud rendering: compare annual license cost plus hardware time with your expected hosted seconds.
Is Real-ESRGAN free for video?
The official project provides open-source code and pretrained models, but your compute, storage, and engineering time are not free. Frame-wise processing also needs a tested audio and temporal-consistency pipeline.
Does the upscaler preserve audio?
Do not assume it. The model/API output is a video file, but the reviewed public documentation does not provide a universal audio-preservation guarantee. Keep the original audio and remux it when required.
What should I use for faces?
Start with a short crop and compare ByteDance Pro, Topaz, and a conservative Real-ESRGAN setting. Reject any result that changes identity or produces plastic skin, even if it has more visible pores.
The decision I would ship
The safest production sequence is: extract a short crop, render all candidates at the real delivery frame rate, inspect faces/text/motion at 100%, then process the archive. For related local workflows, see the Real-ESRGAN setup guide and GFPGAN and CodeFormer face restoration.