Index
CSS
- ::first-letter CSS pseudo-element selector
- ::placeholder CSS pseudo-element
- ::selection CSS pseudo-element
- :dir() CSS pseudo-class
- :has() CSS relational pseudo-class
- :in-range and :out-of-range CSS pseudo-classes
- :matches() CSS pseudo-class
- :placeholder-shown CSS pseudo-class
- @font-face Web fonts
- Blending of HTML/SVG elements
- calc() as CSS unit value
- Case-insensitive CSS attribute selectors
- ch (character) unit
- CSS 2.1 selectors
- CSS ::marker pseudo-element
- CSS :read-only and :read-write selectors
- CSS all property
- CSS Animation
- CSS Appearance
- CSS background-attachment
- CSS background-blend-mode
- CSS background-position edge offsets
- CSS background-repeat round and space
- CSS box-decoration-break
- CSS caret-color
- CSS clip-path property (for HTML)
- CSS Conical Gradients
- CSS Containment
- CSS Counter Styles
- CSS Counters
- CSS currentColor value
- CSS Device Adaptation
- CSS display: contents
- CSS element() function
- CSS Exclusions Level 1
- CSS Feature Queries
- CSS Filter Effects
- CSS filter() function
- CSS first-line pseudo-element
- CSS Flexible Box Layout Module
- CSS Font Loading
- CSS font-feature-settings
- CSS font-rendering controls
- CSS font-size-adjust
- CSS font-stretch
- CSS font-variant-alternates
- CSS font-variant-numeric
- CSS Generated content for pseudo-elements
- CSS grab & grabbing cursors
- CSS Gradients
- CSS Grid Layout (level 1)
- CSS hanging-punctuation
- CSS Hyphenation
- CSS image-set
- CSS Initial Letter
- CSS initial value
- CSS inline-block
- CSS justify-content: space-evenly
- CSS Logical Properties
- CSS Masks
- CSS math functions min(), max() and clamp()
- CSS min/max-width/height
- CSS Motion Path
- CSS namespaces
- CSS outline properties
- CSS overflow property
- CSS overflow-anchor (Scroll Anchoring)
- CSS page-break properties
- CSS Paint API
- CSS position:fixed
- CSS position:sticky
- CSS Regions
- CSS Repeating Gradients
- CSS resize property
- CSS revert value
- CSS Scroll snap
- CSS Shapes Level 1
- CSS Subgrid
- CSS Table display
- CSS text-indent
- CSS text-justify
- CSS text-orientation
- CSS touch-action property
- CSS unset value
- CSS user-select: none
- CSS Variables (Custom Properties)
- CSS widows & orphans
- CSS will-change property
- CSS writing-mode property
- CSS3 2D Transforms
- CSS3 3D Transforms
- CSS3 attr() function for all properties
- CSS3 Background-image options
- CSS3 Border images
- CSS3 Border-radius (rounded corners)
- CSS3 Box-shadow
- CSS3 Box-sizing
- CSS3 Colors
- CSS3 Cursors (original values)
- CSS3 Cursors: zoom-in & zoom-out
- CSS3 font-kerning
- CSS3 image-orientation
- CSS3 Media Queries
- CSS3 Multiple backgrounds
- CSS3 Multiple column layout
- CSS3 object-fit/object-position
- CSS3 Opacity
- CSS3 Overflow-wrap
- CSS3 selectors
- CSS3 tab-size
- CSS3 text-align-last
- CSS3 Text-overflow
- CSS3 Text-shadow
- CSS3 Transitions
- CSS3 word-break
- CSSOM Scroll-behavior
- display: flow-root
- display: run-in
- Font unicode-range subsetting
- gap property for Flexbox
- getComputedStyle
- Intrinsic & Extrinsic Sizing
- letter-spacing CSS property
- Media Queries: interaction media features
- Media Queries: resolution feature
- Rebeccapurple color
- rem (root em) units
- selector list argument of :not()
- SVG in CSS backgrounds
- system-ui value for font-family
- text-decoration styling
- text-emphasis styling
- TTF/OTF - TrueType and OpenType font support
- Variable fonts
- Viewport units: vw, vh, vmin, vmax
- Window.devicePixelRatio
- #rrggbbaa hex color notation
- :default CSS pseudo-class
- :focus-visible CSS pseudo-class
- :focus-within CSS pseudo-class
- :indeterminate CSS pseudo-class
- :optional CSS pseudo-class
- background-position-x & background-position-y
- Crisp edges/pixelated images
- CSS @apply rule
- CSS Backdrop Filter
- CSS Canvas Drawings
- CSS color-adjust
- CSS Cross-Fade Function
- CSS Environment Variables env()
- CSS font-smooth
- CSS line-clamp
- CSS overscroll-behavior
- CSS pointer-events (for HTML)
- CSS Reflections
- CSS scrollbar styling
- CSS text-size-adjust
- CSS text-stroke and text-fill
- CSS zoom
- Explicit descendant combinator >>
- High-quality kerning pairs & ligatures
- prefers-color-scheme media query
- prefers-reduced-motion media query
- Scoped CSS
- selector list argument of :nth-child and :nth-last-child CSS pseudo-classes
- All CSS features
HTML5
- accept attribute for file input
- async attribute for external scripts
- Attributes for form submission
- Audio element
- Audio Tracks
- Autofocus attribute
- Canvas (basic support)
- Canvas blend modes
- classList (DOMTokenList)
- Color input type
- contenteditable attribute (basic support)
- Custom Elements (V1)
- Custom protocol handling
- Datalist element
- dataset & data-* attributes
- Date and time input types
- defer attribute for external scripts
- Details & Summary elements
- Dialog element
- disabled attribute of the fieldset element
- Download attribute
- Drag and Drop
- Email, telephone & URL input types
- Form attribute
- Form validation
- getElementsByClassName
- Hashchange event
- hidden attribute
- HTML Imports
- HTML Media Capture
- HTML templates
- HTML5 form features
- HTML5 semantic elements
- indeterminate checkbox
- Inline SVG in HTML5
- input event
- input placeholder attribute
- inputmode attribute
- Link type "noreferrer"
- maxlength attribute for input and textarea elements
- meter element
- Minimum length attribute for input fields
- Multiple file selection
- naturalWidth & naturalHeight image properties
- Number input type
- OffscreenCanvas
- PageTransitionEvent
- Path2D
- Pattern attribute for input fields
- Picture element
- Ping attribute
- PNG favicons
- Printing Events
- progress element
- Range input type
- readonly attribute of input and textarea elements
- rel=noopener
- relList (DOMTokenList)
- Reversed attribute of ordered lists
- Ruby annotation
- sandbox attribute for iframes
- Search input type
- Selection controls for input & textarea
- Session history management
- Spellcheck attribute
- srcdoc attribute for iframes
- Srcset and sizes attributes
- Subresource Integrity
- SVG favicons
- tabindex global attribute
- Text API for Canvas
- Video element
- Video Tracks
- wbr (word break opportunity) element
- Web App Manifest
- WebGL - 3D Canvas graphics
- WebGL 2.0
- Context menu item (menuitem element)
- Custom Elements (deprecated V0 spec)
- Lazy loading via attribute for images & iframes
- Offline web applications
- seamless attribute for iframes
- All HTML5 features
Security
- 'SameSite' cookie attribute
- ChaCha20-Poly1305 cipher suites for TLS
- Content Security Policy 1.0
- Content Security Policy Level 2
- Public Key Pinning
- Referrer Policy
- Server Name Indication
- Strict Transport Security
- TLS 1.1
- TLS 1.2
- TLS 1.3
- Upgrade Insecure Requests
- Web Authentication API
- X-Frame-Options HTTP header
- All Security features
Other
- "once" event listener option
- AAC audio file format
- autocomplete attribute: on & off values
- AV1 video format
- Brotli Accept-Encoding/Content-Encoding
- ChildNode.remove()
- Client Hints: DPR, Width, Viewport-Width
- CSS Paged Media (@page)
- Data URIs
- document.elementFromPoint()
- document.head
- document.scrollingElement
- DOM manipulation convenience methods
- DOMContentLoaded
- DOMMatrix
- Dynamic Adaptive Streaming over HTTP (MPEG-DASH)
- Element.closest()
- Element.insertAdjacentElement() & Element.insertAdjacentText()
- ES6 Generators
- EventTarget.addEventListener()
- EventTarget.dispatchEvent
- FLAC audio format
- focusin & focusout events
- HEIF/ISO Base Media File Format
- HEVC/H.265 video format
- HTTP/2 protocol
- JPEG 2000 image format
- JPEG XR image format
- KeyboardEvent.code
- KeyboardEvent.getModifierState()
- KeyboardEvent.key
- KeyboardEvent.location
- MathML
- Media Fragments
- MP3 audio format
- MPEG-4/H.264 video format
- Mutation events
- Node.compareDocumentPosition()
- Node.innerText
- Node.textContent
- Ogg Vorbis audio format
- Ogg/Theora video format
- Opus
- Passive event listeners
- PNG alpha transparency
- querySelector/querySelectorAll
- Resource Hints: dns-prefetch
- Resource Hints: modulepreload
- Resource Hints: preconnect
- Resource Hints: prefetch
- Resource Hints: preload
- Resource Hints: prerender
- SDCH Accept-Encoding/Content-Encoding
- Shadow DOM (V1)
- theme-color Meta Tag
- WAI-ARIA Accessibility features
- Wav audio format
- WebAssembly
- WebM video format
- WebVTT - Web Video Text Tracks
- WOFF - Web Open Font Format
- WOFF 2.0 - Web Open Font Format
- XHTML served as application/xhtml+xml
- Animated PNG (APNG)
- EOT - Embedded OpenType fonts
- HTTP Live Streaming (HLS)
- KeyboardEvent.charCode
- KeyboardEvent.which
- Resource Hints: Lazyload
- Shadow DOM (deprecated V0 spec)
- SPDY protocol
- WebP image format
- XHTML+SMIL animation
- All Other features
JS API
- AbortController & AbortSignal
- Accelerometer
- Ambient Light Sensor
- Auxclick
- Base64 encoding and decoding
- Basic console logging functions
- Battery Status API
- Beacon API
- BigInt
- Blob constructing
- Blob URLs
- BroadcastChannel
- Channel messaging
- console.time and console.timeEnd
- Constraint Validation API
- createImageBitmap
- Credential Management API
- Cross-document messaging
- Cross-Origin Resource Sharing
- crypto.getRandomValues()
- CSS.supports() API
- CustomEvent
- DeviceOrientation & DeviceMotion events
- Do Not Track API
- Document Object Model Range
- document.currentScript
- DOM Parsing and Serialization
- Element.getBoundingClientRect()
- Element.insertAdjacentHTML()
- Encrypted Media Extensions
- Fetch
- FIDO U2F API
- File API
- FileReader API
- FileReaderSync
- Full Screen API
- Gamepad API
- Geolocation
- getUserMedia/Stream API
- Gyroscope
- High Resolution Time API
- IndexedDB
- IndexedDB 2.0
- Input Method Editor API
- Internationalization API
- IntersectionObserver
- Magnetometer
- matches() DOM method
- matchMedia
- Media Capture from DOM Elements API
- Media Source Extensions
- MediaRecorder API
- Mutation Observer
- Navigation Timing API
- navigator.hardwareConcurrency
- Object RTC (ORTC) API for WebRTC
- Online/offline status
- Orientation Sensor
- Page Visibility
- Payment Request API
- Pointer events
- Pointer Lock API
- Proximity API
- Push API
- requestAnimationFrame
- requestIdleCallback
- Resource Timing
- Screen Orientation
- Scroll methods on elements (scroll, scrollTo, scrollBy)
- scrollIntoView
- Selection API
- Server Timing
- Server-sent events
- Service Workers
- Shared Web Workers
- Streams
- Synchronous Clipboard API
- TextEncoder & TextDecoder
- Touch events
- URL API
- URLSearchParams
- User Timing API
- Vibration API
- Web Animations API
- Web Audio API
- Web Cryptography
- Web MIDI API
- Web Notifications
- Web Sockets
- Web Storage - name/value pairs
- Web Workers
- WebRTC Peer-to-peer connections
- XMLHttpRequest advanced features
- Background Sync API
- Directory selection from file input
- document.evaluate & XPath
- Document.execCommand()
- Efficient Script Yielding: setImmediate()
- Element.scrollIntoViewIfNeeded()
- Feature Policy
- Filesystem & FileWriter API
- Network Information API
- Permissions API
- Picture-in-Picture
- Resize Observer
- Speech Recognition API
- Speech Synthesis API
- Web Bluetooth
- Web Share API
- Web SQL Database
- WebUSB
- WebXR API
- All JS API features
JS
- Array.prototype.find
- Array.prototype.includes
- Arrow functions
- asm.js
- Async functions
- const
- Date.prototype.toLocaleDateString
- ECMAScript 2015 (ES6)
- ECMAScript 5
- ECMAScript 5 Strict Mode
- ES6 classes
- ES6 Number
- ES6 Template Literals (Template Strings)
- JavaScript modules via script tag
- JavaScript modules: dynamic import()
- JSON parsing
- let
- localeCompare()
- Object.entries
- Object.values method
- Promise.prototype.finally
- Promises
- Proxy object
- Rest parameters
- Shared Array Buffer
- String.prototype.includes
- String.prototype.padStart(), String.prototype.padEnd()
- Typed Arrays
- unhandledrejection/rejectionhandled events
- flat & flatMap array methods
- Lookbehind in JS regular expressions
- Object.observe data binding
- All JS features
Home
Latest features
Most searched features
Did you know?
-
You can import usage data from your Google Analytics account and see exactly how well a feature is supported among your own site's visitors. Look under the Settings panel to get started!
-
Usage data for all countries and continents can be imported via the Settings panel.
-
By default, older browser versions are only shown if they have >= 0.5% usage share. You can increase or decrease this value from the Settings panel.
-
If a feature you're looking for is not available on the site, you can vote to have it included. Better yet, if you've done the research you can even submit it yourself!
-
Each feature support table includes a "Usage relative" button. This will resize each browser version cell to be relative to the amount of support it has for the selected usage source.
Browser scores
Tables
About
"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.
The site was built and is maintained by Alexis Deveria, with occasional updates provided by the web development community. The design used as of 2014 was largely created by Lennart Schoors.
FAQ
May I use your data in my presentation/article/site, etc?
Yes, the support data on this site is free to use under the CC BY 4.0 license.
Is there a way to see the support data in colors other than red/green?
Yes, you can enable accessible colors from this link or from the option under Settings. This color scheme will be used again on revisit.
Do you have the data available in a raw format?
Yes, the raw support data is available on GitHub and is updated regularly.
Could you add feature X to the site?
Adding features takes quite some time and there are many requests for additions. Because of this I use GitHub issues to manage requests. Feel free to add/vote for your feature there.
If you've done the research yourself already, you can also submit a feature on GitHub.
Could you cover email clients too so I can see what I can use in HTML emails?
That certainly sounds useful, but for now I only intend to take on web browser support.
Which features do you choose to add to this list?
I use the following criteria:
- Useful to web designers/developers
- Likely to be eventually implemented by the majority of browsers
- Not already fully supported in even old browsers. These features can be made searchable but will not include support tables.
Most features are added in priority order from this list.
How do you test support?
I use a hand-crafted test suite to test features, which tests for basic support of each feature.
The test suite is publicly available at tests.caniuse.com.
Where do you get your information for upcoming versions?
Most information comes directly from the latest developer/preview/nightly builds.
When is a feature considered "supported"?
When its primary purpose is largely fulfilled. It does not mean it's 100% supported, just that it's usable in most cases.
How often is this page updated?
I try to keep it as current as possible, with new information being usually being processed within a few days. Follow the feed if you'd like keep up with all the changes made.