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: 26 stackable effects, from color correction (levels, exposure, vibrance, and more) to blur (Gaussian, motion), halftone, grain, pixel sort at any angle, and geometry (crop, resize, trim)
- 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.
Builds are published for Windows x86_64, Linux x86_64 and Apple Silicon macOS. Intel Macs are not covered yet, so those need a build from source.
The feature flags below only matter when building from source. Prebuilt downloads above already include them.
cargo build --releaseFor HEIC/HEIF support, the libheif-rs bindings link against libheif. A helper script sets it up:
# macOS / Linux
./scripts/setup-heif.sh
# Windows (PowerShell): builds libheif via vcpkg into vendor/ and sets VCPKG_ROOT
./scripts/setup-heif.ps1
cargo build --release --features heifOn macOS the script installs libheif with Homebrew. On Linux it checks for libheif and tells you the package to install if it is missing:
sudo apt install libheif-dev # Ubuntu/Debian
sudo dnf install libheif-devel # Fedora
sudo pacman -S libheif # ArchOn Windows it clones vcpkg into vendor/vcpkg, builds libheif from source, and sets a persistent VCPKG_ROOT. Open a new terminal afterward so the environment changes take effect.
For video playback, the ffmpeg-next bindings link against FFmpeg. A helper script sets it up:
# 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 the script installs FFmpeg with Homebrew. On Linux it checks for the FFmpeg dev libraries and tells you the package to install if they are missing:
sudo apt install libavformat-dev libavfilter-dev libavdevice-dev libclang-dev # Ubuntu/Debian
sudo dnf install ffmpeg-devel clang # Fedora
sudo pacman -S ffmpeg clang # ArchOn 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.

