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 NuGet | Native code | Target frameworks | Formats, per its docs |
|---|---|---|---|---|
| ImageSharp 4.1.3 | Six Labors Split License (Apache 2.0 or commercial), build key required | None: one managed DLL | net8.0 | JPEG, PNG, GIF, WebP, TIFF, OpenEXR, BMP, ICO, CUR, ANI, PBM, TGA, QOI (docs) |
| SkiaSharp 4.153.1 | MIT | Native Skia per platform; Linux binaries come in SkiaSharp.NativeAssets.Linux | netstandard2.0, net462, net6.0 to net10.0, plus mobile and desktop targets | Not listed on the pages cited |
| Magick.NET-Q8-AnyCPU 15.0.0 | Apache-2.0 | Native 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.7 | MIT (NetVips); LGPL-3.0-or-later (NetVips.Native) | Native libvips, one package per runtime | net462, net6.0 | Depends on the libvips build; not listed on the pages cited |
| OneImage 1.5.0 | MIT OR Apache-2.0 | None: one managed DLL (800 KB package) | net10.0 | PNG, JPEG, WebP, GIF, TIFF, BMP, ICO (guide); SVG and PSD with add-on packages |
| System.Drawing.Common 10.0.13 | MIT | GDI+ (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.
- Safer defaults for uploads. EXIF orientation is applied at load.
Image.Thumbnailconverts to sRGB and strips EXIF, XMP and IPTC, so GPS positions don’t leak into published images. Size limits are on by default and checked from headers before large allocations, and every decoder is fuzzed (guide). - Color management. ICC v2 and v4 profiles, CMYK to sRGB, and resampling in linear light.
- Small to deploy. No native code, no reflection, no dynamic code. NativeAOT and trimming are supported.
- Measured against ImageSharp 3.1.12. In the project’s BenchmarkDotNet runs (AMD Ryzen 9 7950X3D, .NET 10, a shared workstation), OneImage was faster on 27 of 29 tasks. One was a tie (a watermark, 4.9 ms each). One was slower: CMYK JPEG to sRGB, where ImageSharp does not apply the embedded ICC profile. Converting PNG to lossy WebP took 79.1 to 95.8 ms against ImageSharp’s 236.5 to 1,511.5 ms, depending on the image content. The performance page has every row, the memory numbers and the method.
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:
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:
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
- Thumbnails, crops and format conversion in a web service or container, with no native dependencies: OneImage, if you are on .NET 10. Our WebP conversion guide shows the common paths.
- HEIC, AVIF, JPEG XL, camera RAW, PDF or ImageMagick’s operations: Magick.NET.
- Drawing, text, GPU surfaces or a UI toolkit: SkiaSharp.
- Maximum throughput on a many-core server, and native libvips is acceptable: NetVips.
- An older target framework (.NET Framework, .NET 8): SkiaSharp, Magick.NET or NetVips. OneImage requires .NET 10.
- ImageSharp works and the license fits your organization: stay, and add the community or commercial key to your build.
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.