How to deinterlace a video to remove combing artifacts
- Step 1Confirm the clip is actually interlaced — Scrub to a panning or fast-motion section and pause. If you see horizontal comb teeth or feathering on moving edges, it is interlaced. A
1080i,576i,480i, ori-suffixed format label is the other tell. If the clip is already progressive, deinterlacing will soften it for no benefit — skip the tool. - Step 2Drop the file onto the deinterlacer — Supported inputs are MP4, MOV, MKV, WEBM, AVI, M4V, and TS. The file loads into the in-browser FFmpeg engine; nothing is uploaded. Any unrecognised extension is treated as MP4 by the demuxer.
- Step 3Leave Mode on 1 to remove combing without changing the frame rate — Mode
1runsyadif=1: one progressive frame out for each frame in, original frame rate kept. This is the right default for removing combing on film-sourced or general footage where you do not want the clip's timing or frame count to change. - Step 4Switch to Mode 0 only if you also want smoother motion — Mode
0runsyadif=0(bob): each field becomes its own frame, doubling the rate (25i → 50p, 29.97i → 59.94p). Use it for high-motion live content; it makes the file longer in frames and larger, and is the wrong choice if a downstream tool expects the original rate. - Step 5Run the deinterlace pass — JAD pipes the source through
yadif, re-encodes the video to H.264 with-preset medium -crf 20, and copies the audio. Processing is CPU-bound WASM, so a long SD capture takes a few minutes; the progress bar tracks it. - Step 6Download and verify on a moving frame — Pause the MP4 output on the same motion-heavy frame you checked in step 1. The comb teeth should be gone. If edges look slightly soft, that is the expected cost of field interpolation — see the FAQ on sharpness.
The two deinterlace modes
These are the only two options the tool exposes. Both map directly to the yadif argument shown; everything else (encoder, CRF, audio handling) is fixed.
| Mode (UI value) | FFmpeg filter | Frames out | Frame rate | Best for |
|---|---|---|---|---|
| 1 — original fps (default) | yadif=1 | One progressive frame per source frame | Unchanged (25i → 25p, 29.97i → 29.97p) | Removing combing on film, drama, archive — keeps timing and frame count |
| 0 — double fps (bob) | yadif=0 | One frame per field (2× source frames) | Doubled (25i → 50p, 29.97i → 59.94p) | Sports, live action, high motion — smoother but larger and longer in frames |
Fixed encode settings (not adjustable)
The deinterlacer always re-encodes to the same H.264 MP4 profile. If you need a different codec or quality, deinterlace first, then re-encode with a sibling tool.
| Setting | Value | Note |
|---|---|---|
| Output container | MP4 (always) | Regardless of input — MOV/MKV/AVI/TS all come out as .mp4 |
| Video codec | H.264 (libx264) | WebCodecs/hardware path is not used for this filter — it is FFmpeg.wasm |
| Quality | CRF 20, preset medium | Visually near-lossless for SD/broadcast sources; not user-adjustable here |
| Audio | Stream-copied (-c:a copy) | No re-encode, no quality loss, stays in sync |
| Field-order selection | Automatic | yadif reads TFF/BFF from the stream — there is no manual override |
Free vs paid limits (video family)
Limits are by file size and batch count — there is no duration cap. The deinterlacer takes one file at a time (it is not a batch tool), so the batch column applies only if you queue several jobs.
| Tier | Max file size | Batch files |
|---|---|---|
| Free | 1 GB | 1 |
| Pro | 10 GB | 5 |
| Pro-media | 100 GB | 50 |
| Developer | 100 GB | Unlimited |
Cookbook
Concrete combing-removal jobs with the exact filter that runs and what to expect in the output. All run locally in your browser.
Standard combing fix, keep the frame rate
The most common case: a 29.97i capture with comb teeth on motion. Mode 1 rebuilds progressive frames at the same rate, so the duration and frame count are identical to the source.
Mode: 1 (default) Filter run: -vf yadif=1 Encode: -c:v libx264 -preset medium -crf 20 -c:a copy Input: capture.mxf-equivalent, 29.97i, comb teeth on pans Output: capture.mp4, 29.97p, H.264, combing gone, same duration
High-motion footage, smoother with bob mode
A 25i clip of a fast-moving subject where you want the extra motion smoothness. Mode 0 doubles the frame rate by promoting each field to a frame.
Mode: 0 (double fps / bob) Filter run: -vf yadif=0 Input: match.avi, 25i, 90 seconds, ~2,250 frames Output: match.mp4, 50p, 90 seconds, ~4,500 frames Note: file is larger; duration unchanged, frame count doubled
Container conversion happens as a side effect
Drop a MOV or MKV and the output is MP4 — deinterlacing always re-encodes and always writes MP4. There is no way to keep the original container from this tool.
Input: interview.mov (interlaced) Mode: 1 Output: interview.mp4 (progressive, H.264) Want a different container after this? Re-encode with the transcoder: /video-tools/video-transcoder
Audio stays untouched while video is rebuilt
Because audio is stream-copied, a clip with AC-3 or AAC audio keeps that exact track. Only the video is re-encoded.
Input: broadcast.ts, AC-3 5.1 audio, interlaced video Mode: 1 Video: re-encoded H.264 (combing removed) Audio: AC-3 5.1 copied bit-for-bit, still in sync Output: broadcast.mp4
Already-progressive clip — don't run it
If a file is already progressive, yadif still interpolates and softens the picture without removing any combing (there is none). Verify first; deinterlacing is not a no-op on progressive sources.
Pause on motion → no comb teeth → already progressive. Running yadif anyway = softer image, no benefit, larger file. Use the deinterlacer ONLY when you can see combing.
Edge cases and what actually happens
Source is already progressive
Avoidyadif will still interpolate scan lines on a progressive source, softening the image while removing combing that was never there. There is no auto-detect-and-skip. Confirm combing on a paused motion frame before running; if there is none, skip the tool.
Output is always MP4, never the input container
By designThe deinterlacer re-encodes to H.264 and writes .mp4 regardless of whether you fed it MOV, MKV, AVI, or TS. This is fixed. If you need to land in a specific container afterwards, run the result through the transcoder.
Picture looks softer after deinterlacing
ExpectedInterpolating the missing field's scan lines is inherently softer than native progressive capture — the original data simply was not full frames. This is a property of field-based material, not a bug. There is no sharpen option in this tool; the previous claim of a built-in sharpen pass was incorrect.
Wrong field order produces juddery motion
Rareyadif auto-detects field order from the stream. If a badly-authored file has the wrong flag, motion may judder or look doubled. There is no manual TFF/BFF override here; re-mux or re-export the source with correct field-order metadata, then deinterlace.
File exceeds the tier size cap
RejectedFree tops out at 1 GB per file, Pro at 10 GB, Pro-media and Developer at 100 GB. A capture over your cap is rejected before processing. Split a long capture with the video splitter or upgrade the tier.
Very long SD capture takes minutes
ExpectedThis filter uses FFmpeg.wasm (single-threaded WASM), not the hardware WebCodecs path, because yadif + libx264 has no WebCodecs equivalent here. A multi-hour digitisation will take a while and is CPU-bound. Leave the tab open; processing is local.
Mode 0 makes the file much larger
ExpectedBob mode doubles the frame count, so the encoded MP4 is correspondingly larger and there are twice as many frames for downstream tools. If your target spec wants the original rate, use Mode 1 instead.
Telecined (pulldown) film labelled as interlaced
LimitedFilm that was 3:2 pulled-down to 29.97i is best handled by inverse telecine, not plain deinterlacing. yadif will remove the combing but won't restore the native 23.976p cadence. This tool only offers yadif; true IVTC is out of scope.
Encode failed error
ErrorIf FFmpeg exits non-zero you'll see a Deinterlace failed message with the log tail. The usual causes are a truncated/corrupt source or an unsupported codec the WASM build can't decode. Try remuxing the file to MP4 first, then deinterlace.
Frequently asked questions
What exactly does this tool do to my video?
It runs FFmpeg's yadif filter to convert interlaced fields into progressive frames, removing the comb teeth you see on motion. The video is re-encoded to H.264 in an MP4 container at CRF 20 (preset medium), and the audio is copied through unchanged. The only thing you choose is Mode: 1 keeps the original frame rate, 0 doubles it.
How do I know if my video is interlaced?
Pause on a moving section. Interlaced footage shows fine horizontal lines (combing/feathering) on anything that moved, because each frame holds two fields captured a moment apart. A format label ending in i (1080i, 576i, 480i) is interlaced; p (1080p, 480p) is progressive.
What is the difference between Mode 1 and Mode 0?
Mode 1 (yadif=1) outputs one progressive frame per source frame and keeps the original frame rate — best for general footage and film. Mode 0 (yadif=0, bob) outputs one frame per field, doubling the frame rate (25i → 50p), which gives smoother motion but a larger file. There is no separate 'weave' mode; both modes are yadif, just single-rate vs double-rate.
Why does the deinterlaced footage look softer?
Deinterlacing interpolates the missing scan lines from adjacent fields, which is unavoidably softer than native progressive capture — the original was alternating fields, not full frames. This tool does not include a sharpen pass. If you need to sharpen, do it in a dedicated editor after deinterlacing.
Can I keep my original container, like MOV or MKV?
No. The deinterlacer always re-encodes and always writes MP4. If you need a different container, run the MP4 output through the transcoder afterwards.
Does it use hardware acceleration?
Not for this filter. yadif plus libx264 runs on FFmpeg.wasm (the WebAssembly build) in your browser, which is CPU-bound. The WebCodecs hardware path used by some other JAD video tools doesn't apply here. Large or long sources will take longer to process as a result.
Is my footage uploaded anywhere?
No. All processing happens in your browser via FFmpeg.wasm. The file is never sent to a server, which is why it works on unreleased, embargoed, or sensitive captures. Only an anonymous 'file processed' counter is recorded for signed-in dashboard stats.
What input formats can I drop in?
MP4, MOV, MKV, WEBM, AVI, M4V, and TS are recognised. Other extensions are handled as MP4 by the demuxer, which works if the actual stream is decodable. The output is always MP4.
Will deinterlacing fix a progressive video that just looks bad?
No. yadif only helps interlaced material. On a progressive clip it will soften the image and remove no combing (there is none). Confirm combing on a paused motion frame before running.
Can I choose the field order (TFF/BFF)?
No. yadif auto-detects field order from the stream metadata. There is no manual override in this tool. If a file has a wrong field-order flag and motion looks juddery, fix the field-order metadata at the source and re-run.
Why is QTGMC not an option?
QTGMC is a far heavier deinterlacer that depends on AviSynth/VapourSynth plugins which don't run in the browser WASM build. JAD offers yadif, which is the standard real-time-capable deinterlacer and handles the vast majority of broadcast and capture sources well.
How big a file can I deinterlace?
Free allows up to 1 GB per file, Pro up to 10 GB, and Pro-media and Developer up to 100 GB. There is no duration limit — only the file-size cap. If your capture is over the limit, split it with the video splitter first, or look at the lossless trimmer to extract the section you need before deinterlacing.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.