Fast. Native. Private. Minimal.
A lightweight and secure image viewer for Windows, built with native Win32 and modern C++.
Designed to open everything from small PNGs to large RAW and HDR images without unnecessary bloat.
Β Β Β Β Β Β Β
For the ultra-minimal legacy build, try the stripped 21 KB executable.
- β Native Win32 application
- β No telemetry
- β No external runtime dependencies
- β No installer required for portable builds
- β Lightweight executable size
- β Fast startup and low memory usage
- β Supports common image formats through Windows Imaging Component
- β Designed for privacy-focused local image viewing
| Feature | Minimal Image Viewer | Windows Photos | IrfanView / XnView |
|---|---|---|---|
| Executable Size | ~500 KB | ~50 MB+ | ~3β5 MB+ |
| Telemetry / Network | None | Yes | Optional |
| Portable | Yes (.ini) | No | Partial |
| Deep Zoom | Yes (GPU streaming) | Limited | No |
| RAW Preview Optimization | Yes | Limited | Plugin-based |
| SVG Support | Yes (native GPU) | No | Limited |
| HDR / QOI Support | Yes | No | Partial |
| Startup Speed | Instant | Slow | Moderate |
| Open Source | Yes | No | No |
Supports a wide range of formats using WIC + custom decoders:
- Standard: JPEG, PNG, BMP, GIF, TIFF, ICO, WebP
- Modern: HEIF, HEIC, AVIF
- RAW (Camera): CR2, CR3, NEF, DNG, ARW, ORF, RW2 (via codecs)
- Advanced Formats:
- SVG (Vector rendering, GPU-accelerated)
- HDR (.hdr Radiance with tone mapping from nothings)
- QOI (Quite OK Image
- TGA, PSD, PPM, PGM, PBM, PNM
- Full animated image playback
- Correct frame timing + disposal behavior
- Interactive controls:
Spaceβ Pause + step framesShift + Spaceβ Resume playbackShift + β / ββ Previous / Next frameShift + β / ββ Jump to first frame
- Smooth zoom (
Ctrl + Mouse Wheel,Ctrl +/-) - Cursor-centered zooming
- Click + drag to pan
- Fit to Window (
Ctrl+0/ double-click / middle mouse button) - Actual Size (
Ctrl+*/ middle mouse button) - Custom zoom dialog (
Ctrl+Shift+Z) - Instant next / previous image navigation
- Use arrow keys, customizable keys, mouse cursor on sides of screen, mouse buttons, or right click + scroll
- Asynchronous image loading β no UI blocking
- Directory preloading β instant browsing
- Deep Zoom (GPU-assisted):
- Downscaled preview for huge images
- Full resolution streamed only when needed
- RAW preview extraction:
- Loads embedded previews (fast)
- Falls back to full decode only when necessary
- Automatic directory scanning
- Navigate all images in current folder
- Sort by:
- Name
- Date Modified
- File Size
- Ascending / descending sorting
- GPU rendering via Direct2D + DXGI
- Smooth scaling (toggle interpolation)
- Optional fade transitions
- Background modes:
- Grey (default)
- Black
- White
- Checkerboard transparency
- Automatic dark/light title bar
-
Note, OCR and Color Picker were moved to dedicated utilities.
- Very light OCR tool: MiniSnip
- Extremely light 20 kb colorpicker: minimal color picker
-
Crop Tool
Cβ Enable crop- Drag selection
Enterβ ApplyEscβ Cancel
-
Resize Tool
- Custom dimensions
- Aspect ratio lock
- High-quality scaling (Fant)
-
Transformations
- Rotate (90Β° increments)
- Flip horizontal
- EXIF auto-rotation on load
-
Undo System
Ctrl+Z- Memory-safe multi-step history
- Built-in EXIF + file metadata parsing
- Toggle OSD (
I) showing:- Format, resolution, DPI
- File size, attributes
- Camera data (ISO, aperture, exposure)
- Author / software
- Open (
Ctrl+O) or drag & drop - Save (
Ctrl+S) with atomic overwrite - Save As (
Ctrl+Shift+S) - Resize + save new file
- Delete (Recycle Bin safe delete)
- Clipboard support:
- Copy image path
- Paste images from clipboard
- Open file location instantly
- Auto-refresh mode
- Detects file changes on disk
- Reloads safely when modified externally
- Fully customizable keybindings
- Portable
.iniconfig - Preferences include:
- Always on Top
- Start Fullscreen
- Single Instance enforcement
- Background color
- Smooth scaling toggle
- Fade animation toggle
- OSD toggle
- Default zoom mode
- Language: C++20
- Platform: Native Win32 (no frameworks)
- Rendering:
- Direct2D (GPU)
- DirectWrite (text)
- DXGI swap chain
IWICBitmapDecoderβ load imagesIWICFormatConverterβ normalize formats
Editing pipeline (non-destructive):
- Flip/Rotate β
IWICBitmapFlipRotator - Crop β
IWICBitmapClipper - Resize β
IWICBitmapScaler - Convert β
IWICFormatConverter
- Frame-based decoding using WIC metadata
- Custom compositor:
- Handles disposal modes
- Maintains frame buffers
- Timer-driven playback system
- Large images downscaled (~4K working size)
- High resolution streamed dynamically using:
ID2D1ImageSource
- Prevents VRAM spikes and improves responsiveness
- Background threads for:
- Image decoding
- Directory scanning
- Preloading images
- UI thread synchronized via
WM_APPmessages
- Full file read (avoids file locks)
- RAW/TIFF preview extraction
- Native codec downscaling when possible
- CPU fallback scaler when needed
-
SVG
- Rendered via
DrawSvgDocument(GPU)
- Rendered via
-
HDR
- Decoded via
stb_image - Tone-mapped to display space
- Decoded via
-
QOI
- Decoded via embedded
qoi.h
- Decoded via embedded
-
Settings stored in: minimal_image_viewer_settings.ini
-
No registry usage
-
Fully portable between systems
- Atomic saves (temp file replacement)
- Recycle Bin deletion (recoverable)
- Memory-limited undo stack
- Large image safeguards
Do one thing extremely well.
Minimal Image Viewer is built to be:
- β‘ Fast
- π§ Smart
- π Private
- π¦ Tiny
- π§© Complete
No telemetry. No dependencies. No bloat.
Just a powerful, minimal image viewer for Windows.
Disclaimer: This readme was redone by CoPilot to add flashy icons and dumb advertisement/SEO language.