coderef

Browser Support

Can you use it yet? Support tables for 1,214 HTML, CSS, JavaScript and Web API features across Chrome, Edge, Firefox and Safari on desktop and mobile — with Baseline status and examples of how to use each one.
How to use Browser SupportShow 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

FeatureBaseline
ChromeEdgeFirefoxSafariChrome And.Firefox And.Safari iOS
  • __proto__

    JavaScript · The __proto__ property of objects partially exposes the prototype of an object.

    Limited
    112131841
  • ::backdrop

    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.

    Widely available
    37794715.4374715.4
  • ::before and ::after

    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.

    Widely available
    1121.541843.2
  • ::column

    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.

    Limited
    135135✕✕135✕✕
  • ::details-content

    CSS · The ::details-content pseudo-element selects the expandable content of a <details> element, excluding the <summary>.

    Newly available
    13113114318.413114318.4
  • ::file-selector-button

    CSS · The ::file-selector-button CSS pseudo-element selects the button of a <input type="file"> element.

    Widely available
    89898214.1898214.5
  • ::first-letter

    CSS · The ::first-letter CSS pseudo-element selects the first letter in an element for styling.

    Widely available
    112111841
  • ::first-line

    CSS · The ::first-line CSS pseudo-element selects the first line of text in an element for styling.

    Widely available
    112111841
  • ::marker

    CSS · The ::marker CSS pseudo-element selects list item markers for styling numbers or bullets.

    Limited
    868680✕8680✕
  • ::placeholder

    CSS · The ::placeholder CSS pseudo-element selects help text in <input> and <textarea> elements when no value is set.

    Widely available
    57795110.1575110.3
  • ::scroll-button

    Scrolling · The ::scroll-button(<dir>) CSS pseudo-element is a focusable button which scrolls its originating scroll container element in the specified direction.

    Limited
    135135✕✕135✕✕
  • ::selection

    CSS · The ::selection CSS pseudo-element selects text a user has highlighted.

    Limited
    112621.11862✕
  • ::spelling-error and ::grammar-error

    CSS · The ::spelling-error and ::grammar-error CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.

    Limited
    121121✕17.4121✕17.4
  • ::target-text

    Text fragments · The ::target-text pseudo-element allows you to style text highlighted by a URL text fragment such as #:~:text=snippet.

    Newly available
    898913118.28913118.2
  • :autofill

    HTML · The :autofill pseudo-class matches <input> elements that have been filled in automatically by the browser.

    Limited
    110110✕15110✕15
  • :default

    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.

    Widely available
    1079451845
  • :dir()

    CSS · The :dir() CSS functional pseudo-class matches elements by text direction, either right to left (rtl) or left to right (ltr).

    Widely available
    1201204916.41204916.4
  • :empty

    CSS · The :empty CSS pseudo-class matches elements without child elements.

    Widely available
    11213.11842
  • :focus-visible

    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.

    Widely available
    86868515.4868515.4
  • :focus-within

    CSS · The :focus-within CSS pseudo-class matches an element if the element or any of its children are focused.

    Widely available
    60795210.1605210.3
  • :has-slotted

    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.

    Limited
    ✕✕136✕✕136✕
  • :has()

    CSS · The :has() CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.

    Widely available
    10510512115.410512115.4
  • :host-context()

    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.

    Limited
    5479✕✕54✕✕
  • :indeterminate

    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.

    Widely available
    39795110395110
  • :is()

    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.

    Widely available
    88888214888214
  • :lang()

    CSS · The :lang() CSS functional pseudo-class matches elements based on their content language.

    Widely available
    11213.11842
  • :modal

    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().

    Widely available
    10510510315.610510315.6
  • :not()

    CSS · The :not() functional pseudo-class matches elements that do not match the selectors in its argument.

    Widely available
    888884988849
  • :nth-child()

    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.

    Widely available
    1123.53.11842
  • :nth-child() of <selector>

    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.

    Widely available
    11111111391111139
  • :nth-of-type() pseudo-classes

    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.

    Widely available
    4123.53.11842
  • :open

    CSS · The :open CSS pseudo-class matches elements that have open states, like <details>, <dialog>, or <select>, based on their state.

    Newly available
    13313313626.513313626.5
  • :placeholder-shown

    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.

    Widely available
    477951947519
  • :read-only and :read-write

    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.

    Widely available
    11378418793.2
  • :root

    CSS · The :root pseudo-class matches the root element of the document, usually the <html> element.

    Widely available
    112111841
  • :scope (pseudo-class)

    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.

    Widely available
    277932727327
  • :state()

    HTML · The :state() CSS pseudo-class matches custom elements based on their custom state, set through the ElementInternals.states API.

    Newly available
    12512512617.412512617.4
  • :target

    CSS · The :target CSS pseudo-class matches the element with an ID matching the URL fragment.

    Widely available
    11211.31842
  • :target-within

    CSS · The :target-within CSS pseudo-class matches the element with an ID matching the URL fragment and its ancestors.

    Limited
    ✕✕✕✕✕✕✕
  • :user-valid and :user-invalid

    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.

    Widely available
    1191198816.51198816.5
  • :where()

    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.

    Widely available
    88888214888214
  • @charset

    CSS · The @charset CSS at-rule specifies the character encoding of an external style sheet.

    Widely available
    2121.541844
  • @counter-style

    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.

    Widely available
    91913317913317
  • @font-face

    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.

    Widely available
    36143910363910
  • @function

    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.

    Limited
    139139✕✕139✕✕
  • @import

    CSS · The @import CSS at-rule loads styles from another stylesheet.

    Widely available
    112111841
  • @mixin

    CSS · The @mixin and @apply CSS at-rules define reusable style declaration fragments and apply them inside rules, optionally passing arguments.

    Limited
    ✕✕✕✕✕✕✕
  • @namespace

    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.

    Widely available
    112111841
  • @scope

    CSS · The @scope CSS at-rule sets the scope for a group of rules.

    Newly available
    14314314626.414314626.4
  • @starting-style

    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.

    Newly available
    11711712917.511712917.5
  • @supports

    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.

    Widely available
    281222928229
  • @supports (compatibility prefix)

    CSS · The @supports (-webkit-transform-3d) CSS media query is a standardized compatibility alternative to @supports (transform-style).

    Widely available
    21249418493.2
  • <a>

    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.

    Widely available
    112111841
  • <abbr>

    HTML · The <abbr> HTML element represents an abbreviation or acronym.

    Widely available
    212141843.2
  • <address>

    HTML · The <address> element represents contact information for a person or people, or for an organization.

    Widely available
    112111841
  • <article>

    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.

    Widely available
    512451844.2
  • <aside>

    HTML · The <aside> element represents a portion of a document whose content is only indirectly related to the document's main content.

    Widely available
    512451844.2
  • <audio>

    HTML · The <audio> element plays sound such as audio effects or music, optionally with controls provided by the browser.

    Widely available
    3123.53.11843
  • <b>

    HTML · The <b> HTML element draws reader's attention to text, styling text as bold by default.

    Widely available
    112111841
  • <base>

    HTML · The <base> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.

    Widely available
    112131842

Data: web-features (Baseline, W3C WebDX Community Group) and MDN browser-compat-data, updated when the site is built.