Bloom is a fast, lightweight media viewer with GPU-accelerated rendering and a wide range of supported formats, from everyday JPEGs to camera RAW, HDR, scientific formats, animation, and video. It also includes a set of light, non-destructive editing tools for quick adjustments. It is a viewer first and not a full editor, focused on doing the simple things well.
- GPU rendering: hardware-accelerated via wgpu, with mipmaps and tiled textures for images beyond GPU limits
- Broad format support: dozens of image formats plus animation (GIF, APNG, WebP) and video (MP4, MOV, MKV, WebM, and more) with audio, scrubbing, and frame stepping
- Non-destructive modifiers: 22 stackable effects, from color correction (levels, exposure, vibrance, and more) to blur (Gaussian, motion, radial), halftone, grain, and pixel sort at any angle
- Draw and text tools: paint freehand brush strokes and place text directly on the canvas
- Export: PNG, JPEG, or WebP with crop, rotation, and modifiers applied
- Gallery: browse every image in a folder, and open files by drag and drop or clipboard paste
- Info panel: dimensions, EXIF, RGB histogram, and pixel color under the cursor
- Themes: 22 built-in, including Catppuccin, Tokyo Night, Nord, and Gruvbox
- Customizable keybindings: rebind any action in preferences
| Format | Extension | Notes |
|---|---|---|
| Animated PNG | .apng | Animated |
| Apple Icon | .icns | Largest available size |
| BMP | .bmp | |
| DDS | .dds | BC1–BC7 and uncompressed |
| DICOM | .dcm .dicom | Medical imaging, first frame |
| EPS / PostScript | .eps .ps .epsf | Requires Ghostscript on PATH |
| Farbfeld | .ff | |
| FITS | .fits .fit .fts | Astronomy imaging; linear normalized to greyscale |
| GIF | .gif | Animated |
| GIMP | .xcf | Layers composited top-to-bottom |
| HDR (Radiance) | .hdr | Tonemapped (Reinhard) |
| HEIC / HEIF | .heic .heif | In default/-heif downloads; --features heif from source |
| ICO | .ico | Largest available size |
| JPEG | .jpg .jpeg | |
| JPEG 2000 | .jp2 .j2k .j2c .jpx | |
| JPEG XL | .jxl | |
| Krita | .kra | Merged composite, no layers |
| KTX2 | .ktx2 | Basis Universal and uncompressed |
| OpenEXR | .exr | Tonemapped (Reinhard) |
| Photoshop | .psd .psb | Merged composite, no layers |
| PNG | .png | |
| Portable bitmap | .pbm .pgm .ppm | |
| QOI | .qoi | |
| RAW | .ari .arw .cr2 .cr3 .crm .crw .dcr .dcs .dng .erf .fff .iiq .kdc .mef .mos .mrw .nef .nrw .orf .ori .pef .qtk .raf .raw .rwl .rw2 .srw .x3f .3fr | Camera RAW; not all models supported |
| SVG | .svg .svgz | Rasterized at native size |
| TGA | .tga | |
| TIFF | .tif .tiff | No 64-bit float |
| Video | .mp4 .m4v .mov .mkv .webm .avi .mpg .mpeg .ts .m2ts .wmv .flv | Playback with audio; in the default download or --features av from source |
| WebP | .webp | Static and animated |
Prebuilt releases come in three flavors per platform. Pick based on which formats you need:
| Download | Includes | Size |
|---|---|---|
bloom-<platform> |
Everything, including HEIC/HEIF and video | Largest |
bloom-<platform>-heif |
Core formats + HEIC/HEIF, no video | Smaller |
bloom-<platform>-minimal |
Core formats only | Smallest |
Video is the bulk of the size (it bundles FFmpeg), so grab -heif or -minimal if you don't need it.
The feature flags below only matter when building from source. Prebuilt downloads above already include them.
cargo build --releaseFor HEIC/HEIF support, install libheif and build with the feature flag:
# macOS
brew install libheif
# Linux
sudo apt install libheif-dev # Ubuntu/Debian
sudo dnf install libheif-devel # Fedora
sudo pacman -S libheif # Arch
cargo build --release --features heifFor video playback, the ffmpeg-next bindings link against FFmpeg. A helper script installs it:
# macOS / Linux
./scripts/setup-av.sh
# Windows (PowerShell): downloads a prebuilt FFmpeg into vendor/ and sets FFMPEG_DIR
./scripts/setup-av.ps1
cargo build --release --features avOn macOS and Linux the script installs the FFmpeg dev libraries via your package manager. On Windows it fetches a prebuilt FFmpeg into vendor/ffmpeg and installs LLVM. Open a new terminal afterward so the environment changes take effect.
Requires a GPU with WebGPU support. On Windows, DX12 is used by default.
Bloom is entirely local. No telemetry, no analytics, no network requests — ever. Your files stay on your machine.

