Lock IE10 Document Mode to Standards with X-UA-Compatible
Force IE10 into standards mode with X-UA-Compatible so intranet Compatibility View defaults do not break CSS and DOM APIs.
27 Feb 2026, 17:31 UTC

Problem: intranet pages may render as IE7 in IE10
Internet Explorer 10 applies Compatibility View to intranet sites by default. When that happens, the browser can use an IE7 document mode even though the user is running IE10. In that mode, CSS3 rules, HTML5 elements, and ECMAScript 5 APIs that work in IE10 standards mode are silently unavailable or behave differently. The practical result is a page that looks broken or throws JavaScript errors only for internal users.
Takeaway: explicitly set X-UA-Compatible to IE=10 for internal applications that were built for IE10 standards. Do not rely on the browser default on an intranet.
Constraints and assumptions
- This applies to Internet Explorer 10 on Windows 7 or Windows Server 2008 R2 and later supported IE10 platforms.
- The page is served to users whose browsers are managed by your organization, or at least to an intranet zone where Compatibility View is enabled by default.
- You can modify either the HTML response headers or the page markup.
- IE10 is end of support. Use this only for legacy internal applications that cannot be moved to a modern browser yet, and keep them off the public internet.
Supported options in IE10
IE10 recognizes these values in the X-UA-Compatible header or meta tag. The directive tells IE10 which document mode to use; document mode determines the rendering and script engine behavior, not the browser version reported in the user-agent string.
| Directive | IE10 document mode | Standards support | Compatibility View interaction |
|---|---|---|---|
IE=10 | 10 (Standards) | IE10 CSS3, HTML5, and ECMAScript 5 features | Can still be overridden by Group Policy or a Compatibility View list |
IE=Edge | 10 (Standards) in IE10 | Highest mode supported by the running browser | Not stable across versions: IE11 and later select a newer engine |
| None / omitted | Depends on zone settings | Unpredictable on intranets | Intranet default often falls back to IE7 document mode |
IE=9 or IE=8 | Older standards mode | Limited to that earlier feature set | Use only when the page was specifically tested against that mode |
Trade-offs
IE=10 locks the page to the IE10 standards engine. That is predictable for an IE10-only target, but it prevents the page from taking advantage of a newer engine if a user later opens it in IE11. IE=Edge behaves the same as IE=10 inside IE10, but it is not a stable long-term choice because later Internet Explorer versions interpret Edge as their own highest mode. Omitting the directive is the riskiest option on an intranet, because Compatibility View can silently switch the document mode to a legacy version without notifying the user or the server.
Remember that an HTTP header overrides a meta tag, and enterprise Group Policy or a Compatibility View list can override both. If your domain forces intranet sites into Compatibility View, the markup alone may not win.
Implementation
Option 1: HTTP header (recommended when you control the server)
A response header applies before the browser parses markup, so it is the most reliable place to set the directive. This example uses Apache.
Where to run: terminal on the web server hosting the legacy application.
Required permissions: root or sudo, because you are editing server configuration and reloading the service.
# Enable the headers module if it is not already active
# Debian/Ubuntu example; run as root or with sudo
a2enmod headers
# Add the directive inside the VirtualHost or directory block for the app
# Placeholder: replace /var/www/legacy-app with the actual document root
<Directory /var/www/legacy-app>
Header set X-UA-Compatible "IE=10"
</Directory>
# Check the config syntax
apachectl configtest
# Reload Apache to apply
systemctl reload apache2
Expected check: from a client or the server, run curl -I http://intranet-app.example.com/ and confirm the response includes X-UA-Compatible: IE=10. If mod_headers is missing, Apache may fail to start or ignore the directive; verify with apachectl configtest before reloading. Caching proxies or load balancers may serve a stale header until their caches are cleared.
Option 2: Meta tag in HTML
If you cannot change server configuration, place the tag in the <head> of every affected page. It must appear before all other elements except <title> and other <meta> tags; stylesheets, scripts, and body content that come first can cause the tag to be ignored.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=10">
<title>Legacy intranet application</title>
<link rel="stylesheet" href="app.css">
</head>
Risk: a proxy or antivirus filter that rewrites HTML could strip or move the tag. Prefer the HTTP header when both are available.
Validation in IE10
- Open the application in Internet Explorer 10.
- Press F12 to open Developer Tools.
- Select Document Mode and confirm it reads 10 (Standards).
- Open the console and run
document.documentMode. The expected result is10. - Remove the header or meta tag temporarily, reload, and confirm the mode changes to the intranet default, which is commonly an older mode such as 7. Then restore the directive.
If step 3 or 4 shows a legacy mode despite the header, check for a Group Policy Compatibility View list or a proxy modifying response headers before concluding the tag failed.
Limitations
- IE10 no longer receives security updates. Running it exposes unpatched vulnerabilities; restrict legacy apps to internal networks and plan migration.
X-UA-Compatiblecontrols document mode, not browser mode. The user-agent string still identifies IE10.- Enterprise Compatibility View lists and Group Policy can override the directive, so validation must happen on the actual client and network, not just on your developer machine.
IE=Edgeis not version-stable. In IE10 it resolves to IE10 standards, but in Internet Explorer 11 or later it selects a newer engine.
Rollback
Because adding a header changes the server response, rollback means removing the directive and reloading the server:
# Apache example
<Directory /var/www/legacy-app>
Header unset X-UA-Compatible
</Directory>
# or comment out the previous Header set line
systemctl reload apache2
For the meta tag, delete or comment out the <meta http-equiv="X-UA-Compatible"> line and republish the page. After rollback, repeat the F12 validation to confirm the document mode returns to the intranet default.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.