Browser Support
How to use Browser SupportShow guide ▾Hide guide ▴
1. Find a feature
Search by name (“container queries”, “dialog”) or filter by category and Baseline status. Each row shows the first version of every browser that supports the feature; ✕ means no version supports it yet.
2. Check its Baseline status
- Widely availableSupported in all major browsers for at least 30 months — safe to use without fallbacks.
- Newly availableWorks in the latest version of every major browser, but older devices may not support it yet.
- LimitedNot yet supported in all major browsers — check the table and provide a fallback.
3. Open the feature & ship it
A feature page has the full support table (desktop & mobile), support for each sub-feature, a How to use section with example code and a feature-detection snippet for fallbacks, plus links to MDN and the spec.
To see what one browser supports that another doesn’t — or what changed between two versions — use Compare browsers.
1214 features
- __proto__Limited
JavaScript · The __proto__ property of objects partially exposes the prototype of an object.
112131841 - ::backdropWidely available
CSS · The ::backdrop CSS pseudo-element is a box underneath an element in the top layer, such as a <dialog>. It can be used to create obscuring effects distinguishing a modal element from the elements underneath.
37794715.4374715.4 - ::before and ::afterWidely available
CSS · The ::before and ::after CSS pseudo-elements select inline boxes preceding and following an element. They are often used with the content property to generate cosmetic content.
1121.541843.2 - ::columnLimited
CSS · The ::column CSS pseudo-element represents the individual columns of a multi-column layout container. Columns can only be styled with scroll snap CSS properties and can also have a ::scroll-marker pseudo-element, which scrolls to the column when activated.
135135✕✕135✕✕ - ::details-contentNewly available
CSS · The ::details-content pseudo-element selects the expandable content of a <details> element, excluding the <summary>.
13113114318.413114318.4 - ::file-selector-buttonWidely available
CSS · The ::file-selector-button CSS pseudo-element selects the button of a <input type="file"> element.
89898214.1898214.5 - ::first-letterWidely available
CSS · The ::first-letter CSS pseudo-element selects the first letter in an element for styling.
112111841 - ::first-lineWidely available
CSS · The ::first-line CSS pseudo-element selects the first line of text in an element for styling.
112111841 - ::markerLimited
CSS · The ::marker CSS pseudo-element selects list item markers for styling numbers or bullets.
868680✕8680✕ - ::placeholderWidely available
CSS · The ::placeholder CSS pseudo-element selects help text in <input> and <textarea> elements when no value is set.
57795110.1575110.3 - ::scroll-buttonLimited
Scrolling · The ::scroll-button(<dir>) CSS pseudo-element is a focusable button which scrolls its originating scroll container element in the specified direction.
135135✕✕135✕✕ - ::selectionLimited
CSS · The ::selection CSS pseudo-element selects text a user has highlighted.
112621.11862✕ - ::spelling-error and ::grammar-errorLimited
CSS · The ::spelling-error and ::grammar-error CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.
121121✕17.4121✕17.4 - ::target-textNewly available
Text fragments · The ::target-text pseudo-element allows you to style text highlighted by a URL text fragment such as #:~:text=snippet.
898913118.28913118.2 - :autofillLimited
HTML · The :autofill pseudo-class matches <input> elements that have been filled in automatically by the browser.
110110✕15110✕15 - :defaultWidely available
CSS · The :default CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the checked attribute.
1079451845 - :dir()Widely available
CSS · The :dir() CSS functional pseudo-class matches elements by text direction, either right to left (rtl) or left to right (ltr).
1201204916.41204916.4 - :emptyWidely available
CSS · The :empty CSS pseudo-class matches elements without child elements.
11213.11842 - :focus-visibleWidely available
CSS · The :focus-visible CSS pseudo-class selects elements that match the :focus pseudo-class and meets the browser's criteria for visually emphasizing focused elements.
86868515.4868515.4 - :focus-withinWidely available
CSS · The :focus-within CSS pseudo-class matches an element if the element or any of its children are focused.
60795210.1605210.3 - :has-slottedLimited
CSS · The :has-slotted CSS pseudo-class matches <slot> elements where the fallback content is not shown. The pseudo-class matches any slotted content, including white space, text nodes, or elements.
✕✕136✕✕136✕ - :has()Widely available
CSS · The :has() CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.
10510512115.410512115.4 - :host-context()Limited
CSS · The :host-context() CSS pseudo-class selects the containing element of the shadow tree in which it is used if that element or an ancestor matches the provided selector.
5479✕✕54✕✕ - :indeterminateWidely available
HTML · The :indeterminate CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.
39795110395110 - :is()Widely available
CSS · The :is() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.
88888214888214 - :lang()Widely available
CSS · The :lang() CSS functional pseudo-class matches elements based on their content language.
11213.11842 - :modalWidely available
CSS · The :modal pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <dialog> element used with showModal().
10510510315.610510315.6 - :not()Widely available
CSS · The :not() functional pseudo-class matches elements that do not match the selectors in its argument.
888884988849 - :nth-child()Widely available
CSS · The :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements based on their index within a list of elements. The :first-child and :last-child pseudo-classes match the first and last element in a list, and the :only-child pseudo-class matches an element with no siblings.
1123.53.11842 - :nth-child() of <selector>Widely available
CSS · The of syntax for the :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements by the relative position of elements, counted from the first or last sibling matching a selector list.
11111111391111139 - :nth-of-type() pseudo-classesWidely available
CSS · The :nth-of-type() and :nth-last-of-type() CSS functional pseudo-classes match elements based on their position among siblings of the same type. The :first-of-type, :last-of-type, and :only-of-type pseudo-classes match the first, last, and only elements of its type.
4123.53.11842 - :openNewly available
CSS · The :open CSS pseudo-class matches elements that have open states, like <details>, <dialog>, or <select>, based on their state.
13313313626.513313626.5 - :placeholder-shownWidely available
CSS · The :placeholder-shown CSS pseudo-element selects <input> and <textarea> elements when no value is set and the element's placeholder attribute is not empty. Not to be confused with ::placeholder, which selects the placeholder text itself.
477951947519 - :read-only and :read-writeWidely available
HTML · The :read-only and :read-write CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, :read-only matches <input> and <textarea> elements with the readonly attribute.
11378418793.2 - :rootWidely available
CSS · The :root pseudo-class matches the root element of the document, usually the <html> element.
112111841 - :scope (pseudo-class)Widely available
CSS · The :scope CSS pseudo-class matches the scoping root, for instance the element that querySelector() is called on, or the root of a DOM subtree specified with @scope.
277932727327 - :state()Newly available
HTML · The :state() CSS pseudo-class matches custom elements based on their custom state, set through the ElementInternals.states API.
12512512617.412512617.4 - :targetWidely available
CSS · The :target CSS pseudo-class matches the element with an ID matching the URL fragment.
11211.31842 - :target-withinLimited
CSS · The :target-within CSS pseudo-class matches the element with an ID matching the URL fragment and its ancestors.
✕✕✕✕✕✕✕ - :user-valid and :user-invalidWidely available
CSS · The :user-valid and :user-invalid pseudo-classes match form controls that have been marked as valid or invalid based on their validation constraints.
1191198816.51198816.5 - :where()Widely available
CSS · The :where() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.
88888214888214 - @charsetWidely available
CSS · The @charset CSS at-rule specifies the character encoding of an external style sheet.
2121.541844 - @counter-styleWidely available
CSS · The @counter-style CSS at-rule sets custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.
91913317913317 - @font-faceWidely available
CSS · The @font-face CSS at-rule creates a custom font-family value. The at-rule's descriptors set the font's name, source, and various display settings.
36143910363910 - @functionLimited
CSS · The @function CSS at-rule defines a custom function that takes CSS values or custom properties as arguments, and returns a CSS value. It can be based on conditional logic such as by using the @media at-rule.
139139✕✕139✕✕ - @importWidely available
CSS · The @import CSS at-rule loads styles from another stylesheet.
112111841 - @mixinLimited
CSS · The @mixin and @apply CSS at-rules define reusable style declaration fragments and apply them inside rules, optionally passing arguments.
✕✕✕✕✕✕✕ - @namespaceWidely available
CSS · The @namespace CSS rule sets a default namespace or namespace prefix. Namespace prefixes allow CSS selectors to distinguish elements with the same name but different document types, such as the HTML <a> element and the SVG <a> element.
112111841 - @scopeNewly available
CSS · The @scope CSS at-rule sets the scope for a group of rules.
14314314626.414314626.4 - @starting-styleNewly available
CSS · The @starting-style CSS at-rule sets the starting values for properties that are transitioning when the target element's style is first updated.
11711712917.511712917.5 - @supportsWidely available
CSS · The @supports at-rule applies styles based on a browser's support for CSS features, such as a CSS property and value. Also known as feature queries.
281222928229 - @supports (compatibility prefix)Widely available
CSS · The @supports (-webkit-transform-3d) CSS media query is a standardized compatibility alternative to @supports (transform-style).
21249418493.2 - <a>Widely available
HTML · The <a> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.
112111841 - <abbr>Widely available
HTML · The <abbr> HTML element represents an abbreviation or acronym.
212141843.2 - <address>Widely available
HTML · The <address> element represents contact information for a person or people, or for an organization.
112111841 - <article>Widely available
HTML · The <article> element represents self-contained content, which is intended to be independently distributable or reusable, such as a comment, a blog post, or news article.
512451844.2 - <aside>Widely available
HTML · The <aside> element represents a portion of a document whose content is only indirectly related to the document's main content.
512451844.2 - <audio>Widely available
HTML · The <audio> element plays sound such as audio effects or music, optionally with controls provided by the browser.
3123.53.11843 - <b>Widely available
HTML · The <b> HTML element draws reader's attention to text, styling text as bold by default.
112111841 - <base>Widely available
HTML · The <base> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.
112131842
Data: web-features (Baseline, W3C WebDX Community Group) and MDN browser-compat-data, updated when the site is built.