<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tachyony.co.uk/w/index.php?action=history&amp;feed=atom&amp;title=Browser_engine</id>
	<title>Browser engine - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tachyony.co.uk/w/index.php?action=history&amp;feed=atom&amp;title=Browser_engine"/>
	<link rel="alternate" type="text/html" href="https://wiki.tachyony.co.uk/w/index.php?title=Browser_engine&amp;action=history"/>
	<updated>2026-07-07T00:04:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.tachyony.co.uk/w/index.php?title=Browser_engine&amp;diff=47471&amp;oldid=prev</id>
		<title>imported&gt;Augmented Seventh: Interceptor: Reverting non-constructive edits by ~2026-27966-83</title>
		<link rel="alternate" type="text/html" href="https://wiki.tachyony.co.uk/w/index.php?title=Browser_engine&amp;diff=47471&amp;oldid=prev"/>
		<updated>2026-05-10T21:54:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/w/index.php?title=WP:CVPI&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:CVPI (page does not exist)&quot;&gt;Interceptor&lt;/a&gt;: Reverting non-constructive edits by &lt;a href=&quot;/wiki/Special:Contributions/~2026-27966-83&quot; title=&quot;Special:Contributions/~2026-27966-83&quot;&gt;~2026-27966-83&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Core software component of every major web browser}}&lt;br /&gt;
{{Distinguish|JavaScript engine}}&lt;br /&gt;
{{Use dmy dates|date=December 2024}}&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;browser engine&amp;#039;&amp;#039;&amp;#039; (also known as a &amp;#039;&amp;#039;&amp;#039;layout engine&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;rendering engine&amp;#039;&amp;#039;&amp;#039;) is a core software component of every major [[web browser]]. The primary job of a browser engine is to transform [[HTML]] documents and other resources of a [[web page]] into an interactive visual representation on a [[User (computing)|user]]&amp;#039;s device.&lt;br /&gt;
&lt;br /&gt;
==Name and scope==&lt;br /&gt;
&lt;br /&gt;
Besides &amp;quot;browser [[software engine|engine]]&amp;quot;, two other related terms are commonly used: &amp;quot;layout engine&amp;quot; and &amp;quot;rendering engine&amp;quot;.&amp;lt;ref name=behindscene&amp;gt;{{cite web |url=http://taligarsiel.com/Projects/howbrowserswork1.htm |title=Behind the scenes of modern web browsers |publisher=Tali Garsiel |access-date=21 April 2018}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Gecko&amp;quot;&amp;gt;{{cite web |url=https://developer.mozilla.org/docs/Mozilla/Gecko |archive-url=https://wayback.archive-it.org/all/20140604004321/https://developer.mozilla.org/en-US/docs/Mozilla/Gecko |url-status=dead |archive-date=4 June 2014 |title=Gecko |publisher=Mozilla |access-date=21 April 2018}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Goanna&amp;quot;&amp;gt;{{cite web |url=https://forum.palemoon.org/viewtopic.php?f=1&amp;amp;t=8607 |title=Introducing Goanna |publisher=M.C. Straver |date=22 June 2015 |access-date=21 April 2018}}&amp;lt;/ref&amp;gt; In theory, [[layout (computing)|layout]] and [[rendering (computer graphics)|rendering]] (or &amp;quot;painting&amp;quot;) could be handled by different engines. In practice, however, these [[software component|components]] are tightly [[coupling (computer programming)|coupled]] and rarely encountered on their own outside of the browser engine.&amp;lt;ref name=behindscene/&amp;gt;&amp;lt;ref name=&amp;quot;howBlinkWorks&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to layout and rendering, a browser engine enforces the [[Content Security Policy|security policy]] between documents, handles navigation through [[hyperlink]]s and data submitted through [[form (HTML)|form]]s, and implements the [[Document Object Model|document object model]] (DOM) exposed to [[scripting language|scripts]] associated with the document.&amp;lt;ref name=behindscene/&amp;gt;&amp;lt;ref name=&amp;quot;howBlinkWorks&amp;quot;&amp;gt;{{cite web |title=How Blink Works |url=https://docs.google.com/document/d/1aitSOucL0VHZa9Z2vbRJSyAIsAz24kX8LFByQ5xQnUg |access-date=12 March 2024}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To provide a [[JavaScript#Examples of scripted behavior|wide range]] of dynamic behavior for [[web page]]s, every major browser supports [[JavaScript]]. However, JavaScript is [[programming language implementation|implemented]] as a separate [[JavaScript engine]], which has enabled its usage [[JavaScript#Other usage|elsewhere]]. In a browser, the two engines are coordinated via the DOM and [[Web IDL]] bindings.&amp;lt;ref name=&amp;quot;howBlinkWorks&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Browser engines are also used in non-browser [[application software|application]]s. An [[email client]] needs one to display [[HTML email]]. Beginning in the 2010s, many apps have been created with [[Chromium (web browser)#Use in app frameworks|the frameworks]] based on [[Google]]&amp;#039;s [[Chromium (web browser)|Chromium]] project; each of these standalone apps functions much like a [[web application|web app]]. (Two examples are [[Spotify]] and [[Slack (software)|Slack]].)&amp;lt;ref&amp;gt;{{cite web |title=Open Source - Spotify |url=https://www.spotify.com/us/opensource/ |quote=Here are the sources to the great Chromium Embedded Framework that is used by the Spotify Desktop client. |access-date=1 December 2023}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite news |last1=Betts |first1=Anaïs |title=Building Hybrid Applications with Electron |newspaper=Slack Engineering |date=25 October 2016 |url=https://slack.engineering/building-hybrid-applications-with-electron/ |publisher=Slack |access-date=1 December 2023}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Layout and rendering==&lt;br /&gt;
&lt;br /&gt;
The [[layout (computing)|layout]] of a [[web page]] is typically specified by [[CSS|Cascading Style Sheets]] (CSS). Each style sheet is a series of rules for how the page should be presented. For example, some rules specify [[Web typography|typography]] details, such as [[font]], color, and text size, while others determine the placement of images. The engine combines all relevant CSS rules to calculate precise graphical coordinates and [[pixel]] values for the visual representation it will paint on the screen.&amp;lt;ref name=behindscene/&amp;gt;&amp;lt;ref name=&amp;quot;howBlinkWorks&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The engine updates the visual representation in response to new events, including the user scrolling the page, content being [[Ajax (programming)|asynchronously]] [[XMLHttpRequest|fetched]], video playback, and [[Canvas element|canvas]] animations. It also may begin rendering before a page&amp;#039;s resources are downloaded, which can result in visual changes as more data is received, such as images being gradually filled in or a [[flash of unstyled content]].&amp;lt;ref&amp;gt;{{Cite web |first=Ryan |last=Boudreaux |date=October 18, 2013|title=How to prevent Flash of Unstyled Content on your websites |url=https://www.techrepublic.com/blog/web-designer/how-to-prevent-flash-of-unstyled-content-on-your-websites/ |access-date=2021-10-09 |website=TechRepublic |language=en |archive-date=2021-03-05 |archive-url=https://web.archive.org/web/20210305133101/https://www.techrepublic.com/blog/web-designer/how-to-prevent-flash-of-unstyled-content-on-your-websites/ |url-status=live }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notable engines==&lt;br /&gt;
{{Further|Comparison of browser engines}}&lt;br /&gt;
&lt;br /&gt;
* [[Apple Inc.|Apple]] created the [[WebKit]] engine for its [[Safari (web browser)|Safari]] browser by [[Fork (software development)|forking]] the [[KHTML]] engine of the [[KDE]] project.&amp;lt;ref&amp;gt;{{cite web|url=http://news.cnet.com/2100-1023-980492.html |archive-url=https://web.archive.org/web/20121025015655/http://news.cnet.com/2100-1023-980492.html |title=Apple snub stings Mozilla |author=Paul Festa |publisher=[[CNET Networks]] |date=14 January 2003 |archive-date=25 October 2012 |access-date=16 February 2017 |author-link=Paul Festa |url-status=dead }}&amp;lt;/ref&amp;gt; Apple mandates that all browsers on [[iOS]] must use WebKit as their engine.&amp;lt;ref&amp;gt;{{cite web |title=Open-sourcing Chrome on iOS! |year=2017 |url= https://blog.chromium.org/2017/01/open-sourcing-chrome-on-ios.html |quote=Due to constraints of the iOS platform, all browsers must be built on top of the WebKit rendering engine. |access-date=26 April 2021}}&amp;lt;/ref&amp;gt; (In 2024, the mandate was removed for the [[European Union]], but it is still enforced elsewhere.&amp;lt;ref&amp;gt;{{cite web|url=https://www.macrumors.com/2024/10/24/ios-18-2-eu-third-party-browser-web-apps/ |title=iOS 18.2 to Allow Third-Party Browser Web Apps With Custom Engines in EU |date=24 October 2024 |work=MacRumors |author=Tim Hardwick}}&amp;lt;/ref&amp;gt;)&lt;br /&gt;
* [[Google]] originally used WebKit for its [[Google Chrome|Chrome]] browser but eventually forked it to create the [[Blink (browser engine)|Blink]] engine.&amp;lt;ref&amp;gt;{{cite web |first=Peter |last=Bright |title=Google going its way, forking WebKit rendering engine |url=https://arstechnica.com/information-technology/2013/04/google-going-its-own-way-forking-webkit-rendering-engine/ |website=[[Ars Technica]] |publisher=[[Conde Nast]] |date=3 April 2013 |access-date=9 March 2017}}&amp;lt;/ref&amp;gt; All [[Chromium (web browser)|Chromium]]-based browsers use Blink, as do [[application software|applications]] built with [[Chromium Embedded Framework|CEF]], [[Electron (software framework)|Electron]], or any other&amp;lt;!--incl. Qt WebEngine which doesn&amp;#039;t need to be mentioned here--&amp;gt; [[software framework|framework]] that embeds Chromium.&lt;br /&gt;
* [[Microsoft]] has two [[proprietary software|proprietary]] engines, [[Trident (software)|Trident]] and [[EdgeHTML]]. Trident, also called MSHTML, is used in the [[Internet Explorer]] browser. EdgeHTML, being a fork of Trident, was the original engine of the Edge browser (now called [[Edge Legacy]]); it&amp;#039;s still found in some [[Universal Windows Platform apps|UWP apps]].&amp;lt;ref&amp;gt;{{cite web |last=Mendelevich |first=Alan |date=14 May 2021 |title=You Think You Can Forget About the &amp;quot;Legacy&amp;quot; Microsoft Edge? Not So Fast! |url=https://blog.ailon.org/you-think-you-can-forget-about-the-legacy-microsoft-edge-not-so-fast-28ce91270a22}}&amp;lt;/ref&amp;gt; The new, [[Microsoft Edge|Chromium-based Edge]] was remade with the Blink engine.&amp;lt;ref&amp;gt;{{cite web |last1=Mackie |first1=Kurt |title=Microsoft Edge Browser To Get New Rendering Engine but EdgeHTML Continues |url=https://redmondmag.com/articles/2018/12/10/edgehtml-continues.aspx |website=Redmond Mag |date=10 December 2018 |access-date=21 December 2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Mozilla]] develops the [[Gecko (software)|Gecko]] engine for its [[Firefox]] browser and the [[Mozilla Thunderbird|Thunderbird]] email client.&amp;lt;ref name=&amp;quot;Gecko&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following chart shows the duration of active development (when relevant new [[web standards]] continue to be added) for each engine in this section. Note that Gecko, WebKit, and Blink are still actively developed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;timeline&amp;gt;&lt;br /&gt;
# header&lt;br /&gt;
ImageSize = width:750 height:170&lt;br /&gt;
PlotArea  = left:80 right:5 bottom:20 top:5&lt;br /&gt;
AlignBars = justify&lt;br /&gt;
DateFormat = dd/mm/yyyy&lt;br /&gt;
Period     = from:01/01/1997  till:31/05/2022&lt;br /&gt;
TimeAxis   = orientation:horizontal   format:yyyy&lt;br /&gt;
&lt;br /&gt;
Colors =&lt;br /&gt;
  id:microsoft     value:rgb(0.3, 0.5, 1)&lt;br /&gt;
  id:gecko       value:rgb(1, 0, 0)&lt;br /&gt;
  id:khtml       value:rgb(0.3,0.3,0.3)&lt;br /&gt;
  id:webkit      value:rgb(0.3, 0.36, 0.36)&lt;br /&gt;
  id:blink       value:rgb(0.3, 0.39, 0.39)&lt;br /&gt;
  id:mgray       value:rgb(0.5, 0.5, 0.5)&lt;br /&gt;
  id:lgray       value:rgb(0.75, 0.75, 0.75)&lt;br /&gt;
&lt;br /&gt;
ScaleMajor = gridcolor:mgray unit:year  increment:1   start:01/01/1997&lt;br /&gt;
ScaleMinor = unit:month increment:3   start:01/01/1997&lt;br /&gt;
BackgroundColors = bars:lgray&lt;br /&gt;
&lt;br /&gt;
BarData =&lt;br /&gt;
  bar:Gecko           text:Gecko&lt;br /&gt;
  bar:Trident          text:Trident&lt;br /&gt;
  bar:EdgeHTML        text:EdgeHTML&lt;br /&gt;
  bar:KHTML           text:KHTML&lt;br /&gt;
  bar:WebKit          text:WebKit&lt;br /&gt;
  bar:Blink           text:Blink&lt;br /&gt;
&lt;br /&gt;
PlotData=&lt;br /&gt;
  align:center textcolor:black fontsize:8 mark:(line,black) width:15 shift:(0,-4)&lt;br /&gt;
&lt;br /&gt;
  bar:Gecko&lt;br /&gt;
  from: 01/05/1997  till: 31/05/2022    color:gecko mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
  bar:Trident&lt;br /&gt;
  from: 01/10/1997  till: 15/07/2015    color:microsoft mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
  bar:EdgeHTML&lt;br /&gt;
  from: 12/11/2014  till: 15/12/2018    color:microsoft mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
  bar:KHTML&lt;br /&gt;
  from: 04/11/1998  till: 15/10/2016    color:khtml mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
  bar:WebKit&lt;br /&gt;
  from: 25/06/2001  till: 31/05/2022    color:webkit mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
  bar:Blink&lt;br /&gt;
  from: 03/04/2013  till: 31/05/2022    color:blink mark:(line,white)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/timeline&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Comparison of browser engines]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Browser engines}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Browser engines]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Augmented Seventh</name></author>
	</entry>
</feed>