Use content=
"IE=edge,chrome=1"
Skip other X-UA-Compatible
modes
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
No compatibility icon
The IE9 Address bar does not show up the Compatibility View button
and the page does not also show up a jumble of out-of-place menus, images, and text boxes.
Features
This meta tag is required to enable javascript::JSON.parse()
on IE8
(even when <!DOCTYPE html>
is present)
Correctness
Rendering/Execution of modern HTML/CSS/JavaScript is more valid (nicer).
Performance
The Trident rendering engine should run faster in its edge mode.
In your HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
means IE should use the latest (edge) version of its rendering enginechrome=1
means IE should use the Chrome rendering engine if installedOr better in the configuration of your web server:
(see also the RiaD's answer)
Apache as proposed by pixeline
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
Nginx as proposed by Stef Pause
server {
#...
add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Varnish proxy as proposed by Lucas Riutzel
sub vcl_deliver {
if( resp.http.Content-Type ~ "text/html" ) {
set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
}
}
IIS (since v7)
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge,chrome=1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
As noticed by Lynda (see comments), the Compatibility changes in IE11 recommends Edge mode:
Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
But the position of Microsoft was not clear. Another MSDN page did not recommend Edge mode:
Because Edge mode forces all pages to be opened in standards mode, regardless of the version of Internet Explorer, you might be tempted to use this for all pages viewed with Internet Explorer. Don't do this, as the
X-UA-Compatible
header is only supported starting with Windows Internet Explorer 8.
Instead, Microsoft recommended using <!DOCTYPE html>
:
If you want all supported versions of Internet Explorer to open your pages in standards mode, use the HTML5 document type declaration [...]
As Ricardo explains (in the comments below) any DOCTYPE (HTML4, XHTML1...) can be used to trigger Standards Mode, not only HTML5's DOCTYPE. The important thing is to always have a DOCTYPE in the page.
Clara Onager has even noticed in an older version of Specifying legacy document modes:
Edge mode is intended for testing purposes only; do not use it in a production environment.
It is so confusing that Usman Y thought Clara Onager was speaking about:
The [...] example is provided for illustrative purposes only; don't use it in a production environment.
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >
Well... In the rest of this answer I give more explanations why using content="IE=edge,chrome=1"
is a good practice in production.
For many years (2000 to 2008), IE market share was more than 80%. And IE v6 was considered as a de facto standard (80% to 97% market share in 2003, 2004, 2005 and 2006 for IE6 only, more market share with all IE versions).
As IE6 was not respecting Web standards, developers had to test their website using IE6. That situation was great for Microsoft (MS) as web developers had to buy MS products (e.g. IE cannot be used without buying Windows), and it was more profit-making to stay non-compliant (i.e. Microsoft wanted to become the standard excluding other companies).
Therefore many many sites were IE6 compliant only, and as IE was not compliant with web standard, all these web sites was not well rendered on standards compliant browsers. Even worse, many sites required only IE.
However, at this time, Mozilla started Firefox development respecting as much as possible all the web standards (other browser were implemented to render pages as done by IE6). As more and more web developers wanted to use the new web standards features, more and more websites were more supported by Firefox than IE.
When IE market sharing was decreasing, MS realized staying standard incompatible was not a good idea. Therefore MS started to release new IE version (IE8/IE9/IE10) respecting more and more the web standards.
But the issue is all the websites designed for IE6: Microsoft could not release new IE versions incompatible with these old IE6-designed websites. Instead of deducing the IE version a website has been designed, MS requested developers to add extra data (X-UA-Compatible
) in their pages.
Nowadays, IE6 is still used (0.7% in 2016) (4.5% in January 2014), and some internet websites are still IE6-only-compliant. Some intranet website/applications are tested using IE6. Some intranet website are 100% functional only on IE6. These companies/departments prefer to postpone the migration cost: other priorities, nobody no longer knows how the website/application has been implemented, the owner of the legacy website/application went bankrupt...
China represents 50% of IE6 usage in 2013, but it may change in the next years as Chinese Linux distribution is being broadcast.
If you (try to) respect web standard, you can simply always use http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"
. To keep compatibility with old browsers, just avoid using latest web features: use the subset supported by the oldest browser you want to support. Or If you want to go further, you may adopt concepts as Graceful degradation, Progressive enhancement and Unobtrusive JavaScript. (You may also be pleased to read What should a web developer consider?.)
Do do not care about the best IE version rendering: this is not your job as browsers have to be compliant with web standards. If your site is standard compliant and use moderately latest features, therefore browsers have to be compliant with your website.
Moreover, as there are many campaigns to kill IE6 (IE6 no more, MS campaign), nowadays you may avoid wasting time with IE testing!
In 2009-2012, I worked for a company using IE6 as the official single browser allowed. I had to implement an intranet website for IE6 only. I decided to respect web standard but using the IE6-capable subset (HTML/CSS/JS).
It was hard, but when the company switched to IE8, the website was still well rendered because I had used Firefox and firebug to check the web-standard compatibility ;)