Three.js can use WebGL to render your scenes on all modern browsers. For older browsers, especially Internet Explorer 10 and below, you may have to fallback to one of the other [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm/renderers renderers] (CSS2DRenderer, CSS3DRenderer, SVGRenderer). Additionally, you may have to include some polyfills, especially if you are using files from the [link:https://github.com/mrdoob/three.js/tree/master/examples /examples] folder.

Note: if you don't need to support these old browsers, then it is not recommended to use the other renderers as they are slower and support less features than the WebGLRenderer.

Browsers that support WebGL

Google Chrome 9+, Firefox 4+, Opera 15+, Safari 5.1+, Internet Explorer 11 and Microsoft Edge. You can find which browsers support WebGL at [link:https://caniuse.com/#feat=webgl Can I use WebGL].

JavaScript Language Features or Web APIs Used in three.js

Here are some features used in three.js. Some of them may require additional polyfills.

Feature Use Scope Modules
Typed Arrays Source BufferAttribute, BufferGeometry, etc.
Web Audio API Source Audio, AudioContext, AudioListener, etc.
WebXR Device API Source WebXRManager
Blob Source FileLoader, etc.
Promise Examples GLTFLoader, DRACOLoader, BasisTextureLoader, GLTFExporter, VRButton, ARButton, etc.
Fetch Examples ImageBitmapLoader, etc.
File API Examples GLTFExporter, etc.
URL API Examples GLTFLoader, etc.
Pointer Lock API Examples PointerLockControls


Just import polyfills based on your requirements. Taking IE9 as an example, you need to polyfill at least these features:

Suggested polyfills