Click here to Skip to main content
14,577,432 members

C#: WebBrowser vs Gecko vs Awesomium vs OpenWebKitSharp: What To Choose And How to Use

Rate this:
4.90 (38 votes)
Please Sign up or sign in to vote.
4.90 (38 votes)
1 Feb 2015CPOL
Comparison of 4 browser engines and controls + some tips for using them (in attached projects and in tip text). Short and clear.

Gecko & WebKit samples are under construction now, but are already working and may be used as a good start:

Who is Who?


  • Default .NET browser engine.
  • Based on MSHTML + Active-X control based on COM IWebBrowser2. MSHTML+IWebBrowser2 are main components of Internet Explorer browser.
  • Has different Winforms and WPF ports.


  • Third-party browser engine.
  • Based on XULRunner used in Firefox browser.
  • Has Winforms version only.

Warning! This tip is fully actually only for very, very old Gecko version (1.9). I'll change it to a newer and more powerful version (10.*..29.* probably), a bit later.

Awesomium WebControl

  • Third-party browser control with external customizable core.
  • Based on .NET Awesomium core wrapper based on Awesomium core based on modified Chromium (or WebKit) engine.
  • Has different Winforms, WPF, Mono ports.


  • Third-party browser engine.
  • Based on WebKit engine used in Safari and Chromium browsers.
  • Has Winforms version only.


  • Third-party browser engine.
  • Based on Chromium project.
  • Has Winforms and WPF ports.

Who is Better?

Nobody! Programming language, framework, engine usually may be better only for a particular purpose.

You can define your objectives, weigh the pros and cons of engines listed in the table below, and select the engine, the best for you.

Tip: This tip has an extremely large width. Table can be not placed in browser window. If you use a fixed layout, it's recommended to change it to fluid.
Change it back to fixed.

  WebBrowser Gecko Awesomium OpenWebKitSharp EO.WebBrowser
License Free. Proprietary Free. Open-source: MPL 1.1/GPL 2.0/LGPL 2.1 Free if your revenue up
to $100K (or costs $2900).
Free. Open-source Free trial version with notification ads. Proprietary
OS/Platforms Winforms, WPF Winforms Winforms, WPF Cross-platform:
Unity, Mono, SDL
Winforms. Cross-platform: ? Winforms, WPF
CPU Any CPU ? x86 ? Any CPU
Page loading speed Low Medium (?). Control can freezing the form for few seconds on its create High High High
Required dlls size 0 MB (included in Win) 22.4 MB 40.5 MB 64.6 MB ?
Not freezing GUI
when page loads
No No Yes No Yes, excepts a 1st load
Minimal .NET Version .NET 2.0 or more older .NET 2.0 or more older .NET 4.0 ? ?

Object, method, property model

- WebBrowser-identical Not WebBrowser-identical WebBrowser-identical, but very unfinished, many methods and properties not working! ?
DOM manipulate - set HTML Yes Yes Yes Via Js only ?
DOM manipulate - get HTML Yes Yes Yes, but don't work with
disabled JS! Also, there is a bug, use JS analogue -
document.documentElement.<br />
Via Js only ?
DOM - GetElementById Yes Yes Via Js only ? ?
DOM - GetElementsByClassName Via Js only Yes Via Js only ? ?
DOM - GetElementsByTagName Yes Yes Via Js only ? ?
Inject + exec / exec Js Inject + exec Yes, in newer versions Exec Exec ?
Disable Js No, only on all-IE level Yes Yes ? ?
Set proxy No, only on all-IE level Yes Yes ? ?
Dev - Built-in Visual HTML Builder Yes ? No No ?
Dev - HTML code syntax-hl viewer No ? Yes Yes ?
Dev - HTML code Visual Inspector & Editor No ? No Yes Yes
Built-in download manager ? ? ? Yes ?

WebBrowser Usage and Tricks

Built-in Visual HTML Editor

How to enable it:

    (webBrowser1.Document.DomDocument, "On", null);

How to paste HTML element programmatically:

// appends:
// <a id="mylink" href="">
//   <img id="myimg" 
//    src="" />
// </a>

var mylink = webBrowser1.Document.CreateElement("a");
mylink.Id = "mylink";
mylink.SetAttribute("href", "");
var myimg = webBrowser1.Document.CreateElement("img");
myimg.Id = "myimg";

DOM element selection - GetElementById

var id = "mylink";

var el = webBrowser1.Document.GetElementById(id);
if (el != null)
    MessageBox.Show("Element with id=\"" + id + "\" has innerHTML: " + el.InnerHtml);
    MessageBox.Show("Element with id=\"" + id + "\" not found.");

DOM element selection - GetElementsByTagName

var tag = "img";

var elz = webBrowser1.Document.GetElementsByTagName(tag);
if (elz.Count > 0)
    MessageBox.Show(elz.Count + " elements with tag <" + tag + "> found.");
    MessageBox.Show("No elements with tag <" + tag + "> found.");

DOM content manipulate - set HTML

webBrowser1.DocumentText = "<html><head><script>alert('check!');

Inject + exec Js

var head = webBrowser1.Document.GetElementsByTagName("head")[0];

var scriptEl = webBrowser1.Document.CreateElement("script");
scriptEl.SetAttribute("text", "function sayHello() { alert('hello') }");


Gecko Usage and Tricks

DOM content manipulate - set HTML

geckoWebBrowser1.Document.DocumentElement.InnerHtml = 
<a class=\"link\">f</a></body></html>";

DOM element selection - GetElementsByClassName

(geckoWebBrowser1.Document.GetElementsByClassName("link")[0] as 
    Skybound.Gecko.GeckoElement).InnerHtml = "tt";

Awesomium WebControl Usage and Tricks

DOM content manipulate - set HTML

webControl1.HTML = "<html><head><script>alert

DOM content manipulate - get HTML

var allhtml = webControl1.ExecuteJavascriptWithResult

Exec Js

("document.body.innerHTML += '<i>Hello, World!</i>';");

Disable Js

var ws = WebCore.CreateWebSession(new WebPreferences() { Javascript = true });
webControl1 = new Awesomium.Windows.Forms.WebControl() { WebSession = ws };

Set proxy

var ws = WebCore.CreateWebSession(new WebPreferences() 
{ ProxyConfig = "255.255.255:8080" });
webControl1 = new Awesomium.Windows.Forms.WebControl() { WebSession = ws };

OpenWebKitSharp Usage and Tricks

DOM content manipulate - set HTML



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Comments and Discussions

QuestionGecko to open pdf files Pin
EyalY9-Jan-17 2:10
MemberEyalY9-Jan-17 2:10 
SuggestionAdd CefSharp details Pin
Member 1044748618-Feb-16 23:40
MemberMember 1044748618-Feb-16 23:40 
QuestionMultiple profiles Pin
sjc99923-Sep-15 12:55
Membersjc99923-Sep-15 12:55 
QuestionCefSharp Pin
Cristanov210-Jul-15 1:20
MemberCristanov210-Jul-15 1:20 
QuestionOpenWebKitSharp code is missing Pin
Member 1136557415-Feb-15 9:14
MemberMember 1136557415-Feb-15 9:14 
AnswerRe: OpenWebKitSharp code is missing Pin
naxer1425-Feb-15 16:32
Membernaxer1425-Feb-15 16:32 
QuestionGeckoFX is actively developed and version 29 works great Pin
Sire4047-Jan-15 4:24
MemberSire4047-Jan-15 4:24 
AnswerRe: GeckoFX is actively developed and version 29 works great Pin
Emiliarge7-Jan-15 9:37
professionalEmiliarge7-Jan-15 9:37 
SuggestionWebBrowser and Proxy Pin
Markus Eßmayr7-Jan-15 2:05
MemberMarkus Eßmayr7-Jan-15 2:05 
QuestionEO.Webbrowser Pin
include767-Jan-15 1:46
Memberinclude767-Jan-15 1:46 
GeneralRe: EO.Webbrowser Pin
GMariakis7-Jan-15 6:22
MemberGMariakis7-Jan-15 6:22 
AnswerRe: EO.Webbrowser Pin
Emiliarge7-Jan-15 9:40
professionalEmiliarge7-Jan-15 9:40 
GeneralRe: EO.Webbrowser Pin
Member 1026752328-Jan-15 3:43
MemberMember 1026752328-Jan-15 3:43 
QuestionwebRTC Pin
hynsey6-Jan-15 22:32
Memberhynsey6-Jan-15 22:32 
AnswerRe: webRTC Pin
Emiliarge7-Jan-15 1:38
professionalEmiliarge7-Jan-15 1:38 
GeneralRe: webRTC Pin
hynsey8-Sep-15 3:14
Memberhynsey8-Sep-15 3:14 
GeneralCoherent UI .Net Pin
nishantcop5-Jan-15 20:04
Membernishantcop5-Jan-15 20:04 
GeneralRe: Coherent UI .Net Pin
Emiliarge6-Jan-15 7:33
professionalEmiliarge6-Jan-15 7:33 
GeneralRe: Coherent UI .Net Pin
Emiliarge6-Jan-15 9:02
professionalEmiliarge6-Jan-15 9:02 
GeneralRe: Coherent UI .Net Pin
nishantcop12-Jan-15 22:31
Membernishantcop12-Jan-15 22:31 
GeneralRe: Coherent UI .Net Pin
nishantcop12-Jan-15 23:01
Membernishantcop12-Jan-15 23:01 
QuestionWhat about 64 bit support? Pin
i0028-Dec-14 3:30
Member i0028-Dec-14 3:30 
AnswerRe: What about 64 bit support? Pin
Emiliarge28-Dec-14 5:42
professionalEmiliarge28-Dec-14 5:42 
AnswerRe: What about 64 bit support? Pin
ISanti29-Dec-14 3:29
MemberISanti29-Dec-14 3:29 
QuestionActually, there's a definitive answer to who is better Pin
Marc Clifton19-Dec-14 11:45
mvaMarc Clifton19-Dec-14 11:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Posted 23 Nov 2014


82 bookmarked