Library / SDK
cyanfish/naps2 avatar
cyanfish/naps2

NAPS2: four scanner protocols, one simple window, every desktop OS

Scan documents to PDF and more, as simply as possible.

4,567 stars458 forksC#NOASSERTION

At a glance

What is it?
NAPS2, Not Another PDF Scanner, is a C# document scanning application focused on simplicity and ease of use, driving WIA, TWAIN, SANE and ESCL scanners on Windows, Mac and Linux, saving to PDF, TIFF, JPEG or PNG with Tesseract OCR available. The application is GPL 2.0 while the embedded NAPS2.Sdk scanning library ships separately under LGPL 2.1.
Who is it for?
Use NAPS2 when the job is getting paper into clean PDF, TIFF, JPEG or PNG files with minimal ceremony and the scanner speaks any of the four supported protocols, and use NAPS2.Sdk when the same capability belongs inside your own .NET application. Look elsewhere for enterprise capture workflows or batch OCR pipelines, this project's stated focus is simplicity and ease of use, not orchestration.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
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

WIA, TWAIN, SANE and ESCL behind one interface

NAPS2 is a document scanning application with a focus on simplicity and ease of use, and its breadth shows up in the scanner protocols rather than in a crowded feature list. It scans from WIA, TWAIN, SANE and ESCL scanners, which between them cover the Windows driver stacks, the legacy cross-platform TWAIN standard, the Linux SANE ecosystem and the network-native ESCL protocol that modern Wi-Fi scanners speak. After scanning, pages can be organized as you like, reordered rather than rescanned, and saved as PDF, TIFF, JPEG or PNG. Optical character recognition is available using Tesseract, so the OCR layer is a named external engine rather than a mystery component. The whole loop, acquire, arrange, encode, optionally recognize, fits the project's own tagline, scan documents to PDF and more, as simply as possible.

Windows 7 floor, GTK 3.20 and libsane on Linux

The system requirements are stated per platform with unusual precision. On Windows, the floor is Windows 7, with both x64 and x86 builds available, a genuinely old baseline for a maintained application. On macOS, 10.15 or later, again in both x64 and arm64 flavors, covering Intel and Apple Silicon machines. On Linux, x64 and arm64 are supported, with the dependency line reading GTK 3.20+, glibc 2.27+ and libsane, which names both the widget toolkit version and the C library floor, the two numbers that decide whether an older distribution can run the build at all, plus the SANE library that does the actual scanner talking. Anyone maintaining old hardware or old systems can read these numbers and know immediately where they stand.

A console app and an ESCL server live in the tree

The repository is a large solution of sibling projects, and two of them break the assumption that this is only a GUI. NAPS2.App.Console is a console front end, meaning scanning can be scripted rather than clicked. NAPS2.Escl.Server turns the equation around, serving the ESCL protocol rather than consuming it, so a machine running NAPS2 can appear as a scanner on the network, and NAPS2.Escl.Usb extends ESCL over USB. The GUI applications come per platform, NAPS2.App.WinForms for Windows, NAPS2.App.Gtk for Linux, NAPS2.App.Mac for macOS, with NAPS2.App.PortableLauncher supporting a portable Windows deployment. Worker projects isolate scanning work from interface processes, and Setup and Tools projects round out the build infrastructure.

Five imaging backends, one abstraction

The NAPS2.Images family shows how the project handles platform image pipelines, one abstraction with five implementations. Images.Gdi uses the legacy Windows GDI+ API, Images.Wpf uses the Windows Presentation Foundation imaging stack, Images.Gtk serves the Linux side, Images.Mac wraps the macOS native imaging, and Images.ImageSharp provides a fully managed cross-platform option. This is the classic price of running everywhere in .NET, the image operations that matter for scanning, decoding, encoding, color adjustment, have no single universal backend, so the repository carries five and selects per platform. It also explains the LGPL licensing on this subtree specifically, the imaging implementations are meant to be reusable beyond the application.

NAPS2.Sdk, the scanning library underneath

For developers, the interesting artifact is NAPS2.Sdk, published on NuGet and described as a fully-featured scanning library supporting WIA, TWAIN, SANE and ESCL scanners on Windows, Mac and Linux. It is the same four-protocol, three-operating-system coverage as the application, factored into a form other software can consume, with its own samples project, NAPS2.Sdk.Samples, its own test suites in NAPS2.Sdk.Tests and NAPS2.Sdk.ScannerTests, and worker projects for Win32 isolation. The practical consequence is that the application is a consumer of its own library rather than a monolith, and anything the GUI can scan, a program referencing the Sdk can scan too, on any of the supported desktop platforms.

GPL app, LGPL library, MIT samples

The licensing is layered deliberately. NAPS2 as a whole is licensed under the GNU GPL 2.0 or later, but several subtrees carry additional options, NAPS2.Escl.* under GNU LGPL 2.1 or later, NAPS2.Images.* under LGPL 2.1 or later, NAPS2.Internals under LGPL 2.1 or later, NAPS2.Sdk under LGPL 2.1 or later, and NAPS2.Sdk.Samples under MIT. Read from the outside in, the application is copyleft, while the parts third parties would embed, the scanning SDK, the ESCL implementation, the image backends, are weak copyleft, and the teaching examples are permissive. GitHub's automated detection reports NOASSERTION for the repository, but the README states the full licensing map explicitly, which is the authoritative version for anyone doing license review.

Three point releases in three days

The release cadence in mid-2026 was rapid, v8.3.0 on 2026-07-20, v8.3.1 on 2026-07-21 and v8.3.2 on 2026-07-22, three patch-level releases landing on consecutive days, with the repository's last push on 2026-09-09. Downloads live on the home page at naps2.com/download, documentation at naps2.com/support, and bug reports go to a SourceForge ticket tracker rather than GitHub issues. Translations are run through a dedicated portal at translate.naps2.com, consistent with an application shipping in many languages, and the project accepts donations through a link on its site. Build instructions for contributors live in the GitHub wiki, starting with a page on setting up the building and development environment.

Editorial conclusion

Use NAPS2 when the job is getting paper into clean PDF, TIFF, JPEG or PNG files with minimal ceremony and the scanner speaks any of the four supported protocols, and use NAPS2.Sdk when the same capability belongs inside your own .NET application. Look elsewhere for enterprise capture workflows or batch OCR pipelines, this project's stated focus is simplicity and ease of use, not orchestration. Before installing, check the platform floor, Windows 7 or later, macOS 10.15 or later, or Linux with GTK 3.20+, glibc 2.27+ and libsane, and confirm the license split meets your needs, GPL 2.0 for the app but LGPL 2.1 for the library and MIT for the samples.

Frequently asked questions

What is NAPS2 used for?

NAPS2 is a document scanning application for Windows, Mac and Linux. It scans from WIA, TWAIN, SANE and ESCL scanners, lets you organize the scanned pages, saves them as PDF, TIFF, JPEG or PNG, and offers optical character recognition using Tesseract.

Is NAPS2 free to use?

Yes, NAPS2 is licensed under the GNU GPL 2.0 or later. The NAPS2.Sdk scanning library, the ESCL components, the image backends and the internals are available under the weaker LGPL 2.1 or later, and the SDK samples are MIT licensed.

How do you install NAPS2?

Downloads are published on the NAPS2 home page at naps2.com/download. Before installing, check the requirements, Windows 7 or later in x64 or x86, macOS 10.15 or later in x64 or arm64, or Linux with GTK 3.20+, glibc 2.27+ and libsane installed.

Official sources

  1. cyanfish/naps2 on GitHub
  2. Issues
  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/cyanfish-naps2.svg)](https://hysenlabs.com/projects/cyanfish-naps2)