Open-source project
nomacs/nomacs avatar
nomacs/nomacs

nomacs: a GPL-3.0 image viewer for Windows, Linux and macOS

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

3,199 stars205 forksC++GPL-3.0

At a glance

What is it?
nomacs is a Qt6-based image viewer that reads RAW, PSD, TIFF and, with KImageFormats, AVIF, HEIC and JXL. The source is buildable, the packages are not always, and the project's own README is honest about which features are optional.
Who is it for?
Adopt nomacs if you need a Qt6 image viewer that handles RAW, PSD and multi-page TIFF on a desktop, and you are willing to check whether your distribution's package was built with the optional features enabled. Do not adopt it if you need a managed, cross-platform viewer with a stable plugin API and a documented release cadence for every platform; the README itself notes that the Linux build requires Qt6 and that Quazip is not enabled by default.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What nomacs is, and the problem it removes

nomacs is an image viewer for Windows, Linux, FreeBSD, Mac, Haiku and OS/2, licensed under GPL-3.0. The README describes it as a viewer that handles "all common image formats including RAW and psd images", and the repository topics list avif, jpeg-xl, opencv and photo-editor alongside image-viewer. So the target user is someone who keeps a folder of mixed formats (camera RAW next to PSD next to JPEG) and wants to flip through them without opening Photoshop or a raw converter first. The problem it removes is format fragmentation: instead of one viewer for JPEG, another for RAW and a third for PSD, nomacs reads them in one window. It is not a cataloguing tool and the README does not present it as an editor, though the plugin set includes Paint on image, Composite and Affine Transform, which are edits rather than viewing. That distinction matters when you decide whether it fits a workflow: nomacs is a viewer with optional editing plugins, not a non-destructive editor with a viewer attached.

How the format support actually gets built

The mechanism is a CMake feature matrix, not a fixed binary. The README's build-options table shows each capability gated behind a switch and a dependency. ENABLE_RAW needs LibRAW and requires ENABLE_OPENCV. ENABLE_TIFF needs LibTiff and also requires ENABLE_OPENCV. ENABLE_OPENCV pulls in RAW, TIFF, Adjustments, high-quality thumbnails, DRIF files, histogram and mosaic. ENABLE_PLUGINS requires ENABLE_OPENCV and brings in Paint on image, Composite, Affine Transform, Fake Miniatures and Page Extraction. ENABLE_QUAZIP handles reading from zip files and, per the README, is not enabled by default as of nomacs 3.19.1. On top of that, two runtime layers matter: QImageFormats adds ICNS, MNG, TGA, TIFF, WBMP and WEBP, and KImageFormats adds AVIF, HEIF/HEIC, JXL, EXR, EPS and more. The README states these are used if they are available at runtime and use the same Qt version as nomacs. That last clause is the sharp edge: a Qt6 nomacs with Qt5 image format plugins will not pick them up. The practical consequence is that two people running the same nomacs version can have different format support, and neither the version number nor the window title tells you which.

Installing nomacs on Ubuntu, Arch and Windows

The README points to the latest stable release on GitHub for downloads, plus beta releases and continuous builds on AppVeyor (Windows) and GitHub Actions (Linux, macOS). For Linux, nomacs requires Qt6, and the README gives per-distribution package lists. On Ubuntu 24.04 the documented command is:

bash
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 differs in several package names, notably libqt6svg6-dev, libqt6core5compat6-dev and the addition of libgl-dev, so do not copy the 24.04 line onto 22.04. On Arch the README lists qt6-base, qt6-imageformats, qt6-svg, qt6-tools, quazip-qt6, exiv2, libraw, libtiff, opencv, kimageformats, git, cmake, gtest and base-devel via pacman. FreeBSD 14.2, Haiku r1 beta 5, Fedora and Rocky 9.5 each get their own package list in the README.

To build from source, the README's first step is cloning with submodules, because third-party libraries live in submodules:

bash
git clone https://github.com/nomacs/nomacs.git
cd nomacs
git submodule init
git submodule update

On Windows the README assumes Visual Studio, Python, git and Qt are installed, then runs:

bash
python scripts/make.py "qtpath/bin"

According to the README, this builds nomacs into build/nomacs, and Visual Studio users can open build/nomacs/nomacs.sln, set nomacs as the startup project, and run it. A developer build that skips submodules and reuses already-compiled third-party libraries is documented as:

bash
git submodule update --init --remote scripts
python scripts/make.py "qt/bin" --lib-path "nomacs/3rd-party/build"

For a first real use, launch nomacs, open a folder of mixed JPEG, RAW and PSD files, and check the thumbnail panel. If RAW files show generic icons instead of previews, the build you installed was compiled without ENABLE_RAW or without OpenCV, which is the single most common surprise with distribution packages.

Where the build matrix becomes a limitation

The honest limitation is that nomacs' feature set is decided at compile time and by whatever plugins exist at runtime, and the README does not describe a way to query the resulting configuration from the user interface. A user who installs nomacs from a distribution repository may get a build with ENABLE_OPENCV off, which silently removes RAW, TIFF, histogram, mosaic and the plugin set, because ENABLE_PLUGINS depends on ENABLE_OPENCV. The README's own troubleshooting section acknowledges this class of problem: it tells you to check whether OpenCV is set up, otherwise uncheck ENABLE_OPENCV, and to check that your Qt path is correct, otherwise set the path to qt_install_dir/qtbase/bin/qmake.exe. Those are build-time remedies, not user-facing ones. There is a second, narrower trap in the Quazip handling: the README says that if the system Quazip package is missing or does not work you can set USE_SYSTEM_QUAZIP=NO to use the bundled version, but that you may also need to temporarily remove the system quazip development package (it names llibquazip*-dev for Ubuntu, with the double-l typo preserved in the README). That is an instruction to break your system package state to get a build through, which is a real cost. Where nomacs is the wrong tool: if you need a viewer that behaves identically across machines with no per-build feature drift, or you need a documented plugin API with stability guarantees, the README does not offer either.

nomacs against geeqie, gThumb and the platform viewers

The obvious alternative on Linux is geeqie, which is also a GTK-based viewer with RAW support through similar library dependencies, but its architecture is deliberately narrower: it targets fast browsing and file management rather than the plugin set nomacs ships. gThumb sits closer to a lightweight manager with import and export workflows. On Windows, the default comparison is the built-in Photos app, which reads common formats but not PSD or most RAW without an extension, and the Windows codec situation is the reason people search for nomacs on Windows 10 and Windows 11 at all. The difference in approach is that nomacs treats format coverage as a build-time composition of OpenCV, LibRAW, LibTiff, Quazip, QImageFormats and KImageFormats, while the platform viewers treat it as an operating-system codec problem. That makes nomacs more capable on a well-built Linux install and more fragile on a minimal one. It also means nomacs is a desktop application, not a service: there is no server mode or headless conversion path described in the README, so if you need to batch-convert a directory from a script, nomacs is not the tool even though it can display the results.

Licence, maintenance and upgrade cost

nomacs is GPL-3.0. If you redistribute a modified build, the GPL's source-availability obligations apply to your build, and the optional third-party pieces (OpenCV, LibRAW, LibTiff, Quazip, exiv2, KImageFormats) carry their own licences, some of which are not GPL. The README does not assemble a licence inventory for those dependencies, so anyone shipping nomacs inside a product has to check each one separately. The repository is not archived and the last push was on 2026-09-20, with releases 3.22.3 on 2026-09-01, 3.22.2 on 2026-08-26 and a 3.23.3 beta on 2026-07-21 labelled "3.23.3 Beta - Windows build fix". The upgrade cost is mostly on the build side: the README states nomacs requires Qt6 on Linux, and it warns that KImageFormats plugins must match the Qt version used to compile nomacs. A distribution that moves Qt before it moves the image format plugins will quietly drop AVIF, HEIC and JXL support for nomacs users, and nothing in the application will say so. Packagers carrying nomacs forward should therefore treat the Qt and kimageformats versions as a pair, not as independent bumps.

Editorial conclusion

Adopt nomacs if you need a Qt6 image viewer that handles RAW, PSD and multi-page TIFF on a desktop, and you are willing to check whether your distribution's package was built with the optional features enabled. Do not adopt it if you need a managed, cross-platform viewer with a stable plugin API and a documented release cadence for every platform; the README itself notes that the Linux build requires Qt6 and that Quazip is not enabled by default. Before installing, verify three things: which nomacs version your package manager ships, whether that build has ENABLE_OPENCV and ENABLE_RAW set, and whether kimageformats is present at runtime, because AVIF, HEIC and JXL support depends on it and on the Qt version matching.

Frequently asked questions

Is nomacs free?

Yes. The README states nomacs is free and open source, licensed under the GNU General Public License v3, with downloads linked from the GitHub releases page.

How do I install nomacs on Linux?

The README gives per-distribution package lists and notes that nomacs requires Qt6. On Ubuntu 24.04 the documented command installs qt6-base-dev, qt6-tools-dev, qt6-svg-dev, qt6-image-formats-plugins, libexiv2-dev, libraw-dev, libopencv-dev, libtiff-dev, libquazip1-qt6-dev, build-essential, git, cmake, lcov and libgtest-dev, then configures the build with cmake.

How do I install nomacs on Arch?

The README lists the Arch packages as qt6-base, qt6-imageformats, qt6-svg, qt6-tools, quazip-qt6, exiv2, libraw, libtiff, opencv, kimageformats, git, cmake, gtest and base-devel, installed with pacman.

What is nomacs image lounge?

nomacs image lounge is the project's own name for itself: the README heading reads "nomacs - Image Lounge" and describes it as a free, open source image viewer supporting multiple platforms and common formats including RAW and PSD.

Is nomacs open source?

Yes, nomacs is licensed under the GNU General Public License v3 according to the README, and the source is available at github.com/nomacs/nomacs with third-party libraries pulled in as submodules.

What is nomacs?

The README describes nomacs as a free, open source image viewer that supports multiple platforms and reads all common image formats including RAW and PSD images.

Official sources

  1. License: GPL-3.0
  2. nomacs/nomacs on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nomacs-nomacs.svg)](https://hysenlabs.com/projects/nomacs-nomacs)