qBlank

Play any console through your capture card. A lightweight, low-latency viewer and recorder for Windows.

Download the latest release Manual Source on GitHub
winget install qBlank coming soon

One file, about 2.7 MB. No installer, nothing written to the registry. Installation guide

~1 msthrough qBlank, arrival to present
1 fileno installer, no dependencies
GPLv3free and open source
qBlank in fullscreen showing a console at 1080p60, with the statistics overlay reading a frame age of 1.2 ms
The viewer in fullscreen. The overlay is not a mock-up — it is qBlank's own statistics panel reporting the source format, the measured rate and, at the bottom, the time a frame spends inside qBlank.

01Nothing between the card and the screen

No queue, no clock, no wait for VSync. What qBlank adds on top of the card itself is about a millisecond, and the overlay shows it.

No queue in the capture path

Frames are copied into a triple buffer and the filter returns at once. Anything arriving faster than it can be shown is dropped, never buffered, so delay cannot accumulate.

No graph clock

The DirectShow graph runs without a reference clock, so nothing is held back waiting for a presentation time.

Tearing allowed

A flip-model swap chain with one frame of queue and VSync off by default — the single biggest lever there is. Direct3D 11 by default, Vulkan as an option, under the same rules.

Conversion on the GPU

YUY2, UYVY, NV12, planar 4:2:0, RGB and P010 are unpacked in a pixel shader. Nothing touches the CPU between arrival and drawing.

Nothing waits on a disk

Saving settings and screenshots, asking the drive for space, listing devices, opening folders: each area has a thread of its own. No frame waits on a disk or a driver, and no area waits on another.

And it shows you the bill

The overlay times the stretch qBlank is answerable for: from a frame arriving to the present that hands it over, with upload, deinterlacing, filters and scaling inside. What the card does before and the screen after is not folded in.

02Record, capture, pass it on

For any DirectShow device: HDMI and analogue cards, USB dongles, webcams.

Recording

H.264, H.265 or AV1 through NVENC, Quick Sync, AMF, x264 or x265. The audio is the master clock, so the output is constant frame rate and does not drift — measured at 1 ms over 15 seconds. The free space on the drive is shown as the recording time it is worth, and a recording stops itself before the drive fills up. If the encoder cannot keep up, a notice says so.

Encoder controls

Rate control, preset, tuning, look-ahead, adaptive quantisation and multipass, under one set of names translated into each vendor's own.

Audio

The card's own audio or any Windows recording device, out through WASAPI, with clock drift corrected on the fly. A microphone can go on a track of its own in the recording, and is never played back.

Screenshots

PNG or JPEG at source resolution through Windows Imaging Component, so no ffmpeg is needed. JPEG XR keeps the HDR range and needs none either; AVIF does. A switch grabs the finished window instead, interface and all, and Ctrl+F10 puts the shot on the clipboard rather than on disk.

Virtual camera

Offer the picture to OBS, Discord or a browser at the source's own resolution and frame rate — and to anything that cannot take that, at whatever it asks for instead.

High dynamic range

PQ and HLG are decoded to linear light, tone mapped with BT.2390 for an ordinary screen or passed through as scRGB for an HDR one.

Profiles

Device, input, capture format and every picture and audio setting, one per source, on Ctrl+1 to Ctrl+9 — or on none at all: a profile can name the video standard that means it, and the standard the search settles on then picks the profile.

03Set up while you watch

Every setting takes effect on the next frame, so it is judged on the picture rather than from memory. Where a value is easier to see than to type, it is set on the picture itself.

A GameCube title screen split down the middle by a white line: the filters off on the left half, on on the right
F12 splits the live picture, filters off on one side and on on the other — vertically or horizontally, chosen in the right-click menu. The divider can be dragged, and F11 holds the source still.
The crop editor: white handles on all four edges of the picture and a toolbar with the four values, the resulting size, Apply and Cancel
The crop is dragged on the running picture, and F8 finds the border by itself — measured across two seconds, so a fade to black is not read as the picture shrinking. Kept per picture size.

A settings window of its own

On its own graphics device, so it can sit on a second monitor while the picture runs on the first. Controls that cannot apply to the source are absent rather than greyed out.

Found, not scrolled to

Ctrl+F finds any setting, through typos and the names other programs use. A right click puts a slider back to its default.

Colour range, measured

Full or limited is read off the picture rather than inferred from the pixel format, with the numbers behind the verdict on show. F6 measures again, for the one thing that changes without touching the format: an option in the card's own driver.

All filters off

Shift+F12 shows the signal as it arrives, with deinterlacing, crop and aspect kept — the quick answer to whether a filter is the problem.

A window that fits

1×, 2× or 3× the source from the right-click menu, and Shift keeps the shape while resizing. Borderless keeps its taskbar button and Snap; a red dot on that button says it is recording.

Quick actions in the tray

An optional icon with the actions you pick — recording, screenshots, folders, profiles — in the same menu style as everything else. Start menu and desktop shortcuts are a button away.

And for analogue consoles

An analogue source needs more than a viewer usually offers. qBlank finds the video standard, deinterlaces, cleans up composite and can put the scanlines back — all in real time.

04It cleans up composite

Composite carries colour and brightness on one wire and they leak into each other. Most viewers leave that alone. qBlank removes it in real time, and the numbers behind every setting were measured on real hardware rather than guessed.

The same GameCube frame over composite: filter off on the left, dot crawl beading along every letter edge and across the colour bars, the average of what stands still on and clean on the right
A GameCube over composite at 576i, filter off and on. The crop was not chosen by eye — it is where the measured difference between the two frames is largest across the parts of the picture that stand still.
HalfWhat it doesWhat it costs
Extended historyLooks twelve frames back and takes the dot crawl out of every frame before the rest reads it, also where something moves or fades: around text, in transparencies. Where the crawl repeats every two or four frames: PAL, PAL 60, PAL M, PAL N, NTSC.GPU time, no frame of delay.
Average what stands stillCancels dot crawl wherever the picture stands still, averaged over the crawl cycle measured for the source. Four frames for PAL — measured 1.91, 2.62, 1.90 and 0.78 at lags of one to four — two or three elsewhere.Nothing at all.
Synchronous demodulatorReconstructs the subcarrier out of the brightness and subtracts it, so moving content is covered too. Removes 81 % of the pattern at a window of nine samples.17 % of horizontal sharpness.
The two are told about each other: the averaging reports how much of the job it did, and the demodulator only handles the rest. Turning both up used to make the picture worse than either alone.
A GameCube title screen under F12, magnified across the divider: the logo and the lettering beaded with dot crawl on the left half, clean on the right
A title screen under F12, close up across the divider. This is where dot crawl shows worst: large flat colour against a hard edge, standing still long enough for the crawl to walk through it. Left of the line is what the cable delivers.
The Composite filter section of the settings: colour shimmer, the average of what stands still with its conditions, the demodulator at step 9 of 9 and restore bandwidth
The section that does it. Under the demodulator is the reading it is working to: 81 % of the pattern gone for 17 % of the sharpness at a window of nine samples.

05Five deinterlacers, and it measures which you need

Whether a source is interlaced is measured from the picture, not read from the media type — a media type is entitled to say so and frequently does not.

Left: a kart driving past a 480i barrier, woven, the chevrons torn into interlacing combs. Right: the same moment through YADIF, clean
480i from a GameCube, the same moment in two runs of one replay. Left, weaving: combing on everything that moves. Right, YADIF. A 240p or 288p console whose fields hold the same lines is detected separately and handled without interpolation at all.
The Fields section of the settings: Only apply to interlaced sources, the reading Measured: interlaced, YADIF and the field order
Measured: interlaced is the reading, not the media type — so the deinterlacer can stay on while a 240p console is plugged in: it only runs where the measurement says it is needed.

06It works out the video standard on its own

An analogue decoder has to be told whether it is looking at PAL, NTSC or SECAM, and getting it wrong costs you either the picture or the colour. Leave it on automatic and qBlank finds it — and keeps finding it, so switching a console between 50 and 60 Hz needs nothing from you.

The card is only half the answer

All a decoder reports is whether it has locked, and that is about line frequency. PAL 60, NTSC M, PAL M and NTSC 4.43 all lock on the same 525 lines, and it reports the wrong one just as confidently.

So the picture decides

The candidates are compared on what they actually produce: how much colour there is, and whether black stays black. Decoding PAL as SECAM does not give a grey picture — it gives a bright red one where black should be, and that is what the second measurement catches.

Two seconds, from wrong to confirmed

Measured against a GameCube at 60 Hz, starting from a deliberately wrong standard: 1.7 to 2.4 seconds. The list is walked quickly first and patiently only if that finds nothing, so a console switched between 50 and 60 Hz is over in a fraction of the time.

Two standards on one carrier

PAL 60 and NTSC 4.43 carry colour at the same frequency and differ only in that PAL reverses the phase every other line. The wrong one of the pair does not decode nonsense — it decodes less, so counting colour rewards it for the omission. qBlank measures the reversal itself instead, and drops the standard that fights the signal.

Or ask it yourself

F7 runs both stages again on the picture in front of you — the one case the automatic search cannot see, because colour that is wrong is still colour. It takes under two seconds, and it tells you what it found either way.

And the format follows from it

A card advertises the same format list whatever is plugged into it. Once the standard is known the raster is too, so the resolution offered by default matches what really arrives instead of upscaling a console to 1080p inside the card — and the rate list gains the signal's rate: 50 under PAL, 59.94 under NTSC, a flat 60 under PAL 60.

It knows when not to guess

A comparison needs a picture to compare on. If the scene moves during the round, or the screen is essentially black, the round is thrown out rather than believed — a wrong answer held confidently is worse than waiting a moment.

07And it can put the cathode ray tube back

240p artwork was drawn for a display that had gaps between its lines and a coloured mask over its phosphors. On a flat panel the absence of both is itself a distortion. Off by default, and display only — a recording takes the picture from upstream of this pass.

Left: the Super Mario World title screen at 240p, magnified six times. Right: the same picture with scanlines at 0.35, a dark gap between each pair of picture lines
A 240p console in a window six times its height. The gaps follow the source's line grid, not the screen's, and the brightness lost to them is put back — the slider changes structure, not exposure. Below twice the source height there is nowhere to put a gap, and rather than doing nothing quietly the control says so, with the figure it is working from.

Say what the console draws

A card that starts at 720p, or a dongle with a scaler of its own, hands over 1080 lines from a console that drew 480 — and nothing in the picture says reliably which number is real. Source lines is where you say it: 240 and 288 for a 60 or 50 Hz SNES, Mega Drive, PS1 or N64, 480 and 576 for a GameCube, PS2, Dreamcast or Wii. PAL 60 is the odd one — NTSC's raster at PAL's colour.

Then the gaps land where they belong

The declared count becomes the number of output rows per real picture line, which is where a scaled capture stops being a problem: 1080 lines from a 480-line console is 2.25 rows each, and the scanlines sit on the lines the console actually drew rather than on the ones the scaler invented.

Three panels magnified to the pixel: mask off, an aperture grille with its vertical stripes, and a shadow mask whose triads step sideways every other row
Magnified to the pixel, because a triad is three of them. An aperture grille is vertical stripes, the way a Trinitron worked; a shadow mask steps its triads sideways every other line. Both stop at half strength — past that the brightness compensation has to lift the peak far enough to clip the channels apart from one another, and what arrives is a colour cast rather than a stronger effect.
The Cathode ray tube and Colour sections of the settings: source lines, scanlines and mask, and under them the range and matrix with the measurement they were taken from
Three controls, and directly under them the colour range — measured from the picture rather than assumed from the input: full range, 53.41 % of the samples below 16, and a line saying what that means for an analogue source.
Both pictures were made by running the shader's own Scanline() and Mask() over a still, rather than photographed off the screen: the effects are display-only by design, so a screenshot taken inside qBlank does not contain them.

08It finds the console's pixels

A card samples a line 720 times; a SNES drew 256. Tell qBlank the Source width, and it measures where each console pixel lies in the picture and draws it as one block. On an analogue source it also rebuilds each pixel from the samples the card blurred across it, and if the width is not set, it notices pixel art and suggests the width.

Left: the Super Mario World logo from a PAL SNES over composite, snapped to the native pixel grid in qBlank 5.6.0, outlines grey and colours bleeding. Right: the same frame in 5.7.0, black outlines and one colour per letter
A PAL SNES over composite, the same frame in 5.6.0 and 5.7.0. The grid used to be assumed; now it is measured, and the edge the card smeared over two or three pixels is put back on one.
Left: the copyright line in 5.6.0, blurred and in many shades of blue. Right: 5.7.0, one cyan with a black outline
The card desaturates by position, so one colour arrives as many. Pixels of the same brightness and hue are made one colour again — at no cost in latency.

09What it is not

Scenes, overlays, compositing and streaming are not here and are not planned. For those, use OBS — and note that a card grants its capture pin to one process at a time, so the two cannot hold the same card at once.

Requirement
Windows 10 or laterthe virtual camera installs with one UAC prompt
A DirectShow capture devicealmost every card, including USB ones
ffmpegfor recording and AVIF screenshots, fetched and kept current by a button