You're an aviation photographer who just returned from RIAT or spent a day at the Mach Loop. You took thousands of RAW shots of fast jets, helicopters, and flybys — and now you're facing the real challenge:
- You want to sort through all your photos and identify the best shots.
- Tools like Lightroom or Capture One are powerful, but importing and checking each image is time-consuming.
- The default Windows Photos viewer lets you browse, but:
- It's clunky with RAW files.
- You have to zoom in manually to check sharpness.
- There's no easy way to filter out blurry images.
I've been there myself — I still haven't finished editing my 500GB of RIAT 2024 photos because of how tedious this process is. That frustration is exactly what inspired me to build RAWviewer.
RAWviewer is a lightweight, focused image viewer built specifically for photographers who shoot a lot — especially in aviation, wildlife, or sports.
- Instant file previewing: No import steps — just drag & drop.
- Zoom in with a single key to check sharpness immediately.
- Stay in zoomed mode while browsing with arrow keys.
- Quickly remove blurry photos from the queue with
↓(moves them to a discard folder). - No complex controls to memorize — just the essential keys to move fast.
This is a pre-filtering tool, letting you go through hundreds of RAW files efficiently before committing to editing them in Lightroom or Photoshop.
RAWviewer is a fast, modern, cross-platform image viewer for Windows and macOS, built with PyQt6. It supports advanced zooming, panning, and direct file association, allowing RAW files to be opened with a double-click.
- Cross-platform support: Windows and macOS
- Ultra-Fast Performance: Fast folder scanning and loading using optimized algorithms
- Smart Prefetching: Predictively loads relevant images in the background for zero-latency navigation
- Gallery View: Justified grid layout with virtualized rendering for smooth scrolling through massive collections
- Wide RAW format support: Canon (CR2, CR3), Nikon (NEF), Sony (ARW), Adobe DNG, and many more
- RAW preview fallback: If LibRaw cannot decode a file, the app tries to recover an embedded JPEG from the file bytes (thumbnail and on-screen preview where possible)
- Robust Orientation Handling: Definitive fixes for Sony ARW and other RAW formats, ensuring images are always displayed upright
- Pillarbox-Free Gallery: Accurately calculates aspect ratios to prevent black bars in the gallery view
- Intuitive navigation: Keyboard shortcuts, mouse controls, and scroll wheel support
- Zoom functionality: Fit-to-window and 100% zoom modes with smooth panning
- File management: Move images to discard folder or delete permanently
- EXIF data display: View camera settings, focal length, ISO, aperture, and capture information with robust metadata extraction
- Session persistence: Remembers your last opened folder, image, and view mode
- Portable executable: No Python installation required for users
- Modern UI: Material Design 3 aesthetics with Font Awesome icons (via qtawesome) and non-intrusive loading indicators
- Histogram overlay: RGB and luminance histogram in single-image view (press H to show or hide; drag the card to reposition)
- Download the latest release from the Releases Page
- Download
RAWviewer.exedirectly (no zip extraction needed) - Double-click
RAWviewer.exeto launch - Optional: Create a desktop shortcut or pin to taskbar
- Download the latest release from the Releases Page
- Download and extract
RAWviewer.app.zip - Drag
RAWviewer.appto your Applications folder - Double-click to launch from Applications or Launchpad
- First launch: Right-click → "Open" if blocked by Gatekeeper
Single-image view
- Space: Toggle between fit-to-window and 100% zoom
H: Show or hide the histogram overlay- Gallery ↔ single: Use the Gallery button on the status bar, or click a thumbnail in the grid to open single-image view
Esc: Return to Gallery View (from single-image view)←/→: Previous / next image↓: Move current image to Discard folder- Delete: Delete current image (with confirmation)
i(status bar): Hover for a shortcut summary tooltip
Gallery view
↑/↓: Scroll the thumbnail grid (when the main window handles the key)- Discard / delete / image navigation shortcuts apply only after you open an image in single view.
- Double-click: Toggle zoom mode
- Click and drag: Pan image when zoomed in
- Drag and drop: Open images or folders
- Scroll Wheel (fit-to-window): Navigate images - Scroll down = previous, Scroll up = next
- Scroll Wheel (zoom mode): Pan image vertically
- Horizontal Wheel (zoom mode): Pan image horizontally (left/right)
- Scroll Wheel (Gallery View): Scroll through the image grid
- Canon: CR2, CR3
- Nikon: NEF
- Sony: ARW
- Adobe: DNG
- Olympus: ORF
- Panasonic: RW2
- Fujifilm: RAF
- Hasselblad: 3FR
- Pentax: PEF
- Samsung: SRW
- Sigma: X3F
- And many more supported by LibRaw
- JPEG:
.jpg,.jpeg - PNG:
.png - WebP:
.webp - TIFF:
.tif,.tiff - HEIF / HEIC:
.heif,.heic(depends on Qt image plugins on your system)
- Python 3.9 or higher (required by NumPy 2.x)
- pip (Python package manager)
Option 1: Using batch script (recommended)
# Run the automated build script
build_windows.batOption 2: Manual build
# Activate virtual environment (if using one)
rawviewer_env\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Build executable
python build.py# Run the automated build script
./build_macos.shAll dependencies are listed in requirements.txt:
- PyQt6 >= 6.6.0
- rawpy >= 0.25.0
- numpy >= 2.0.0
- Pillow >= 10.0.0
- send2trash >= 1.8.0
- pyinstaller >= 6.0.0
- natsort >= 8.4.0
- exifread >= 3.0.0
- psutil >= 5.9.0
- pyqtgraph >= 0.13.0
- qtawesome >= 1.2.0
- "Windows protected your PC": Click "More info" → "Run anyway"
- Antivirus warnings: Add RAWviewer to your antivirus exclusions
- Performance issues: Try running as administrator
- AttributeError with stdout: This is normal for windowed builds - the application runs without a console window
- "App is damaged" error: Go to System Preferences → Security & Privacy → Allow
- Gatekeeper warnings: Right-click the app → Open → Open anyway
- Performance issues: Grant Full Disk Access in Privacy settings
We're continuously working to improve RAWviewer. Here are some features planned for future releases:
- Batch Operations: Select and process multiple images at once
(RGB / luminance histogram overlay in single-image view is already available — press H, or drag the card to reposition.)
- Newer camera models: Support for the latest camera releases may be limited due to LibRaw library compatibility
- Proprietary RAW formats: Some manufacturers' newest RAW formats may not be fully supported immediately after camera release
- Firmware updates: Camera firmware updates may introduce RAW format changes that require LibRaw updates
- When decode still fails: If there is no usable embedded preview, you will see a Load Error for that file until LibRaw (or the file) is supported
RAWviewer uses a modern, optimized architecture:
- ImageLoadManager: Manages all image loading tasks using a thread pool and priority queue
- UnifiedImageProcessor: Handles all image types (RAW, JPEG, TIFF, etc.) with a unified interface
- Smart Caching: Efficient image and thumbnail caching for faster navigation
- Thread Pool: Reuses threads to avoid creation/destruction overhead
- Event-Driven: Permanent signal connections for better performance
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
If you encounter any issues:
- Check the troubleshooting section above
- Search existing GitHub issues
- Create a new issue with detailed information about your problem
If you find RAWviewer useful and it's become part of your workflow, feel free to buy me a coffee ☕ or chip in to help fund my RIAT tickets for next year
Enjoy viewing your RAW photos with RAWviewer! 📸