We have produced a new version of the software in Rust with more features and a better interface. Try the 2.0 version [here]:(https://github.com/Video-Capture-Guide/VCG-Deinterlacer-2.0)
Version 1.8.0 — by VideoCaptureGuide
A free Windows tool for deinterlacing VHS, Hi8, Video8, and MiniDV tape captures using QTGMC — the industry-standard motion-compensated deinterlacer. Guided step-by-step wizard interface with automatic video analysis.
There are four ways to get VCG Deinterlacer. Not sure which is for you? Jump to Which download should I pick? — for most people it's option 1.
1. Single EXE — the simple choice Download VCG_Deinterlacer.exe — 1.8.0 — one Windows file. Save it anywhere and double-click; there is nothing to unzip or install. On first launch the app automatically downloads FFmpeg and VapourSynth (~136 MB, one time only).
2. Standalone ZIP — if your antivirus blocks the single EXE
On the Releases page, download VCG_Deinterlacer_1.8.0_standalone.zip. This is the same program, just delivered as a folder of files instead of one self-contained EXE. Some antivirus tools flag the single EXE as a false positive because of the way it unpacks itself in memory when it starts; the standalone version doesn't do that, so scanners usually leave it alone. Extract the ZIP, open the folder it creates, and double-click VCG_Deinterlacer.exe inside. Keep the whole folder together — the EXE needs the files next to it to run. First launch still auto-downloads FFmpeg and VapourSynth.
3. Build it yourself from source
Prefer to compile your own binary? Grab the source — the Source code (zip) link on the Releases page, or git clone this repo — and run build_vcg_deinterlacer.bat. You get the same VCG_Deinterlacer.exe as option 1. See BUILD_INSTRUCTIONS.md for the full steps.
4. Run the Python script directly
If you already have Python 3.12 and the required packages installed, you can run the app straight from the source file: python vcg_deinterlacer_v130.py. The dependency list is in requirements.txt (pip install -r requirements.txt). FFmpeg and VapourSynth are still fetched automatically on first launch if they aren't already present.
| If you… | Download this | Why |
|---|---|---|
| Just want it to work (most people) | 1. Single EXE | One file, double-click, done. |
| Got a virus/"trojan" warning on the EXE, or your antivirus deleted it | 2. Standalone ZIP | Same app, packaged so it doesn't trip antivirus false positives. No settings to change. |
| Are a developer, or want to read or modify the code | 3. Source (build it) or 4. Run the .py |
Full source; compile your own EXE or run it in Python. |
About the antivirus warnings: VCG Deinterlacer is safe and open-source — you can read every line of it in this repo. The single EXE is built with Nuitka, which packs the whole app into one file; a few antivirus engines mistake that packing for malware and show a generic alert (names like
Trojan.Win32.Agent.*). It's a known false positive, not a real detection. If you hit it, use the Standalone ZIP (option 2), which avoids the packing that causes it.
- QTGMC deinterlacing — the gold standard for analog video restoration
- Automatic first-run setup — downloads FFmpeg and VapourSynth automatically on first launch
- Automatic video analysis — detects noise level, edge halos, color cast, color bleeding, and brightness levels, with quantified scores shown next to every recommendation and notes explaining where the analysis samples were taken from
- Guided wizard with sidebar navigation — walks you through every setting with explanations; a navigation sidebar shows every step, what's done, and what's next, and lets you click any visited step to jump back to it
- Plain-language settings summary — the final page recaps everything that will be applied (source, field order, deinterlacing method, crop, colour matrix, output, and any enhancements you enabled) so you can double-check before processing
- Field order detection with manual lock — auto-detects TFF/BFF for single files via FFmpeg
idet; a field order you set by hand is locked in and never overwritten by background detection - Inverse Telecine (IVTC) — detects 3:2 (NTSC) and 2:2 (PAL) film pulldown on DVD/MPEG-2 sources and can reconstruct the original progressive frames instead of deinterlacing
- Trim / segment export — keep or cut frame-accurate segments before processing, with a preview scrubber, timecode entry, and the choice of joining kept parts into one file or exporting one file per segment
- AVCHD and HDV support — automatically detects and processes interlaced HD camcorder footage (.mts, .m2ts, .m2t, .ts) with a dedicated HD wizard path
- 10-bit and non-standard source support — 10-bit or unusual YUV/grayscale sources (e.g. DVD-rip MKVs) are auto-detected and converted to 8-bit at load time, with a one-line notice
- Batch processing — queue multiple files and process them overnight (auto-detection is disabled for batches, since each file may differ — you set the field order manually)
- Multiple output formats — ProRes HQ, H.264, FFV1 (lossless), and more
- PAR correction — automatically converts non-square pixels to square for NTSC, PAL, and HDV sources
- 16-bit pipeline — the full processing chain (QTGMC, BM3D, dehalo, colour correction, levels) runs at 16-bit precision; fmtconv error-diffusion dithering converts to the output bit depth at the very end, eliminating banding in skies and fades
- Colorspace tagging — auto-detects the correct matrix (BT.601 for SD, BT.709 for HD), tags VapourSynth frames and the output container, and uses the same matrix for all in-app video scopes so scope colors are accurate
- Temporal denoising — BM3D (with KNLMeansCL/SMDegrain fallback) for noisy VHS footage
- Dehalo — removes edge halos from VHS sharpening circuits and camcorder edge enhancement, with automatic halo analysis and a quantified halo score
- Upscaling — optional upscale to HD presets with NNEDI3 (SD sources only); when the result is HD-sized, colours are converted BT.601 → BT.709 at full precision so the upload displays correctly on YouTube instead of looking dark and oversaturated
- Mono-to-stereo — optional fix if your video has audio in only one channel
- Color correction — auto-detects and corrects color casts and saturation issues
- Video scopes — Vectorscope and RGB Histogram on the Color Analysis page; RGB Parade with frame scrubber on the Video Levels page
- Watermark — optional text or logo overlay (position, size, opacity)
- Film grain — optional AddGrain overlay applied at the final resolution; keeps denoised footage from looking plasticky and prevents banding after YouTube's re-compression
- Comparison video — 20-second side-by-side original vs. enhanced clip: 10 s normal view + 10 s at 300% zoom
- Drag and drop — drop video files directly onto the app window, including MTS and AVCHD files
- Diagnostic log — optional troubleshooting log saved alongside the output (VCG version, system info, ffprobe data, detected parameters, the generated VapourSynth script, the FFmpeg command, and full output) to email if you hit an error
- Portable — no installer, no UAC prompt, no admin rights required
- Windows 10 or 11 (64-bit)
- Internet connection on first launch (to download FFmpeg and VapourSynth, ~136 MB)
FFmpeg and VapourSynth are downloaded automatically into a _deps\ folder next to the EXE. No system-wide installation is required.
- Download
VCG_Deinterlacer_1.8.0.exefrom the Releases page - Save it to any folder (e.g.
C:\Tools\VCG_Deinterlacer\) - Double-click
VCG_Deinterlacer.exe - On first launch, the First Run Setup window appears and downloads the required tools (~136 MB). This only happens once.
- After setup completes, the main wizard opens automatically.
On all future launches the wizard opens directly with no setup step.
Antivirus blocked the download? Use the Standalone ZIP instead (option 2 in Download) — extract it and run VCG_Deinterlacer.exe from inside the folder, keeping the folder intact. Prefer to compile the EXE yourself or run the .py directly? See the Download section above and BUILD_INSTRUCTIONS.md.
- Launch VCG Deinterlacer from the folder where you extracted it
- Click START on the welcome screen
- Select File — drag and drop or browse for your video file(s)
- Source — confirm format (NTSC/PAL), field order (TFF/BFF), crop settings, and source color matrix (BT.601 auto-selected for SD; BT.709 for HD). Field order and telecine are auto-detected for single files; for multi-file batches auto-detection is disabled (each file may differ) and you set the field order manually
- Trim — output the entire video (default), or keep/cut frame-accurate segments (single file only)
- Y/C Delay — correct horizontal chroma shift if present
- Noise — review the automatic noise analysis (noise score shown) and choose a denoising level
- Dehalo — review the automatic halo analysis (halo score shown) and choose a dehalo level
- Upscale — optionally upscale SD sources with NNEDI3
- Color Cast — review color balance and apply correction if needed
- Levels — review luma levels on the RGB Parade and apply adjustment if needed
- Audio — choose mono-to-stereo mix options if applicable
- Watermark — optionally add a text or logo watermark
- Add Grain — optionally add fine film grain (masks the "plasticky" look of denoised video and prevents banding on YouTube)
- Dithering — leave output dithering at its recommended default, or adjust the method
- Finalize — choose output format, review the plain-language Summary of settings card, and click Process
All Advanced steps (5–15) are optional — the sidebar marks them as such, and the Process Now shortcut after the Source step skips straight to Finalize with safe defaults.
Processing time depends on video length and your CPU. A one-hour VHS capture typically takes 2–4 hours.
| Format | Extension | Best For |
|---|---|---|
| ProRes HQ | .mov | Editing in DaVinci Resolve, Premiere, Final Cut |
| H.264 | .mp4 | Sharing, uploading to YouTube |
| FFV1 | .mkv | Archiving (lossless) |
| DNxHD 115 | .mov | Editing in Avid |
| Source Format | Field Order |
|---|---|
| VHS (most decks) | TFF (Top Field First) |
| S-VHS | TFF |
| Video8 / Hi8 | TFF |
| MiniDV / Digital8 | BFF (Bottom Field First) |
| Betacam | TFF |
If motion looks jerky or stuttery after processing, try switching the field order.
First Run Setup fails to download
- Check your internet connection
- Try disabling your VPN or firewall temporarily
- You can download the tools manually — see the instructions shown in the setup window
The app opens but processing fails immediately
- Delete the
_deps\folder next to the EXE and re-launch to re-run the setup - Check that
_deps\ffmpeg\ffmpeg.exeand_deps\vs\vspipe.exeexist
"Could not load source" error
- Make sure
_deps\vs\plugins64\LSMASHSource.dllexists - Try re-running the setup by deleting the
_deps\folder
Processing is very slow
- QTGMC is CPU-intensive — this is normal
- Close other applications to free up CPU
- Consider reducing the denoising level if enabled
Output video has wrong aspect ratio
- Enable PAR correction in the Source step
- Make sure the correct format (NTSC/PAL) is selected
Audio is missing from output
- Check the Audio step — ensure the correct audio option is selected
- Verify the source file has an audio track using MediaInfo
Every encode runs through a 16-bit VapourSynth pipeline. The source is lifted to 16-bit integer at the very start (fmtc.bitdepth) and all operations — QTGMC, BM3D, FineDehalo, colour cast correction, levels — run natively at that depth with no mid-chain round-trips to 8-bit. 10-bit or non-standard sources are converted to 8-bit YUV at load time before anything else runs.
Optional film grain (AddGrain) is applied at the final resolution — after PAR correction and any NNEDI3 upscale — so the grain stays pixel-fine rather than being enlarged by the upscaler.
At the end, fmtconv error-diffusion dithering (fmtc.bitdepth, dmode=3) converts back to the codec's native depth:
- ProRes HQ → 10-bit (fills the container fully)
- H.264, FFV1, and all other formats → 8-bit
This eliminates the banding in skies, fades, and gradients that is common in tape captures processed through an 8-bit chain.
All output files are tagged with the correct colorspace metadata (BT.601 for SD, BT.709 for HD) in both the VapourSynth frame properties and the FFmpeg container flags — including a setparams filter so the primaries and transfer tags survive the y4m pipe. The in-app video scopes use the same matrix, so scope colors match the actual video signal.
When an SD source is upscaled to an HD size (final height ≥ 720), a real BT.601 → BT.709 pixel conversion runs after the NNEDI3 upscale at full 16-bit precision, and the output is retagged BT.709. This is what HD platforms like YouTube expect, so the upload no longer looks dark and oversaturated. If you keep the original SD size, nothing changes — it stays BT.601.
If a film telecine pattern is detected on a DVD/MPEG-2 source, the IVTC path uses vivtc.VFM field matching (plus VDecimate for NTSC 3:2 only — PAL 2:2 keeps all 25 frames) to reconstruct the original progressive frames instead of running QTGMC.
VCG Deinterlacer uses a conservative QTGMC configuration designed to preserve the original analog character without over-processing:
Sharpness=0.1 (very mild — most presets use 0.2–1.0)
Lossless=2 (preserves original pixels where no MC is needed)
SourceMatch=3 (highest quality source matching)
NoiseProcess=2 (temporal denoise within QTGMC)
Full QTGMC parameter details are available in the app under Help → About VCG Deinterlacer.
See BUILD_INSTRUCTIONS.md for full build instructions.
Quick start:
pip install -r requirements.txt
build_vcg_deinterlacer.bat
Requires Python 3.10+, Visual Studio Build Tools (or MinGW64).
MIT License — see LICENSE.txt for full terms.
This software is free and open source. Third-party components (FFmpeg, VapourSynth, havsfunc) are subject to their own licenses.
| Version | Date | Notes |
|---|---|---|
| 1.8.0 | 2026-10-05 | Film sources are now identified from their picture content: the telecine scan samples several segments spread across the whole file instead of only the opening seconds (so a studio logo or CGI bumper at the head of a film transfer no longer makes it read as video), reads the repeated-field cadence that is the mechanical signature of 3:2 pulldown in addition to the progressive-frame share, and no longer assumes a DV-codec file must be camcorder video — analog-to-DV captures of film are detected correctly; when a film source is found, Frame Rate Mode is ghosted out and the output is the native 23.976 fps (NTSC) / 25 fps (PAL); a new Override detection button (plus Re-scan) lets you force film or video by hand on any source, including batches; and an already-progressive source is now detected and selects the Progressive field order, which skips deinterlacing while every other restoration step still applies — a progressive 1080p file is also labelled HD Progressive (1920×1080p) instead of being announced as 1920×1080i, and 50/60 fps sources pick the right video standard automatically |
| 1.7.9 | 2026-09-11 | New Live Preview window renders the real processed result on any frame before you commit to a full render — with a Before/After toggle (Space), frame scrubbing, and 1×/2×/4× zoom, showing only the steps visited so far; new Frame Rate Mode choice on the Source Details page (double-rate "bob" 59.94/50 fps vs single-rate 29.97/25 fps); output is now stamped with the frame rate the pipeline actually produced, fixing wrong playback speed and audio drift on single-rate and film (IVTC) renders; new Help → Check for Updates; mouse-wheel scrolling now works across the whole page and pages open at the top; output files are version-tagged (e.g. …_VCGD179) |
| 1.7.8 | 2026-09-09 | A failed audio-mux pass can no longer destroy a finished render: on mux failure the truncated file is removed and the intact video-only render is restored (with the audio WAV kept for manual muxing); a pre-flight free-disk-space check skips the mux early if the drive can't hold the second copy; and an ffprobe integrity check verifies the output before declaring success, so a truncated file is now correctly reported as FAILED instead of SUCCESS |
| 1.7.7 | 2026-09-07 | App version now shown prominently on the welcome/splash screen, in accent colour beneath the title, so you can confirm your build at a glance |
| 1.7.6 | 2026-09-01 | Manual field order now locks in and is never overwritten by background auto-detection; auto-detection of field order and telecine disabled for multi-file batches (with an on-screen note), so batch badges no longer hang on "Detecting…"; new plain-language settings summary on the Output & Process page |
| 1.7.5 | 2026-08-30 | Upscaled SD video now gets a real BT.601 → BT.709 pixel conversion when the result is HD-sized, so colours are correct on YouTube |
| 1.7.4 | 2026-08-02 | Choose your own preview frame on the Y/C Delay page; live film-grain preview with 1×/2×/4× zoom; wider, more visible scrollbar; diagnostic log text points to the support email |
| 1.7.3 | 2026-07-08 | Fixed a crash when applying full overscan / manual top-bottom crop to 4:2:0 sources (DVD / MPEG-2 rips) — the vertical crop now runs after deinterlacing |
| 1.7.2 | 2026-07-07 | Fixed PAL encodes failing at the FFmpeg stage (invalid color_trc); output files now carry correct primaries/transfer tags (all formats); fixed a false "reverse telecine" prompt on interlaced PAL; PAL IVTC no longer drops every 5th frame |
| 1.7.1 | 2026-07-06 | 10-bit and non-standard sources auto-converted to 8-bit at load time; Inverse Telecine fixed to work with the 16-bit pipeline (field-match on an 8-bit copy via VFM clip2) |
| 1.7.0 | 2026-07-04 | Sidebar wizard navigation with clickable visited steps; Trim / Segment Export page (keep or cut segments, join or split output); Watermark, Add Grain, and Output Dithering split into separate pages; film grain fixed — correct strength (16× too strong before) and applied at final resolution |
| 1.6.0 | 2026-06-29 | 16-bit pipeline; fmtconv error-diffusion output dithering (auto, ProRes 10-bit); colorspace/matrix tagging (BT.601/BT.709 auto-select); correct scope colors; Source Color Matrix dropdown on Source Details page |
| 1.5.0 | 2026-06-10 | Dehalo page with halo analysis; Watermark page + film grain; BM3D denoising; RGB Parade; quantified analysis scores; sampling notes; reworked comparison video (10 s + 10 s at 300%) |
| 1.4.1 | 2026-06-07 | .MOD file support; 16:9 widescreen PAR fix; crop page recommendation |
| Beta-02b | 2026-04-05 | Fix RGB source support; faster launch via persistent cache dir |
| Beta-02 | 2026-03-28 | Portable ZIP; first-run auto-setup; no installer |
| Beta-01 | 2026-03-23 | Inno Setup installer; manual FFmpeg/VapourSynth install |
| Beta 0.4 | 2026-03-17 | First working installer build |
| Beta 0.2 | 2026-03-09 | Initial release |
VCG Deinterlacer is developed by VideoCaptureGuide — a YouTube channel dedicated to VHS capture, tape preservation, equipment reviews, and analog video restoration tutorials.
Subscribe for tutorials on getting the most out of your tape archive.









