This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The type read-only property of the Selection interface returns a DOMString describing the type of the current selection.


value = sel.type


A DOMString describing the type of the current selection. Possible values are:

  • None: No selection has currently been made.
  • Caret: The selection is collapsed (i.e. the caret is placed on some text, but no range has been selected).
  • Range: A range has been selected.


In this example, the event handler will fire each time a new selection is made. console.log(selection.type) will return Caret or Range depending on whether the caret is placed at a single point in the text, or a range has been selected.

var selection;

document.onselectionchange = function() {
  console.log('New selection made');
  selection = document.getSelection();


Specification Status Comment
Selection API
The definition of 'Selection.type' in that specification.
Working Draft Current

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support (Yes) (Yes) 57 (57) (Yes) (Yes) ?
Feature Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support ? (Yes) 57.0 (57) ? ? ?

See also

Document Tags and Contributors

Contributors to this page: chrisdavidmills
Last updated by: chrisdavidmills,