When selecting a browser component for .NET desktop applications, DotNetBrowser and CefSharp are among the obvious choices.

In this article, we explain the difference between DotNetBrowser and CefSharp and how to choose between them. If you already use CefSharp and want to switch, the migration guide walks you through the process.

In a nutshell 

CEF logo CefSharp DotNetBrowser
LicenseOpen-sourceCommercial
Supported OSWindows-onlyWindows, macOS, Linux
Supported UI toolkitsWinForms, WPFWinForms, WPF, WinUI 3, Avalonia
Headless modeYes, with the separate CefSharp.OffScreen packageYes, works in the console or as a service
Process memory isolationPartial: Chromium’s main (browser) process runs inside the .NET processYes
Days behind Chrome stable14–212–7
Technical supportCommunity: GitHub issues and discussionsYes, confidential, with SLA

Choose open-source CefSharp when:

  • You have to use free software.
  • Your app runs only on Windows, and community support is enough for you.

Choose commercial DotNetBrowser when:

  • You need a custom feature.
  • You want to get assistance with product use.
  • You want to report issues confidentially and have them fixed.
  • You need to run on Linux and macOS.
  • You need to embed a browser into Office applications.
  • You need the Chromium sandbox, Chromium outside your .NET process, and security fixes within days of each Chrome release.

Linux and macOS 

DotNetBrowser runs natively on Linux and macOS, both on x64 and ARM64. On Windows, it runs on x86, x64, and ARM64.

DotNetBrowser supports Avalonia UI, including Avalonia 12, and can be used in Blazor Hybrid applications.

CefSharp runs only on Windows, on x86, x64, and ARM64.

DotNetBrowser on macOS in Avalonia

DotNetBrowser with Avalonia on macOS

DotNetBrowser on Linux in Avalonia

DotNetBrowser with Avalonia on Linux

Architecture 

CefSharp is a .NET wrapper around the Chromium Embedded Framework or CEF. The wrapping is done via C++/CLI.

DotNetBrowser doesn’t use CEF or C++/CLI under the hood. Instead, it brings its own approach to integrating with Chromium directly.

In-process vs. out-of-process 

Chromium runs as several processes, and the main one, the browser process, manages the rest.

CefSharp runs the browser process inside your .NET process, and the others as separate processes. The library requires Chromium to be started and shut down in the main application thread and only once in the process lifetime.

DotNetBrowser starts all Chromium processes, including the browser process, outside your .NET process, as one Chromium engine. You can start the engine on any thread, including a worker thread, shut it down anytime, and run several engines at once.

DotNetBrowser architecture

DotNetBrowser architecture

CefSharp architecture

CefSharp architecture

Stability and security 

Running the browser process inside the .NET process has drawbacks:

  • CefSharp doesn’t support the Chromium sandbox: all its processes, renderers included, run unsandboxed.
  • The browser process consumes the memory and CPU of the .NET process.
  • A crash in the browser process takes the whole application down.
  • The .NET process becomes susceptible to security vulnerabilities in the browser process, as they use the same address space.

CefSharp has a separate CefSharp.OutOfProcess project that moves the browser process out, but it isn’t published on NuGet.

In DotNetBrowser, the Chromium sandbox is on by default on Windows, Linux, and macOS. If Chromium crashes, your .NET application keeps running, and you can detect and handle the crash:

engine.Disposed += (s, e) => 
{
    long exitCode = e.ExitCode;
    // The engine has crashed if this exit code is non-zero.
};

Distribution and deployment 

CefSharp needs the Microsoft Visual C++ 2022 Runtime, installed on the target machine or shipped next to your app. It works with .NET Framework 4.6.2 or later, and its .NETCore packages need .NET 6 or later.

DotNetBrowser comes with all required Chromium binaries and DLLs already packaged. You don’t need to install or ship the Microsoft Visual C++ Runtime to work with DotNetBrowser. It works with .NET Framework 4.6.2 to 4.8.1 and .NET 5 to 10. See the system requirements.

Embedding into Office 

DotNetBrowser works in non-default AppDomains and thus can be embedded into Office applications using VSTO add-ins or Excel-DNA.

CefSharp works only in the default AppDomain.

Proprietary codecs 

DotNetBrowser supports the proprietary H.264, HEVC, and AAC codecs. They’re disabled by default because you need licenses to use them in your product. Once you have the licenses, enable the codecs in the code:

IEngine engine = EngineFactory.Create(new EngineOptions.Builder
{
    ProprietaryFeatures = ProprietaryFeatures.H264 
                          | ProprietaryFeatures.Hevc 
                          | ProprietaryFeatures.Aac
}.Build());

Read more in the media guide.

CefSharp ships without proprietary codecs.

High DPI 

In CefSharp, if your application doesn’t declare its DPI awareness, Cef.Initialize makes the whole .NET process Per-Monitor DPI aware. This may be an issue for older software that isn’t ready for it.

DotNetBrowser automatically detects DPI awareness of the .NET process and complies with it.

DOM access 

CefSharp has no DOM API of its own. You access the DOM through JavaScript or the separate CefSharp.Dom package, which works over the DevTools protocol. DotNetBrowser provides an API for manipulating the DOM directly from your code:

IDocument document = browser.MainFrame.Document;
document.GetElementById("button").Click();

PointInspection inspection = browser.MainFrame.Inspect(new Point(100, 150));
INode nodeAtPoint = inspection.Node;

Chrome extensions 

DotNetBrowser supports Chrome extensions. Developers can install extensions from CRX files, or let their users use the Chrome Web Store.

DotNetBrowser provides full control over the pop-ups opened by extensions, and allows you to use extension actions.

Read more in the guide on extensions and try it in practice.

uBlock extension in DotNetBrowser

An extension launched in DotNetBrowser

CefSharp lost its .NET API for extensions in version 128, when CEF dropped the extension API. You can still load unpacked extensions with Chromium’s --load-extension switch, but your code can’t list, remove, or control them. In the WinForms and Wpf.HwndHost controls, you can opt in to the Chrome runtime style, which gives users the chrome://extensions page to manage extensions. The Wpf and OffScreen controls don’t support this style, so they have no extensions page.

Support and updates 

CefSharp is an open-source project. If you see a bug or need a feature, you can file a report or contribute. Questions go to GitHub Discussions.

DotNetBrowser is a commercial product designed and created for commercial companies. We have a private helpdesk system where reports from clients remain confidential. The guaranteed first response time, or SLA, is one business day.

The technical support includes:

  • Help with product use.
  • Timely bug fixes.
  • Assistance with troubleshooting.
  • Considering feature requests.

All your support requests will be processed by DotNetBrowser software engineers.

A new version of DotNetBrowser is released every one to three weeks. Since September 2026, Chrome has shipped a new major version every two weeks, and we upgrade Chromium within days of each release. The table shows how many days after each Chrome release the two libraries shipped the same Chromium major version, as of November 5, 2026:

ChromiumChrome stableDotNetBrowserCefSharp
150June 304.2.0, 7 days150.0.110, 17 days
151July 284.2.2, 6 days151.3.170, 19 days
152August 254.3.0, 3 days152.0.60, 21 days
153September 84.3.1, 7 daysNo CEF build
154September 224.3.2, 6 days154.0.340, 20 days
155October 64.3.3, 2 daysNo CEF build
156October 204.3.4, 2 days156.0.150, 14 days

CefSharp depends on CEF, so it can follow only the Chromium versions that CEF ships. The dates come from the Chrome schedule, our release notes, and CefSharp’s first release of each version on GitHub or NuGet.

Both projects track Chromium vulnerabilities. CefSharp publishes security advisories on GitHub, and every DotNetBrowser release note lists the Chromium security fixes it brings.

Try for free 

Spinner

Sending…

Sorry, the sending was interrupted

Please try again. If the issue persists, contact us at info@teamdev.com.

Read and agree to the terms to continue.

Your personal DotNetBrowser trial key and quick start guide will arrive in your Email Inbox in a few minutes.

Get your free license and choose one of our getting started guides. It takes 5 minutes to start using DotNetBrowser:

Moving an existing CefSharp app? Follow the migration guide.