SymbolBaseline · Widely available
A Symbol value is a unique, non-enumerable primitive value used for encapsulation or information hiding. For example, a symbol can be a key of an object that can never collide with any other key.
Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Sep 30, 2015. Widely available since Mar 30, 2018.
Browser support
DesktopChrome
1–37Not supported
38+Supportedsince Oct 7, 2014
Current: 155Edge
12+Supportedsince Jul 29, 2015
Current: 154Firefox
1–35Not supported
36+Supportedsince Feb 24, 2015
Current: 157Safari
1–8Not supported
9+Supportedsince Sep 30, 2015
Current: 27MobileChrome Android
18–37Not supported
38+Supportedsince Oct 8, 2014
Current: 155Firefox Android
4–35Not supported
36+Supportedsince Feb 27, 2015
Current: 157Safari iOS
1–8Not supported
9+Supportedsince Sep 16, 2015
Current: 27How to use
This feature is Baseline widely available — use it freely, no fallback needed.
Example
Full syntax and examples are on MDN: Symbol.species.
Feature detection
JS · check before using
if (typeof Symbol !== "undefined") {
// Symbol is available
}Sub-features
Support for each part of the feature (21). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Array.@@species | 51 | 79 | 48 | 10 | 51 | 48 | 10 |
| Symbol | 38 | 12 | 36 | 9 | 38 | 36 | 9 |
| Symbol.@@toPrimitive | 47 | 15 | 44 | 10 | 47 | 44 | 10 |
| Symbol.Symbol | 38 | 12 | 36 | 9 | 38 | 36 | 9 |
| Symbol.description | 70 | 79 | 63 | 12.1 | 70 | 63 | 12.2 |
| Symbol.for | 40 | 12 | 36 | 9 | 40 | 36 | 9 |
| Symbol.hasInstance | 50 | 15 | 50 | 10 | 50 | 50 | 10 |
| Symbol.isConcatSpreadable | 48 | 15 | 48 | 10 | 48 | 48 | 10 |
| Symbol.iterator | 43 | 12 | 36 | 10 | 43 | 36 | 10 |
| Symbol.keyFor | 40 | 12 | 36 | 9 | 40 | 36 | 9 |
| Symbol.match | 50 | 79 | 40 | 10 | 50 | 40 | 10 |
| Symbol.matchAll | 73 | 79 | 67 | 13 | 73 | 67 | 13 |
| Symbol.replace | 50 | 79 | 49 | 10 | 50 | 49 | 10 |
| Symbol.search | 50 | 79 | 49 | 10 | 50 | 49 | 10 |
| Symbol.species | 51 | 13 | 41 | 10 | 51 | 41 | 10 |
| Symbol.split | 50 | 79 | 49 | 10 | 50 | 49 | 10 |
| Symbol.toPrimitive | 47 | 15 | 44 | 10 | 47 | 44 | 10 |
| Symbol.toString | 38 | 12 | 36 | 9 | 38 | 36 | 9 |
| Symbol.toStringTag | 49 | 15 | 51 | 10 | 49 | 51 | 10 |
| Symbol.toStringTag.dom_objects | 50 | 79 | 78 | 14 | 50 | 79 | 14 |
Show 1 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Symbol.valueOf | 38 | 12 | 36 | 9 | 38 | 36 | 9 |