nomacs is a free, open source photo & video editors project written in C++ and released under GPL-3.0. It has 3,174 GitHub stars, 203 forks and 337 open issues, and was last pushed 12 days ago. On this registry it ranks #21 of 22 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is nomacs?

nomacs is a free, open-source image viewer written in C++ and released under the GPL-3.0, built for anyone on Windows, Linux, FreeBSD, Mac, Haiku, or OS/2 who needs to open and inspect common images as well as RAW and PSD files on the desktop.

What it is

nomacs is a native desktop image viewer distributed as a Qt application and compiled from C++ source. It lives in the Qt6 ecosystem on Linux and Unix, where the build requires Qt Core, Concurrent, Network, PrintSupport, SVG, Widgets, and Core5Compat, and it depends on a set of optional third-party libraries for extended format support: LibRAW, LibTiff, Quazip, and OpenCV. The project is listed in this registry under Miscellaneous / Photo & Video Editors, and its topic list names avif, image-viewer, jpeg-xl, jpegxl, nomacs, opencv, photo-editor, and picture-viewer.

The concrete problem it solves is format reach. A general-purpose lightweight picture viewer generally stops at the everyday web and camera formats, while nomacs is documented as supporting all common image formats including RAW and PSD images, plus multi-page TIFF through LibTiff and archive-borne images through Quazip. That means a user can review a RAW capture or a layered PSD without switching to a separate application or converting files first. The same binary therefore serves as the default picture viewer and as the quick inspection tool that opens what the operating system's own preview cannot.

Key capabilities

  • Views common image formats including RAW and PSD images, per the README.
  • Reads RAW images when built with ENABLE_RAW, which depends on LibRAW and requires ENABLE_OPENCV.
  • Reads multi-page TIFF when built with ENABLE_TIFF, which depends on LibTiff and also requires ENABLE_OPENCV.
  • Reads images inside zip files when built with ENABLE_QUAZIP; setting USE_SYSTEM_QUAZIP=NO switches to the Quazip copy under nomacs/3rdparty instead of the distribution package.
  • Gains AVIF, HEIC/HEIF, and JPEG XL/JXL support through the optional KDE kimageformats-plugins dependency, where the Qt version of the plugins must match the Qt version used to compile nomacs.
  • Runs on Windows, Linux, FreeBSD, Mac, Haiku, and OS/2.
  • Builds through python scripts/make.py "qtpath/bin", which produces output in build/nomacs and generates the Visual Studio solution build/nomacs/nomacs.sln.

Who uses it and how

  • Desktop users across Windows, Linux, FreeBSD, Mac, Haiku, and OS/2 who need one viewer for both everyday formats and RAW or PSD files.
  • Photographers and editors reviewing RAW and PSD images, provided the build has ENABLE_OPENCV and ENABLE_RAW enabled.
  • Users who track the leading edge, via the latest beta release or the continuous builds published through AppVeyor for Windows and GitHub Actions for Linux and macOS.
  • Translators contributing localizations through the Crowdin project nomacs-neo.
  • Developers building from source, who clone https://github.com/nomacs/nomacs.git, run git submodule init and git submodule update, then compile against Qt6 on Linux and Unix.

Getting started

Download the latest stable release from https://github.com/nomacs/nomacs/releases/latest, or take the latest beta from the releases page; source builds start with cloning the repository, initializing the submodules, and running the platform build script.

How it compares

The facts provided name no paid products that nomacs replaces and no directly comparable tools, so it stands alone in this registry on the evidence available.

When to use it — and when not to

A self-hoster or packager must supply the Qt6 component set plus, for full functionality, LibRAW, LibTiff, Quazip, and matching kimageformats plugins; if the plugin Qt version differs from the build Qt version, the extra formats such as AVIF, HEIC/HEIF, and JPEG XL will not be available, and the README warns that a system Quazip package may need to be removed before building. The project carries 337 open issues, and the visible README build instructions are Windows-heavy, so it is a poor fit for anyone expecting a hosted, browser-based viewer or a full editing suite rather than a desktop viewer.

project readme (upstream, from github) — read inline

nomacs - Image Lounge 🍸

nomacs is a free, open source image viewer, which supports multiple platforms. You can use it for viewing all common image formats including RAW and psd images. nomacs is licensed under the GNU General Public License v3 and available for Windows, Linux, FreeBSD, Mac, Haiku, and OS/2.

Build status Downloads Crowdin

Downloads

Get the Source

git clone https://github.com/nomacs/nomacs.git
cd nomacs

# nomacs uses submodules for third party libraries
git submodule init
git submodule update

Build nomacs (Windows)

We assume you have an IDE (i.e. Visual Studio), python, git, and Qt installed.

Get all dependencies:

git submodule init
git submodule update

Project folders in 3rd-party will not be empty anymore. Now call:

python scripts/make.py "qtpath/bin"

This will build nomacs into build/nomacs. If you are using Visual Studio, you can then double-click build/nomacs/nomacs.sln. Right-click the nomacs project and choose Set as StartUp Project.

Build individual projects using:

python scripts/make.py "qt/bin" --project quazip,libraw --force

Developer Build

I like having a separate developer build (without submodules) that uses 3rd party libs already compiled. To do so you need to:

git submodule update --init --remote scripts 

# python scripts/make.py "C:\Qt\Qt-5.14.1-installer\5.14.2\msvc2017_64\bin" --lib-path C:\coding\nomacs\nomacs\3rd-party\build
python scripts/make.py "qt/bin" --lib-path "nomacs/3rd-party/build"

If anything did not work

  • check if you have setup opencv (otherwise uncheck ENABLE_OPENCV)
  • check if your Qt is set correctly (otherwise set the path to qt_install_dir/qtbase/bin/qmake.exe)
  • check if your builds proceeded correctly

Build nomacs (Linux/Unix)

Before you build nomacs, please note the following:

  • Nomacs requires using Qt6.
  • kimageformats-plugins is an optional dependency that provides additional formats such as AVIF, HEIC/HEIF, and JPEG XL/JXL. The Qt version of the plugins should match the Qt version when compiling nomacs.
  • Zip file support requires Quazip, which has varied support in distributions. If the system package is missing or does not work, you can set USE_SYSTEM_QUAZIP=NO to use the version in nomacs/3rdparty. However, you may also need to remove the any system quazip development package temporarily. (such as llibquazip*-dev for Ubuntu)

Get the required packages

The package lists and cmake configuration listed below enable all features in nomacs, which we recommend. However, if you do not want a particular feature you can omit certain packages.

Build options and their dependencies

This is the list of configurable packages and what they provide in nomacs. To ensure a feature is included/excluded set the cmake option for that feature. By default, all features are enabled if the dependencies are found when running cmake**.

The following Qt components are necessary: Core, Concurrent, Network, PrintSupport, SVG, Widgets, Core5Compat.

There are other optional features that can be enabled during build:

Option Depends on Requires Description
ENABLE_RAW LibRAW ENABLE_OPENCV Enables reading RAW images
ENABLE_TIFF LibTiff ENABLE_OPENCV Enable reading multi-page TIFF
ENABLE_QUAZIP Quazip** Enable reading from zip files
ENABLE_OPENCV OpenCV RAW, TIFF, Adjustments, High-quality thumbnails, DRIF files, histogram, mosaic
ENABLE_PLUGINS nomacs/plugins ENABLE_OPENCV Paint on image, Composite, Affine Transform, Fake Miniatures, Page Extraction
ENABLE_TESTING GoogleTest Enables targets for unit and integration testing

(**) Quazip is not enabled by default as of nomacs 3.19.1

Runtime dependencies

Additional packages will be used by nomacs if they are available at runtime, and they use the same Qt version as nomacs (5 or 6).

  • QImageFormats: Enables reading ICNS, MNG, TGA, TIFF, WBMP, WEBP
  • KImageFormats: Enables reading AVIF, HEIF/HEIC, JXL, EXR, EPS and more
Ubuntu 24.04
sudo apt install qt6-base-dev qt6-tools-dev qt6-svg-dev qt6-image-formats-plugins libexiv2-dev libraw-dev libopencv-dev libtiff-dev libtiff-dev libquazip1-qt6-dev build-essential git cmake lcov libgtest-dev
Ubuntu 22.04
sudo apt install qt6-base-dev qt6-tools-dev qt6-tools-dev-tools libqt6svg6-dev libqt6core5compat6-dev qt6-l10n-tools qt6-image-formats-plugins libexiv2-dev libraw-dev libopencv-dev libtiff-dev libtiff-dev build-essential git cmake lcov libgtest-dev libgl-dev
Arch
# qt6
sudo pacman -S qt6-base qt6-imageformats qt6-svg qt6-tools quazip-qt6 exiv2 libraw libtiff opencv kimageformats git cmake gtest base-devel
Redhat/Fedora/CentOS (tested on Rocky 9.5)
sudo dnf install qt6-qtbase-devel qt6-qtimageformats qt6-qtsvg-devel qt6-qttools-devel qt6-qt5compat-devel LibRaw-devel opencv-devel exiv2-devel libtiff-devel git cmake lcov gtest-devel gcc-c++
FreeBSD (14.2 release)
sudo pkg install qt6-base qt6-imageformats qt6-svg qt6-5compat qt6-tools quazip-qt6 tiff exiv2 kf6-kimageformats libraw opencv git cmake googletest gcc
Haiku (r1 beta 5)
# qt6
pkgman install qt6_base_devel qt6_tools_devel qt6_svg_devel qt6_5compat_devel quazip1_qt6_devel tiff_devel libraw_devel opencv_devel gtest_devel exiv2_devel kimageformats6 qt6_imageformats cake git gcc make pkgconfig lcms_devel

Configure nomacs

Nomacs is configured with cmake. These cmake options are often needed:

  • ENABLE_QUAZIP=[ON|OFF] - Default OFF
  • USE_SYSTEM_QUAZIP=[ON|OFF] - Default ON
  • CMAKE_BUILD_TYPE=[Debug|Release|RelWithDebInfo] - For normal usage, choose RelWithDebInfo. For development, Debug builds have more logging as well as debug symbols.
cd nomacs
mkdir build
cd build
cmake ../ImageLounge

Compile nomacs

make [-j 8]

You will now have a binary (~/nomacs/build/nomacs), which you can use directly, however you may need to set LD_LIBRARY_PATH for this to work. You can check the log output to see that nomacs is loading configuration files from the expected locations.

# running nomacs from ~/nomacs/build/
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./nomacs

Build and run tests

Nomacs uses GoogleTest, which is included in the package lists above. A check target will be created if GoogleTest is present. To build and run tests:

make check

Unit and integration tests can also be built and run separately:

make check-unit
make check-integration

# Alternatively, invoke with ctest
ctest -L unit
ctest -L integration

Install nomacs

By default nomacs is installed to /usr/local/ unless you set CMAKE_INSTALL_PREFIX

sudo make install
# ldconfig is required on most linux distros
# Some systems you also require changes to 
# `/etc/ld.so.conf` to add `/usr/local/lib` 
sudo ldconfig

For Package Maintainers

  • Highly recommended optional dependency: nomacs officially supported plugins, provide core features like paint-on-image. Enabled by default if nomacs/ImageLounge/plugins submodule is present.
  • Recommended optional dependency: qt-imageformats-plugins provides WEBP and many more formats
  • Recommended optional dependency: quazip provides support for reading images from zip files (with ENABLE_QUAZIP=ON). In the unlikely case there is a conflict with the quazip package, you may use 3rdparty/quazip with USE_SYSTEM_QUAZIP=OFF.
  • Recommended optional dependency: kimageformats provides AVIF, HEIF/HEIC, JXL and many more formats.
  • Recommended build dependency: gtest so you m

readme truncated — read the full docs on github

Frequently asked questions

Is nomacs free to use?

nomacs is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does nomacs do?

nomacs is a free image viewer for windows, linux, and mac systems.

What is nomacs written in?

nomacs is primarily written in C++. Its source is publicly available at https://github.com/nomacs/nomacs, and it has 3,174 GitHub stars.