Prepending “http://” to a URL that doesn’t already contain “http://”


A simple solution for what you want is the following:

var prefix = 'http://';
if (s.substr(0, prefix.length) !== prefix)
    s = prefix + s;

However there are a few things you should be aware of…

The test here is case-sensitive. This means that if the string is initially Http:// this will change it to http://Http:// which is probably not what you want. You probably should also not modify any string starting with foo:// otherwise you could end up with something like http://

On the other hand if you receive an input such as then you probably do want to prepend http:// so just searching for :// might not be good enough for a general solution.

Alternative approaches

  • Using a regular expression:if (!s.match(/^[a-zA-Z]+:\/\//)) { s = 'http://' + s; }
  • Using a URI parsing library such as JS-URI.if (new URI(s).scheme === null) { s = 'http://' + s; }


Please enter your comment!
Please enter your name here