Web browser standards support

This document will summarize the level of support for web standards and maturing technologies in popular web browsers. It covers the Internet Explorer, Firefox, and Opera web browsers, with focus on the HTML, CSS, DOM, and ECMAScript technologies.

Pick browsers to display

Table of Contents

  1. Quick links
  2. Accessibility features
  3. How to interpret these tables
  4. How features are rated
  5. Specification maturity levels
  6. Web standards and maturing technologies (summaries)
    1. HTML
    2. CSS
    3. DOM
    4. ECMAScript
    5. Summary
  7. About other browsers
  8. How to contribute
  9. Disclaimer

Accessibility features

Up

Visitors with visual impairments may take advantage of a magnified version or a monochrome version of these documents. In most web browsers, you can select your preferred view by going to the View menu and then Page Style or Style. This mechanism is not supported by Internet Explorer or Safari.

How to interpret these tables

Up

Each row corresponds to a feature of the particular web standard or maturing specification. In the full tables, the browser support for that feature is usually indicated by a single letter: Y (yes), N (no), or I (incomplete support). A question mark (?) means that the support for that feature is currently unknown. The values have been colored for readability. Most feature names in the full tables are links to the official standards definitions.

Some features are listed as a summary of another group of features on the tables. These summary features often show percentages indicating the mean average support for the features in that group. Incomplete (I) support for a feature is calculated as a 50% support. Features with unknown levels of support are ignored. Features that are irrelevant in the summarized context are also ignored, such as the “inherit” values in the individual components of CSS shorthand properties. If more than 5% of the data in the summarized group is unknown, it simply lists a question mark. If all of the summarized features have all or no support, the summary feature simply lists a Y or N, respectively. If there is only one feature summarized and it has an I rating, the summary feature simply lists an I.

Some summary features summarize a feature breakdown that is not written out on these tables but is obvious in the standard's specification, such as a predefined set of possible values for an attribute in HTML. These summary features assume a value for general support and an additional value for each part of the breakdown in order to arrive at the displayed percentage.

The tables on this page and the summary page are in summarized form. Each row is a summary feature of the corresponding group in the full tables. Feature names are links to the corresponding sections of the full tables.

Some feature ratings have explanations associated with them, particularly for those with an “I” rating. The explanations are stored in the title attribute of the table cell or in a mouseover event for user agents supporting ECMAScript, and can usually be accessed by user agents with mouse support by hovering the mouse cursor over the table cell. These rating symbols are marked with an overline.

There are three families of web browsers shown here by default: IE, Firefox, and Opera. IE values are relevant for Microsoft Internet Explorer for Windows, Maxthon, Netscape in “I Trust This Site” or Internet Explorer mode, Avant Browser, AOL Browser, and other programs that use the Trident layout engine. (It should be noted that Internet Explorer for the Macintosh uses a different layout engine.) Firefox values are relevant for corresponding versions of Mozilla Firefox, the Mozilla Application Suite, Seamonkey, Netscape in “I'm Not Sure” or Netscape mode, Camino, Flock, Galeon, Epiphany, and other programs that use the Gecko layout engine. Opera values are relevant for Opera, Dreamweaver on Mac OS X, Adobe Creative Suite 2, and other programs that use the Presto layout engine. For features that are specific to the interface of the browser rather than simply the layout engine, the named web browser is the browser being tested.

How features are rated

Up

If the browser doesn't recognize a given feature or admits that the feature is not yet implemented, and the browser is supposed to do something with the feature, it receives an automatic N. Features in description languages such as HTML that don't have a clear functional purpose are expected to contain information that is made directly available to the user. If the browser appears to support a given feature completely with no significantly impairing bugs, the feature receives a Y. In other cases, the feature generally receives an I, often with an explanation attached (see above). For consistency reasons, it will receive an I even if the feature never performs a correct task or always returns an incorrect value, as long as the browser shows that it recognizes the feature and attempts to utilize it.

A Y value can only be given if the feature is supported natively or by a plugin distributed as an official optional component of the web browser. If it requires a plugin not officially endorsed and distributed by the creators of the web browser, it can at best receive an I rating. If the feature requires a plugin, but there is no such plugin that is officially promoted by the creators of the browser, it receives an N. This is done because all major browsers have a variety of third party plugins available to extend the browser's standards support, and including them would defeat the purpose of judging the browser itself.

Features are generally tested with webpages using valid HTML or XHTML markup with strict doctypes, doctype URLs, and no XML declaration. Some browsers will purposefully implement some features incorrectly when there are perceived errors on the page, particularly when no doctype is used, or when certain types of doctypes are used. In order to see the following results, make sure that you are using valid markup and a doctype that triggers the closest mode to standards mode in the respective browser. You can check an HTML or XHTML document for validity by using the W3C HTML validator.

Specification maturity levels

Up

World Wide Web Consortium specifications are included in this resource once they have reached the Candidate Recommendation (CR) status for the first time. Some of the technologies detailed here, such as the changes in CSS 2.1 over CSS 2 and the included sections of CSS 3, are still at this stage or have been regressed from CR status. This means that these technologies are not yet technically considered web standards and it is incorrect for these new features to be used on webpages. The CR stage is when web browsers are expected to begin implementing support for the relevant features. After the specification is implemented by a predetermined number of user agents, it moves on to Proposed Recommendation status and eventually becomes a Recommendation. It isn't until a specification reaches this Recommendation stage that it is technically considered a web standard. For more information, see Advancing a Technical Report to Recommendation.

Features that have been marked as deprecated in the relevant specifications are not included in these tables.

Web standards and maturing technologies

Up

HTML

Up

HTML is the primary language that makes up a webpage. It puts together all of the text, images, scripts, and other content.

In most web browsers, you can view this page's HTML code by going to the View menu and selecting “Page Source” or “Source”.

This table is in summarized form. View the full tables

HTML / XHTML
Feature IE 7 Firefox 2 Firefox 3 Opera 9
HTML 4.01
a 72% 88% 88% 83%
abbr 88% 97% 97% 84%
acronym 88% 97% 97% 84%
address 88% 97% 97% 91%
area 88% 96% 96% 93%
b 88% 97% 97% 91%
base 83% 83% 83% 83%
bdo 88% 97% 97% 91%
big 88% 97% 97% 91%
blockquote 80% 98% 98% 83%
body 92% 98% 98% 94%
br 88% 94% 94% 94%
button 82% 99% 99% 93%
caption 88% 97% 97% 91%
cite 88% 97% 97% 91%
code 88% 97% 97% 91%
col 68% 75% 75% 70%
colgroup 68% 75% 75% 70%
dd 88% 97% 97% 91%
del 75% 98% 98% 77%
dfn 88% 97% 97% 91%
div 88% 97% 97% 91%
dl 88% 97% 97% 91%
dt 88% 97% 97% 91%
em 88% 97% 97% 91%
fieldset 88% 97% 97% 91%
form 85% 95% 95% 93%
frame 85% 88% 88% 88%
frameset 96% 98% 98% 92%
h1 88% 97% 97% 91%
h2 88% 97% 97% 91%
h3 88% 97% 97% 91%
h4 88% 97% 97% 91%
h5 88% 97% 97% 91%
h6 88% 97% 97% 91%
head 67% 83% 83% 83%
hr 88% 97% 97% 91%
html 88% Y Y 88%
i 88% 97% 97% 91%
iframe 89% 93% 93% 93%
img 85% 99% 99% 91%
input 85% 89% 89% 86%
ins 75% 98% 98% 77%
kbd 88% 97% 97% 91%
label 81% 86% 86% 95%
legend 90% 98% 98% 83%
li 88% 97% 97% 91%
link 75% 93% 93% 80%
map 80% 98% 98% 93%
meta 96% 96% 96% 96%
noframes 50% 97% 97% 88%
noscript 63% 97% 97% 75%
object 70% 85% 85% 88%
ol 88% 97% 97% 91%
optgroup 71% 93% 93% 78%
option 78% 82% 82% 77%
p 88% 97% 97% 91%
param 92% Y Y Y
pre 88% 97% 97% 91%
q 70% 98% 98% 83%
samp 88% 97% 97% 91%
script Y 90% 90% 90%
select 88% 99% 99% 89%
small 88% 97% 97% 91%
span 88% 97% 97% 91%
strong 88% 97% 97% 91%
style 85% 90% 90% 85%
sub 88% 97% 97% 91%
sup 88% 97% 97% 91%
table 90% 94% 94% 92%
tbody 77% 91% 91% 86%
td 62% 78% 78% 71%
textarea 90% 99% 99% 97%
tfoot 77% 91% 91% 86%
th 62% 78% 78% 71%
thead 77% 91% 91% 86%
title 88% 88% 88% 88%
tr 77% 91% 91% 86%
tt 88% 97% 97% 91%
ul 88% 97% 97% 91%
var 88% 97% 97% 91%
Core attributes 75% 88% 88% 88%
Event attributes Y Y Y Y
Internationalization (i18n) attributes 75% Y Y 75%
Cell alignment attributes 37% 68% 68% 68%
SGML inheritance 17% 38% 38% 33%
XHTML 1.0 changes
HTML in XML N Y Y Y
Documents must be well-formed I Y Y Y
Media types N Y Y Y
DTD changes I I I I
XHTML 1.1 changes
rb N 69% 69% 63%
rbc N 69% 69% 63%
rp N 69% 69% 63%
rt N 46% 46% 42%
rtc N 69% 69% 63%
ruby N 69% 69% 63%

CSS

Up

CSS is the primary language for adding presentation elements to a webpage. These presentation elements include colors, fonts, backgrounds, and layout.

View this page without CSS

This table is in summarized form. View the full tables

CSS 2.1
Feature IE 7 Firefox 2 Firefox 3 Opera 9
CSS 2.1 Units
Color 99% Y Y 97%
Counter N Y Y I
Integer Y Y Y Y
Length Y Y Y Y
Number Y Y Y Y
Percentage Y Y Y Y
String N Y Y Y
URI Y Y Y Y
CSS 2.1 Importance
!important I Y Y Y
CSS 2.1 At-rules
@charset I Y Y Y
@import I Y Y Y
@media I Y Y Y
@page N N N Y
CSS 2.1 Basic selectors
* I Y Y I
E I Y Y Y
E F I Y Y Y
E > F I Y Y Y
E + F I Y Y I
[attr] I Y Y Y
[attr="value"] I I I I
[attr~="value"] I I I I
[attr|="value"] I I I I
.class Y Y Y Y
#id Y Y Y Y
CSS 2.1 Pseudo-classes
:active I Y Y Y
:first-child I I Y I
:focus N Y Y Y
:hover I Y Y Y
:lang(C) N Y Y Y
:link I Y Y Y
:visited I Y Y Y
CSS 2.1 Pseudo-elements
:after N I I I
:before N I I I
:first-letter I I I I
:first-line I Y Y Y
CSS 2.1 Basic properties
background 58% Y Y 83%
background-attachment 50% Y Y 88%
background-color 62% Y Y 87%
background-image 63% Y Y 88%
background-position 45% Y Y 95%
background-repeat 75% Y Y 92%
border 61% Y Y ≈100%
border-bottom 61% Y Y ≈100%
border-bottom-color 62% Y Y 99%
border-bottom-style 75% Y Y Y
border-bottom-width 75% Y Y Y
border-collapse 50% Y Y Y
border-color 62% Y Y 99%
border-left 61% Y Y ≈100%
border-left-color 62% Y Y 99%
border-left-style 75% Y Y Y
border-left-width 75% Y Y Y
border-right 61% Y Y ≈100%
border-right-color 62% Y Y 99%
border-right-style 75% Y Y Y
border-right-width 75% Y Y Y
border-spacing N Y Y Y
border-style 75% Y Y Y
border-top 61% Y Y ≈100%
border-top-color 62% Y Y 99%
border-top-style 75% Y Y Y
border-top-width 75% Y Y Y
border-width 75% Y Y Y
bottom 70% Y Y Y
caption-side N Y Y Y
clear 50% Y Y Y
clip N Y Y Y
color 50% Y Y 99%
content N 93% Y 80%
counter-increment N Y Y 90%
counter-reset N Y Y Y
cursor 90% Y Y 93%
direction 88% Y Y Y
display 31% 81% 92% 94%
empty-cells N 88% 88% 88%
float 50% 80% 80% 80%
font 89% Y Y Y
font-family 81% Y Y Y
font-size 88% Y Y Y
font-style 70% Y Y Y
font-variant 50% Y Y Y
font-weight 90% Y Y Y
height 50% Y Y 90%
left 60% Y Y Y
letter-spacing 63% Y Y Y
line-height 75% Y Y Y
list-style 67% Y Y Y
list-style-image 63% Y Y Y
list-style-position 63% Y Y Y
list-style-type 56% Y Y Y
margin 60% Y Y Y
margin-bottom 60% Y Y Y
margin-left 60% Y Y Y
margin-right 60% Y Y Y
margin-top 60% Y Y Y
max-height 50% Y Y Y
max-width 50% Y Y Y
min-height 38% Y Y 75%
min-width 38% Y Y 88%
outline N Y Y ≈100%
outline-color N Y Y 99%
outline-style N Y Y Y
outline-width N Y Y Y
overflow 50% 92% 92% Y
padding 63% Y Y Y
padding-bottom 63% Y Y Y
padding-left 63% Y Y Y
padding-right 63% Y Y Y
padding-top 63% Y Y Y
position 50% Y Y Y
quotes N Y Y 88%
right 70% Y Y Y
table-layout 63% Y Y Y
text-align 75% Y Y Y
text-decoration 64% 93% 93% Y
text-indent 63% Y Y Y
text-transform 58% Y Y Y
top 70% Y Y Y
unicode-bidi 70% Y Y Y
vertical-align 54% Y Y Y
visibility 70% Y Y 90%
white-space 29% 50% 64% 64%
width 50% Y Y 90%
word-spacing 63% Y Y Y
z-index 63% 88% Y Y
CSS 2.1 Print properties
orphans N N N Y
page-break-after 79% 57% 57% Y
page-break-before 79% 57% 57% Y
page-break-inside N N N Y
widows N N N Y
CSS 2.1 Conformance
Conformance 43% Y Y 86%
CSS 3 changes
Feature IE 7 Firefox 2 Firefox 3 Opera 9
CSS 3 Units
Appearance 5% 5% 5% 5%
Color 91% 97% 99% 96%
Counter N N N N
ID N N N N
Target name N N N N
CSS 3 At-rules
@color-profile N N N N
@media N N N 48%
@page N N N N
CSS 3 Basic selectors
E ~ F I Y Y Y
[attr^="value"] I I I I
[attr$="value"] I I I I
[attr*="value"] I I I I
CSS 3 Pseudo-classes
:root N Y Y N
:nth-child(N) N N N N
:nth-last-child(N) N N N N
:nth-of-type(N) N N N N
:nth-last-of-type(N) N N N N
:last-child N I Y N
:first-of-type N N N N
:last-of-type N N N N
:only-child N I Y N
:only-of-type N N N N
:empty N I Y N
:target N Y Y N
:enabled N Y Y Y
:disabled N Y Y Y
:checked N Y Y Y
:contains(C) N N N N
:not(S) N Y Y N
:default N N Y Y
:valid N Y Y Y
:invalid N Y Y Y
:in-range N Y Y Y
:out-of-range N Y Y Y
:required N N N Y
:optional N N N N
:read-only N N N N
:read-write N N N N
CSS 3 Pseudo-elements
::selection N N N N
::value N N N N
::choices N N N N
::repeat-item N N N N
::repeat-index N N N N
CSS 3 Basic properties
appearance N N N N
box-sizing N N N 88%
color N N N N
color-profile N N N N
content N N N N
cursor 38% 94% Y 3%
display N N N N
font 5% 5% 5% 5%
icon N N N N
nav-down N N N N
nav-index N N N N
nav-left N N N N
nav-right N N N N
nav-up N N N N
opacity N Y Y 75%
outline-offset N Y Y N
rendering-intent N N N N
resize N N N N
ruby-align 63% N N N
ruby-overhang 36% N N N
ruby-position N N N N
ruby-span N N N N
CSS 3 Print properties
image-orientation N N N N
page N N N N
page-policy N N N N
size (@page) N N N N

DOM

Up

DOM is a model that allows scripting languages to handle browser input and output and manipulate information on webpages. This is essential for high-end web applications.

This table is in summarized form. View the full tables

DOM
Feature IE 7 Firefox 2 Firefox 3 Opera 9
DOM Level 3 Core
Interface DOMStringList N N ? Y
Interface NameList N N ? N
Interface DOMImplementationList N N ? N
Interface DOMImplementationSource N N ? N
Interface DOMImplementation 30% 80% ? Y
Interface DocumentFragment I Y Y Y
Interface Document 34% 93% ? 68%
Interface Node 51% 90% ? 80%
Interface NodeList 83% Y Y Y
Interface NamedNodeMap 61% Y Y Y
Interface CharacterData 94% Y Y Y
Interface Attr 50% 71% ? 71%
Interface Element 33% 76% ? 81%
Interface Text 30% 40% ? 40%
Interface Comment I Y Y Y
Interface TypeInfo N N ? N
Interface UserDataHandler N N ? N
Interface DOMError N N ? N
Interface DOMErrorHandler N N ? N
Interface DOMLocator N N ? N
Interface DOMConfiguration N N ? 90%
Interface CDATASection N Y Y Y
Interface DocumentType N 86% ? Y
Interface Notation N N ? Y
Interface Entity N N ? 57%
Interface EntityReference N N ? N
Interface ProcessingInstruction N Y Y Y
DOM Level 2 Events
Interface EventTarget N Y Y Y
Interface EventListener 75% Y Y Y
Interface Event 14% Y Y Y
Interface DocumentEvent N Y Y Y
Interface UIEvent N Y Y Y
Interface MouseEvent 78% Y Y Y
Interface MutationEvent N Y Y Y
HTML event types 92% 96% ≈100% Y
DOM Level 2 HTML
Interface HTMLCollection 88% Y Y Y
Interface HTMLOptionsCollection 88% Y Y Y
Interface HTMLDocument 94% Y Y 97%
Interface HTMLElement 92% Y Y Y
Interface HTMLHtmlElement 75% Y Y Y
Interface HTMLHeadElement 75% Y Y Y
Interface HTMLLinkElement 90% Y Y Y
Interface HTMLTitleElement 75% Y Y Y
Interface HTMLMetaElement 90% Y Y Y
Interface HTMLBaseElement 83% Y Y Y
Interface HTMLIsIndexElement N Y Y Y
Interface HTMLStyleElement 88% Y Y Y
Interface HTMLBodyElement 93% Y Y Y
Interface HTMLFormElement 95% Y Y Y
Interface HTMLSelectElement 91% Y Y Y
Interface HTMLOptGroupElement 83% Y Y Y
Interface HTMLOptionElement 83% Y Y Y
Interface HTMLInputElement 96% Y Y Y
Interface HTMLTextAreaElement 97% Y Y Y
Interface HTMLButtonElement 94% Y Y Y
Interface HTMLLabelElement 88% Y Y Y
Interface HTMLFieldSetElement 75% Y Y Y
Interface HTMLLegendElement 88% Y Y Y
Interface HTMLUListElement 83% Y Y 83%
Interface HTMLOListElement 88% Y Y Y
Interface HTMLDListElement 75% Y Y Y
Interface HTMLDirectoryElement 75% Y Y Y
Interface HTMLMenuElement 75% Y Y Y
Interface HTMLLIElement 83% Y Y Y
Interface HTMLDivElement 75% Y Y Y
Interface HTMLParagraphElement 75% Y Y Y
Interface HTMLHeadingElement 75% Y Y Y
Interface HTMLQuoteElement 75% Y Y Y
Interface HTMLPreElement 75% Y Y Y
Interface HTMLBRElement 75% Y Y Y
Interface HTMLBaseFontElement 88% Y Y Y
Interface HTMLFontElement 88% Y Y Y
Interface HTMLHRElement 90% Y Y Y
Interface HTMLModElement 83% Y Y Y
Interface HTMLAnchorElement 97% Y Y Y
Interface HTMLImageElement 96% Y Y Y
Interface HTMLObjectElement 93% Y Y Y
Interface HTMLParamElement 70% Y Y Y
Interface HTMLAppletElement 92% Y Y Y
Interface HTMLMapElement 83% Y Y Y
Interface HTMLAreaElement 89% Y Y Y
Interface HTMLScriptElement 94% Y Y Y
Interface HTMLTableElement 96% Y Y Y
Interface HTMLTableCaptionElement 75% Y Y Y
Interface HTMLTableColElement 79% Y Y Y
Interface HTMLTableSectionElement 81% Y Y Y
Interface HTMLTableRowElement 86% Y Y Y
Interface HTMLTableCellElement 88% Y Y Y
Interface HTMLFrameSetElement 83% Y Y Y
Interface HTMLFrameElement 85% Y Y Y
Interface HTMLIFrameElement 88% Y Y Y
DOM Level 3 Load and Save
Interface DOMImplementationLS N N ? Y
Interface LSParser N N ? 94%
Interface LSInput N N ? Y
Interface LSResourceResolver N N ? N
Interface LSParserFilter N N ? 25%
Interface LSProgressEvent N N ? N
Interface LSLoadEvent N N ? N
Interface LSSerializer N N ? 93%
Interface LSOutput N N ? Y
Interface LSSerializerFilter N N ? 50%
DOM Level 2 Style
Interface StyleSheet 75% Y Y 94%
Interface StyleSheetList 83% Y Y Y
Interface MediaList N Y Y 92%
Interface LinkStyle N Y Y Y
Interface DocumentStyle 75% Y Y Y
Interface CSSStyleSheet N 90% ? Y
Interface CSSRuleList N Y Y Y
Interface CSSRule N Y Y Y
Interface CSSStyleRule N Y Y Y
Interface CSSMediaRule N Y Y Y
Interface CSSFontFaceRule N N ? Y
Interface CSSPageRule N N ? Y
Interface CSSImportRule N Y Y Y
Interface CSSCharsetRule N Y Y Y
Interface CSSUnknownRule N N ? Y
Interface CSSStyleDeclaration 15% Y Y 80%
Interface CSSValue N N ? N
Interface CSSPrimitiveValue N 56% ? N
Interface CSSValueList N N ? N
Interface RGBColor N Y Y N
Interface Rect N Y Y N
Interface Counter N N ? N
Interface ViewCSS N Y Y Y
Interface DocumentCSS N N ? N
Interface DOMImplementationCSS N N ? N
Interface ElementCSSInlineStyle 75% Y Y Y
Interface CSS2Properties 46% 97% ≈100% 86%
DOM Level 2 Traversal and Range
Interface NodeIterator N N ? Y
Interface NodeFilter N Y Y Y
Interface TreeWalker N 69% ? Y
Interface DocumentTraversal N 67% ? Y
Interface Range N Y Y Y
Interface DocumentRange N Y Y Y
DOM Level 3 Validation
Interface DocumentEditVAL N N ? N
Interface NodeEditVAL N N ? N
Interface ElementEditVAL N N ? N
Interface CharacterDataEditVAL N N ? N
DOM Level 2 Views
Interface AbstractView 75% Y Y Y
Interface DocumentView N Y Y Y

ECMAScript

Up

ECMAScript is a language used to access and work with the DOM. It was developed as a standardized base for JavaScript and JScript.

This table is in summarized form. View the full tables

ECMAScript
Feature IE 7 Firefox 2 Firefox 3 Opera 9
Language constructs
Types Y Y Y Y
Basic expressions 90% Y Y Y
Unary expressions Y Y Y Y
Math expressions Y Y Y Y
Relational expressions Y Y Y Y
Binary expressions Y Y Y Y
Assignment expressions Y Y Y Y
Statements 97% Y Y Y
Objects
Global Y Y Y Y
Object Y Y Y Y
Function Y Y Y Y
Array Y Y Y Y
String 98% Y Y Y
Boolean Y Y Y Y
Number Y Y Y Y
Math Y Y Y Y
Date Y Y Y Y
RegExp Y Y Y Y
Error Y Y Y Y

Summary

Up

A brief summary of the information on this page is available here: Summary

About other browsers

Up

I am currently in the process of testing other browsers and versions, including Safari and Konqueror. I do not yet have estimated dates for when this information will be available.

Other web browsers may be considered for future inclusion. If you would like to suggest a web browser or help collect data for any web browser not shown here, please post the relevant information in the discussion forum.

How to contribute

Up

You can quickly propose a change by clicking on a support value (such as Y, I, or N) in a full table (not these summary tables) and filling in the new values. You may also use the general purpose contact form, e-mail me at dhammond@webdevout.net, or post in the discussion forum. Contributions are highly appreciated.

Disclaimer

Up

Most of the above information comes from testing and research conducted by one person. It is possible that these tables contain errors. If you wish to correct an error or otherwise contribute to this information, please read the above section.