FocusCheck

FocusCheck

Scan. Score. Select. Recover. Keep the sharp. Drop the rest.

Free Forever Offline RAW Support EXIF Blur Detection Batch Recovery Contact Sheet Split Compare 7 Languages Windows · Mac · Linux

Download

🪟
Windows
Windows 10 / 11 · 64-bit
Download .zip
🍎
Mac
macOS 11+ · Apple Silicon & Intel
Download .zip
🐧
Linux
Ubuntu 20.04+ · Debian · Arch
Download .zip

How It Works

sharp/
In focus. Keepers. Ready to edit. Recovered images land here too.
🔧
fixable/
Soft but worth recovering. The recovery panel opens automatically for these.
🗑
rejected/
Too soft to rescue. Try recovery first — then delete the whole folder in one click.

Your originals are never touched. Everything is copied. You decide what to remove.

EXIF Blur Detection

Motion blur ≠ focus error

Most culling tools treat all soft images the same. FocusCheck reads the shutter speed from your EXIF data and applies a different recovery strategy depending on what actually caused the softness.

Motion Blur
Shot at 1/250s or slower. The subject moved faster than the shutter. FocusCheck uses directional edge enhancement — better suited to recover movement smear than a radial filter.
Focus Error
Shot at faster than 1/250s. The subject was still but the focus missed. FocusCheck uses radial unsharp mask — the right tool for pulling detail back from a soft focus plane.

Shutter speed and blur type shown in the info bar for every image. List shows 〜 for motion · ⊙ for focus.

Features

🗂
Contact Sheet Selection
Sharp images copy automatically. Fixable and rejected go to a tap-to-select grid first. An image can be technically recoverable but still be a bad photo — wrong moment, bad composition. Deselect it. Only what you choose gets copied. Storage saved before it's ever used.
Auto-Calibrated Thresholds
No fixed global number. FocusCheck scores your whole folder first, then sets sharp / fixable / rejected thresholds relative to your actual shoot. A dark arena shoot and a bright outdoor shoot are judged on their own terms.
🎚
Laplacian-Guided Recovery
The recovery strength slider is pre-set from the score deficit — how far below the sharp threshold this image sits. Three tiers: Gentle · Medium · Strong. Each driven by the actual numbers, not a guess.
Split Compare
Left half original · right half recovered · white divider. Judge instantly whether the recovery helped or added noise before you commit to saving.
Batch Recovery
Apply recovery to all fixable images in one click. Each image uses its own score-calibrated parameters. Runs in the background — UI stays live.
👁
Preview Before Commit
Preview recovery on the full image before saving. Then switch to Split Compare for side-by-side judgment. Apply only when you are satisfied.
📁
Open Results Folder
One button opens FocusCheck_Results/ in your file manager. Drag your sharp/ folder straight into your editor. No hunting through the original folder.

The Workflow

1
Open your shoot folder
FocusCheck scores every image. Auto-calibrates thresholds to this shoot. Copies everything into sharp / fixable / rejected.
2
Review fixable images
Auto-jumps to first fixable. Recovery panel is pre-loaded with the right strength and strategy for each image based on its score and EXIF data.
3
Preview · Split · Apply or Batch
Preview individually. Use Split Compare to judge. Apply one at a time or hit Batch to process all fixable images at once.
4
Delete rejected in one click
Delete All Rejected wipes the rejected folder. Space freed instantly.
5
Open Results Folder — start editing
Your sharp/ folder contains keepers and recovered images. Open it straight from FocusCheck and drag into LocalShot, LocalRAW, or any editor.

Run from Source

Dependencies

opencv-python
Laplacian variance scoring
Required
Pillow
Image loading, preview, recovery, EXIF reading
Required
rawpy
RAW format support — CR2, NEF, ARW, DNG, RAF, ORF, RW2, CR3
Optional
# Required
pip install opencv-python Pillow

# Optional — enables RAW support
pip install rawpy

# Run
python focus_check.py

Python 3.8+ · tkinter included in standard Python

Available Languages

7 languages. Built in.

Switch language from the topbar. Arabic switches the interface to right-to-left automatically. No restart required.

🇺🇸 English 🇪🇸 Español 🇫🇷 Français 🇵🇹 Português 🇸🇦 العربية 🇨🇳 中文 🇮🇳 हिन्दी

ImageStream Local Suite

Tool What it does
🎵 LocalBeatAudio preparation — record, layer, mix offline
📸 LocalShotImage editor — tone, color, crop, dehaze, sharpening
✂️ LocalClipVideo clipping and trimming
🎬 LocalEditVideo editor
📷 LocalRAWRAW image processing
🔍 FocusCheckSharpness culling, EXIF blur detection, recovery
🌸 BokehProStudioCreative and editorial bokeh simulation
📚 DarkroomSQL and Python crash courses — photography dataset

All tools are free forever · All run offline · No subscriptions · No accounts · No tracking