The substr() method returns a portion of the string, starting at the specified index and extending for a given number of characters afterwards.


str.substr(start[, length])


The index of the first character to include in the returned substring.
Optional. The number of characters to extract.

Return value

A new string containing the specified part of the given string.


substr() extracts length characters from a str, counting from the start index.

  • If start is a positive number, the index starts counting at the start of the string. Its value is capped at str.length.
  • If start is a negative number, the index starts counting from the end of the string. Its value is capped at -str.length.
  • Note: In Microsoft JScript, negative values of the start argument are not considered to refer to the end of the string.
  • If length is omitted, substr() extracts characters to the end of the string.
  • If length is undefined, substr() extracts characters to the end of the string.
  • If length is a negative number, it is treated as 0.
  • For both start and length, NaN is treated as 0.


Microsoft's JScript does not support negative values for the start index. To use this feature in JScript, you can use the following code:

// only run when the substr() function is broken
if ('ab'.substr(-1) != 'b') {
   *  Get the substring of a string
   *  @param  {integer}  start   where to start the substring
   *  @param  {integer}  length  how many characters to return
   *  @return {string}
  String.prototype.substr = function(substr) {
    return function(start, length) {
      // call the original method
      	// did we get a negative start, calculate how much it is from the beginning of the string
        // adjust the start parameter for negative value
        start < 0 ? this.length + start : start,


Using substr()

var aString = 'Mozilla';

console.log(aString.substr(0, 1));   // 'M'
console.log(aString.substr(1, 0));   // ''
console.log(aString.substr(-1, 1));  // 'a'
console.log(aString.substr(1, -1));  // ''
console.log(aString.substr(-3));     // 'lla'
console.log(aString.substr(1));      // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2));  // ''


ECMAScript (ECMA-262)
The definition of 'String.prototype.substr' in that specification.

Browser compatibility

Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100


Full support  
Full support
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

See also