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 Opera web browser, 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 Opera 8.5 Opera 9
HTML 4.01
a 83% 83%
abbr 84% 84%
acronym 84% 84%
address 91% 91%
area 93% 93%
b 91% 91%
base 83% 83%
bdo 91% 91%
big 91% 91%
blockquote 83% 83%
body 94% 94%
br 94% 94%
button 93% 93%
caption 91% 91%
cite 91% 91%
code 91% 91%
col 70% 70%
colgroup 70% 70%
dd 91% 91%
del 77% 77%
dfn 91% 91%
div 91% 91%
dl 91% 91%
dt 91% 91%
em 91% 91%
fieldset 91% 91%
form 93% 93%
frame 88% 88%
frameset 92% 92%
h1 91% 91%
h2 91% 91%
h3 91% 91%
h4 91% 91%
h5 91% 91%
h6 91% 91%
head 83% 83%
hr 91% 91%
html 88% 88%
i 91% 91%
iframe 93% 93%
img 91% 91%
input 82% 86%
ins 77% 77%
kbd 91% 91%
label 95% 95%
legend 83% 83%
li 91% 91%
link 80% 80%
map 93% 93%
meta 96% 96%
noframes 88% 88%
noscript 75% 75%
object 88% 88%
ol 91% 91%
optgroup 73% 78%
option 74% 77%
p 91% 91%
param Y Y
pre 91% 91%
q 83% 83%
samp 91% 91%
script 80% 90%
select 89% 89%
small 91% 91%
span 91% 91%
strong 91% 91%
style 75% 85%
sub 91% 91%
sup 91% 91%
table 92% 92%
tbody 86% 86%
td 71% 71%
textarea 96% 97%
tfoot 86% 86%
th 71% 71%
thead 86% 86%
title 88% 88%
tr 86% 86%
tt 91% 91%
ul 91% 91%
var 91% 91%
Core attributes 88% 88%
Event attributes Y Y
Internationalization (i18n) attributes 75% 75%
Cell alignment attributes 68% 68%
SGML inheritance 33% 33%
XHTML 1.0 changes
HTML in XML Y Y
Documents must be well-formed Y Y
Media types Y Y
DTD changes I I
XHTML 1.1 changes
rb 63% 63%
rbc 63% 63%
rp 63% 63%
rt 42% 42%
rtc 63% 63%
ruby 63% 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 Opera 8.5 Opera 9
CSS 2.1 Units
Color 97% 97%
Counter I I
Integer Y Y
Length Y Y
Number Y Y
Percentage Y Y
String Y Y
URI Y Y
CSS 2.1 Importance
!important Y Y
CSS 2.1 At-rules
@charset Y Y
@import Y Y
@media I Y
@page Y Y
CSS 2.1 Basic selectors
* I I
E Y Y
E F Y Y
E > F Y Y
E + F I I
[attr] Y Y
[attr="value"] I I
[attr~="value"] I I
[attr|="value"] I I
.class Y Y
#id Y Y
CSS 2.1 Pseudo-classes
:active I Y
:first-child I I
:focus Y Y
:hover I Y
:lang(C) Y Y
:link Y Y
:visited Y Y
CSS 2.1 Pseudo-elements
:after I I
:before I I
:first-letter I I
:first-line Y Y
CSS 2.1 Basic properties
background 83% 83%
background-attachment 88% 88%
background-color 87% 87%
background-image 88% 88%
background-position 95% 95%
background-repeat 92% 92%
border ≈100% ≈100%
border-bottom ≈100% ≈100%
border-bottom-color 99% 99%
border-bottom-style Y Y
border-bottom-width Y Y
border-collapse Y Y
border-color 99% 99%
border-left ≈100% ≈100%
border-left-color 99% 99%
border-left-style Y Y
border-left-width Y Y
border-right ≈100% ≈100%
border-right-color 99% 99%
border-right-style Y Y
border-right-width Y Y
border-spacing Y Y
border-style Y Y
border-top ≈100% ≈100%
border-top-color 99% 99%
border-top-style Y Y
border-top-width Y Y
border-width Y Y
bottom Y Y
caption-side 88% Y
clear Y Y
clip Y Y
color 99% 99%
content 80% 80%
counter-increment 90% 90%
counter-reset Y Y
cursor 93% 93%
direction Y Y
display 94% 94%
empty-cells 88% 88%
float Y 80%
font Y Y
font-family Y Y
font-size Y Y
font-style Y Y
font-variant Y Y
font-weight Y Y
height 90% 90%
left Y Y
letter-spacing Y Y
line-height Y Y
list-style Y Y
list-style-image Y Y
list-style-position Y Y
list-style-type Y Y
margin 90% Y
margin-bottom 90% Y
margin-left Y Y
margin-right Y Y
margin-top Y Y
max-height Y Y
max-width Y Y
min-height 75% 75%
min-width 88% 88%
outline ≈100% ≈100%
outline-color 99% 99%
outline-style Y Y
outline-width Y Y
overflow Y Y
padding Y Y
padding-bottom Y Y
padding-left Y Y
padding-right Y Y
padding-top Y Y
position Y Y
quotes 63% 88%
right Y Y
table-layout Y Y
text-align Y Y
text-decoration 93% Y
text-indent Y Y
text-transform Y Y
top Y Y
unicode-bidi Y Y
vertical-align Y Y
visibility 90% 90%
white-space 86% 64%
width 80% 90%
word-spacing Y Y
z-index 88% Y
CSS 2.1 Print properties
orphans 83% Y
page-break-after Y Y
page-break-before Y Y
page-break-inside Y Y
widows 83% Y
CSS 2.1 Conformance
Conformance 86% 86%
CSS 3 changes
Feature Opera 8.5 Opera 9
CSS 3 Units
Appearance 5% 5%
Color 96% 96%
Counter N N
ID N N
Target name N N
CSS 3 At-rules
@color-profile N N
@media 31% 48%
@page N N
CSS 3 Basic selectors
E ~ F N Y
[attr^="value"] N I
[attr$="value"] N I
[attr*="value"] N I
CSS 3 Pseudo-classes
:root N N
:nth-child(N) N N
:nth-last-child(N) N N
:nth-of-type(N) N N
:nth-last-of-type(N) N N
:last-child N N
:first-of-type N N
:last-of-type N N
:only-child N N
:only-of-type N N
:empty N N
:target N N
:enabled N Y
:disabled N Y
:checked N Y
:contains(C) N N
:not(S) N N
:default N Y
:valid N Y
:invalid N Y
:in-range N Y
:out-of-range N Y
:required N Y
:optional N N
:read-only N N
:read-write N N
CSS 3 Pseudo-elements
::selection N N
::value N N
::choices N N
::repeat-item N N
::repeat-index N N
CSS 3 Basic properties
appearance N N
box-sizing 88% 88%
color N N
color-profile N N
content N N
cursor 3% 3%
display N N
font 5% 5%
icon N N
nav-down N N
nav-index N N
nav-left N N
nav-right N N
nav-up N N
opacity N 75%
outline-offset N N
rendering-intent N N
resize N N
ruby-align N N
ruby-overhang N N
ruby-position N N
ruby-span N N
CSS 3 Print properties
image-orientation N N
page N N
page-policy N N
size (@page) 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 Opera 8.5 Opera 9
DOM Level 3 Core
Interface DOMStringList Y Y
Interface NameList N N
Interface DOMImplementationList N N
Interface DOMImplementationSource N N
Interface DOMImplementation Y Y
Interface DocumentFragment Y Y
Interface Document 59% 68%
Interface Node 70% 80%
Interface NodeList Y Y
Interface NamedNodeMap Y Y
Interface CharacterData Y Y
Interface Attr 71% 71%
Interface Element 74% 81%
Interface Text 40% 40%
Interface Comment Y Y
Interface TypeInfo N N
Interface UserDataHandler N N
Interface DOMError N N
Interface DOMErrorHandler N N
Interface DOMLocator N N
Interface DOMConfiguration 90% 90%
Interface CDATASection Y Y
Interface DocumentType 71% Y
Interface Notation N Y
Interface Entity N 57%
Interface EntityReference N N
Interface ProcessingInstruction Y Y
DOM Level 2 Events
Interface EventTarget Y Y
Interface EventListener Y Y
Interface Event Y Y
Interface DocumentEvent Y Y
Interface UIEvent Y Y
Interface MouseEvent Y Y
Interface MutationEvent Y Y
HTML event types Y Y
DOM Level 2 HTML
Interface HTMLCollection Y Y
Interface HTMLOptionsCollection Y Y
Interface HTMLDocument Y 97%
Interface HTMLElement Y Y
Interface HTMLHtmlElement Y Y
Interface HTMLHeadElement Y Y
Interface HTMLLinkElement Y Y
Interface HTMLTitleElement Y Y
Interface HTMLMetaElement Y Y
Interface HTMLBaseElement Y Y
Interface HTMLIsIndexElement Y Y
Interface HTMLStyleElement Y Y
Interface HTMLBodyElement Y Y
Interface HTMLFormElement Y Y
Interface HTMLSelectElement Y Y
Interface HTMLOptGroupElement Y Y
Interface HTMLOptionElement Y Y
Interface HTMLInputElement Y Y
Interface HTMLTextAreaElement Y Y
Interface HTMLButtonElement Y Y
Interface HTMLLabelElement Y Y
Interface HTMLFieldSetElement Y Y
Interface HTMLLegendElement Y Y
Interface HTMLUListElement 83% 83%
Interface HTMLOListElement Y Y
Interface HTMLDListElement Y Y
Interface HTMLDirectoryElement Y Y
Interface HTMLMenuElement Y Y
Interface HTMLLIElement Y Y
Interface HTMLDivElement Y Y
Interface HTMLParagraphElement Y Y
Interface HTMLHeadingElement Y Y
Interface HTMLQuoteElement Y Y
Interface HTMLPreElement Y Y
Interface HTMLBRElement Y Y
Interface HTMLBaseFontElement Y Y
Interface HTMLFontElement Y Y
Interface HTMLHRElement Y Y
Interface HTMLModElement Y Y
Interface HTMLAnchorElement Y Y
Interface HTMLImageElement Y Y
Interface HTMLObjectElement Y Y
Interface HTMLParamElement Y Y
Interface HTMLAppletElement Y Y
Interface HTMLMapElement Y Y
Interface HTMLAreaElement Y Y
Interface HTMLScriptElement 94% Y
Interface HTMLTableElement Y Y
Interface HTMLTableCaptionElement Y Y
Interface HTMLTableColElement Y Y
Interface HTMLTableSectionElement Y Y
Interface HTMLTableRowElement Y Y
Interface HTMLTableCellElement Y Y
Interface HTMLFrameSetElement Y Y
Interface HTMLFrameElement Y Y
Interface HTMLIFrameElement Y Y
DOM Level 3 Load and Save
Interface DOMImplementationLS Y Y
Interface LSParser 94% 94%
Interface LSInput Y Y
Interface LSResourceResolver N N
Interface LSParserFilter 25% 25%
Interface LSProgressEvent N N
Interface LSLoadEvent N N
Interface LSSerializer 93% 93%
Interface LSOutput Y Y
Interface LSSerializerFilter 50% 50%
DOM Level 2 Style
Interface StyleSheet N 94%
Interface StyleSheetList N Y
Interface MediaList N 92%
Interface LinkStyle N Y
Interface DocumentStyle N Y
Interface CSSStyleSheet N Y
Interface CSSRuleList N Y
Interface CSSRule N Y
Interface CSSStyleRule N Y
Interface CSSMediaRule N Y
Interface CSSFontFaceRule N Y
Interface CSSPageRule N Y
Interface CSSImportRule N Y
Interface CSSCharsetRule N Y
Interface CSSUnknownRule N Y
Interface CSSStyleDeclaration 60% 80%
Interface CSSValue N N
Interface CSSPrimitiveValue N N
Interface CSSValueList N N
Interface RGBColor N N
Interface Rect N N
Interface Counter N N
Interface ViewCSS Y Y
Interface DocumentCSS N N
Interface DOMImplementationCSS N N
Interface ElementCSSInlineStyle Y Y
Interface CSS2Properties 86% 86%
DOM Level 2 Traversal and Range
Interface NodeIterator Y Y
Interface NodeFilter Y Y
Interface TreeWalker Y Y
Interface DocumentTraversal Y Y
Interface Range Y Y
Interface DocumentRange Y Y
DOM Level 3 Validation
Interface DocumentEditVAL N N
Interface NodeEditVAL N N
Interface ElementEditVAL N N
Interface CharacterDataEditVAL N N
DOM Level 2 Views
Interface AbstractView Y Y
Interface DocumentView 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 Opera 8.5 Opera 9
Language constructs
Types Y Y
Basic expressions Y Y
Unary expressions Y Y
Math expressions Y Y
Relational expressions Y Y
Binary expressions Y Y
Assignment expressions Y Y
Statements Y Y
Objects
Global Y Y
Object Y Y
Function Y Y
Array Y Y
String Y Y
Boolean Y Y
Number Y Y
Math Y Y
Date Y Y
RegExp Y Y
Error 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.