oneimage

ImageSharp alternatives for .NET in 2026, compared

SkiaSharp, Magick.NET, NetVips and OneImage compared with ImageSharp on license, native code, frameworks and formats, with sources and a rule for choosing.

The main ImageSharp alternatives for .NET are SkiaSharp (MIT, a wrapper over Google’s native Skia), Magick.NET (Apache-2.0, ImageMagick bundled as native code, over 100 formats), NetVips (MIT, a binding to the native libvips) and OneImage (MIT OR Apache-2.0, pure C#). System.Drawing.Common is no longer one: it has been Windows-only since .NET 6. In short, choose OneImage if you want no native binaries and a permissive license, Magick.NET for formats, SkiaSharp for drawing and GPU work, and NetVips for raw throughput on many cores.

The facts below come from each project’s NuGet listing and documentation, read on 22 October 2026, and every one is linked. Versions move, so check the current page before you decide.

Why developers are replacing ImageSharp

ImageSharp is a capable, pure-managed library, and the license is usually the reason teams look elsewhere. Since 3.0.0 it has been under the Six Labors Split License: Apache 2.0 for open source, small companies and non-profits, and a paid commercial license for closed-source software made by businesses at or above 1M USD in annual revenue. Since 4.0.0 (May 2026) and 3.2.0 (October 2026), a license key is checked at build time even for users who qualify for the free tier. Our ImageSharp license guide covers who pays, the prices and what the key check does.

Staying is a reasonable choice if the license works for you. A community key costs nothing for eligible users, and a commercial license starts at $799 a year (pricing). The rest of this page is for when it doesn’t.

ImageSharp alternatives at a glance

Library (version read)License on NuGetNative codeTarget frameworksFormats, per its docs
ImageSharp 4.1.3Six Labors Split License (Apache 2.0 or commercial), build key requiredNone: one managed DLLnet8.0JPEG, PNG, GIF, WebP, TIFF, OpenEXR, BMP, ICO, CUR, ANI, PBM, TGA, QOI (docs)
SkiaSharp 4.153.1MITNative Skia per platform; Linux binaries come in SkiaSharp.NativeAssets.Linuxnetstandard2.0, net462, net6.0 to net10.0, plus mobile and desktop targetsNot listed on the pages cited
Magick.NET-Q8-AnyCPU 15.0.0Apache-2.0Native ImageMagick for 7 runtimes inside the package (88 MB)netstandard2.0, net10.0“Over 100 major file formats” (NuGet)
NetVips 3.2.0 with NetVips.Native 8.18.7MIT (NetVips); LGPL-3.0-or-later (NetVips.Native)Native libvips, one package per runtimenet462, net6.0Depends on the libvips build; not listed on the pages cited
OneImage 1.5.0MIT OR Apache-2.0None: one managed DLL (800 KB package)net10.0PNG, JPEG, WebP, GIF, TIFF, BMP, ICO (guide); SVG and PSD with add-on packages
System.Drawing.Common 10.0.13MITGDI+ (Windows)net462, netstandard2.0, net8.0 to net10.0; Windows only at run time (Microsoft)Not covered here

The native-code column comes from listing each published package’s files on 22 October 2026. ImageSharp and OneImage ship one assembly under lib/. Magick.NET ships Magick.Native binaries under runtimes/ for linux-x64, linux-arm64, linux-musl-x64, osx-arm64, win-x64, win-x86 and win-arm64. SkiaSharp.NativeAssets.Linux ships libSkiaSharp.so, and NetVips.Native.linux-x64 ships libvips.so.42.

SkiaSharp: a drawing engine that also does images

SkiaSharp is “a cross-platform 2D graphics API for .NET platforms based on Google’s Skia Graphics Library” (NuGet). Its strengths are paths, text, gradients, GPU-backed surfaces and the widest framework reach of the group, from .NET Framework 4.6.2 to mobile and desktop targets. It is the first library Microsoft lists when it explains why System.Drawing.Common became Windows-only.

Plan for: native binaries. The main package depends on native-asset packages for Windows, macOS, Android, iOS and others, but not Linux. On Linux servers and containers you add SkiaSharp.NativeAssets.Linux yourself (our page on SkiaSharp on Linux and Docker covers which package to choose and the errors you see without it). It carries libSkiaSharp.so for glibc and musl on x64, Arm and other architectures.

Magick.NET: the widest format coverage

Magick.NET wraps ImageMagick, which “supports over 100 major file formats (not including sub-formats)”, and the package lets you use it “without having to install ImageMagick on your server or desktop” (NuGet). If you need formats beyond the common web set, or ImageMagick’s long list of operations, it is the obvious candidate.

Plan for: package size and choice of variant. The AnyCPU Q8 package is 85 MB because it carries the native library for seven runtimes. It is one of several builds on NuGet (Q8, Q16 and Q16-HDRI; AnyCPU, x64 and arm64), and the package description sends you to the project’s docs to choose.

NetVips: streaming throughput from libvips

NetVips is the “.NET binding for libvips” (NuGet), which describes itself as “a demand-driven, horizontally threaded image processing library” with around 300 operations (libvips.org). In OneImage’s own published benchmarks it is faster than OneImage on multi-page TIFF reads (3.00× at OneImage’s default thread limit), JPEG encoding (1.58×) and one of three PNG encode inputs (2.29×) (performance page).

Plan for: the native package and its license. The NetVips wrapper is MIT, but the native binaries come in NetVips.Native, which NuGet lists as LGPL-3.0-or-later and splits into 13 per-runtime packages. libvips itself is LGPL-2.1-or-later, according to its site. Memory use differs as well: in the same benchmarks NetVips’s peak working memory for a 400 px JPEG thumbnail was 64.4 MiB, against 2.2 MiB for OneImage and 1.2 MiB for ImageSharp.

OneImage: pure C#, permissive, no native binaries

OneImage is the closest of the group to what ImageSharp users already have: a managed library with nothing native to deploy. It differs on license and engine. It is MIT OR Apache-2.0 for everyone, with no revenue test, no commercial tier and no build key. Operations are lazy: Resize, Crop and the rest record what to do, and pixels are computed 128×128 tiles at a time when you save. A large JPEG becomes a thumbnail without being decoded at full size.

Plan for: .NET 10 and a focused format list. OneImage targets net10.0 only. The core package reads and writes PNG, JPEG, WebP, GIF, TIFF, BMP and ICO. Add-on packages read SVG (RecursiveAI.OneImage.Svg) and read and write Photoshop files (RecursiveAI.OneImage.Psd). It does not read HEIC, AVIF, JPEG XL, JPEG 2000, camera RAW or PDF. It is also new: 1.0.0 was published on 22 October 2026.

System.Drawing.Common: Windows only

On .NET 6 and later, System.Drawing.Common is “attributed as a Windows-specific library.” On other systems it throws a TypeInitializationException wrapping PlatformNotSupportedException. The .NET 6 opt-out switch was removed in .NET 7 (Microsoft). It remains fine for Windows Forms and Windows-only services, but it is not a cross-platform replacement for ImageSharp. If you have hit that error, our guide to the “not supported on this platform” error shows the fix.

ImageSharp vs OneImage: the same job in code

Here is a common upload task: make a phone photo upright, scale it to 600 px wide and save it as WebP. ImageSharp, written from its resize documentation, which advises calling AutoOrient() before resizing user photos:

Program.csImageSharp 3.1.12
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;

using Image image = Image.Load("input.jpg");
image.Mutate(x => x.AutoOrient().Resize(600, 0));
image.Save("output.webp");

OneImage:

Program.csOneImage 1.5.0 · .NET 10
using OneImage;

// Upright (EXIF orientation is applied at load), 600 px wide, WebP.
Image.Load("input.jpg").Resize(width: 600).Save("output.webp");

// Web-ready copy: upright, sRGB, EXIF/XMP/IPTC (and so GPS) removed.
Image.Thumbnail("input.jpg", 600).Save("thumb.webp");

We ran both on a 1200×800 JPEG tagged with EXIF orientation 6 and a GPS position. Each produced an upright 600×900 WebP. Note one detail: a plain load-and-save keeps the EXIF block in both libraries, GPS included, with the orientation tag reset to 1. Only Image.Thumbnail removed it. The Mutate lambda becomes a chain of calls returning new images, and Image needs no using because it holds no unmanaged resources. The migration guide maps the rest of the API, from ResizeMode to metadata and pixel access, and our ImageSharp migration walkthrough shows the common calls side by side.

How to choose an ImageSharp alternative

To try OneImage, install it with dotnet add package RecursiveAI.OneImage, or start from the overview. The project’s comparison page goes deeper on where each library is the better fit.