--- title: URL slug: Web/API/URL tags: - API - Experimental - NeedsTranslation - TopicStub - URL API translation_of: Web/API/URL --- <div>{{ApiRef("URL API")}} {{SeeCompatTable}}</div> <p>The <strong><code>URL</code></strong><strong> </strong>interface represent an object providing static methods used for creating object URLs.</p> <p>When using a user agent where no constructor has been implemented yet, it is possible to access such an object using the {{domxref("Window.URL")}} properties (prefixed with Webkit-based browser as <code>Window.webkitURL</code>).</p> <h2 id="Properties">Properties</h2> <p><em>Implements properties defined in {{domxref("URLUtils")}}.</em></p> <dl> <dt>{{domxref("URLUtils.href")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the whole URL.</dd> <dt>{{domxref("URLUtils.protocol")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the protocol scheme of the URL, including the final <code>':'</code>.</dd> <dt>{{domxref("URLUtils.host")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the host, that is the <em>hostname</em>, a <code>':'</code>, and the <em>port</em> of the URL.</dd> <dt>{{domxref("URLUtils.hostname")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the domain of the URL.</dd> <dt>{{domxref("URLUtils.port")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the port number of the URL.</dd> <dt>{{domxref("URLUtils.pathname")}}</dt> <dd>Is a {{domxref("DOMString")}} containing an initial <code>'/'</code> followed by the path of the URL.</dd> <dt>{{domxref("URLUtils.search")}}</dt> <dd>Is a {{domxref("DOMString")}} containing a <code>'?'</code> followed by the parameters of the URL.</dd> <dt>{{domxref("URLUtils.hash")}}</dt> <dd>Is a {{domxref("DOMString")}} containing a <code>'#'</code> followed by the fragment identifier of the URL.</dd> <dt>{{domxref("URLUtils.username")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the username specified before the domain name.</dd> <dt>{{domxref("URLUtils.password")}}</dt> <dd>Is a {{domxref("DOMString")}} containing the password specified before the domain name.</dd> <dt>{{domxref("URLUtils.origin")}} {{readonlyInline}}</dt> <dd>Returns a {{domxref("DOMString")}} containing the origin of the URL, that is its scheme, its domain and its port.</dd> </dl> <dl> <dt>{{domxref("URLUtils.searchParams")}}</dt> <dd>Returns a {{domxref("URLSearchParams")}} object allowing to access the GET query arguments contained in the URL.</dd> </dl> <h2 id="Constructor">Constructor</h2> <dl> <dt>{{domxref("URL.URL", "URL()")}}</dt> <dd>Creates and return a <code>URL</code> object composed from the given parameters.</dd> </dl> <h2 id="Methods">Methods</h2> <p><em>The <code>URL</code> interface implements methods defined in {{domxref("URLUtils")}}.</em></p> <dl> <dt>{{domxref("URLUtils.toString()")}}</dt> <dd>Returns a {{domxref("DOMString")}} containing the whole URL. It is a synonym for {{domxref("URLUtils.href")}}, though it can't be used to modify the value.</dd> </dl> <h2 id="Static_methods">Static methods</h2> <dl> <dt>{{ domxref("URL.createObjectURL()") }}</dt> <dd>Returns a {{domxref("DOMString")}} containing a unique blob URL, that is a URL with <code>blob:</code> as its scheme, followed by an opaque string uniquely identifying the object in the browser.</dd> <dt>{{ domxref("URL.revokeObjectURL()") }}</dt> <dd>Revokes an object URL previously created using {{ domxref("URL.createObjectURL()") }}.</dd> </dl> <h2 id="Specifications">Specifications</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">Specification</th> <th scope="col">Status</th> <th scope="col">Comment</th> </tr> <tr> <td>{{SpecName('File API', '#creating-revoking', 'URL')}}</td> <td>{{Spec2('File API')}}</td> <td>Added the static methods <code>URL.createObjectURL()</code> and <code>URL.revokeObjectURL</code><code>()</code>.</td> </tr> <tr> <td>{{SpecName('URL', '#api', 'Node')}}</td> <td>{{Spec2('URL')}}</td> <td>Initial definition (implements <code>URLUtils</code>).</td> </tr> </tbody> </table> <h2 id="Browser_compatibility">Browser compatibility</h2> <p>{{CompatibilityTable}}</p> <div id="compat-desktop"> <table class="compat-table"> <tbody> <tr> <th>Feature</th> <th>Chrome</th> <th>Firefox (Gecko)</th> <th>Internet Explorer</th> <th>Opera</th> <th>Safari</th> </tr> <tr> <td>Basic support</td> <td>8.0 as <code>webkitURL</code><br> 35</td> <td>{{CompatGeckoDesktop("2.0")}} (non-standard name) [1]<br> {{CompatGeckoDesktop("19.0")}}</td> <td>10.0</td> <td>15.0 as <code>webkitURL<br> {{CompatVersionUnknown}}</code></td> <td>6.0 as <code>webkitURL</code><br> 7.0</td> </tr> <tr> <td><code>URLUtils</code> properties</td> <td>32</td> <td>{{CompatVersionUnknown}}</td> <td>{{CompatUnknown}}</td> <td>19</td> <td>{{CompatVersionUnknown}}</td> </tr> <tr> <td><code>username</code>, <code>password</code>, and <code>origin</code></td> <td>32</td> <td>{{CompatGeckoDesktop("26.0")}}</td> <td>{{CompatUnknown}}</td> <td>19</td> <td>{{CompatVersionUnknown}}</td> </tr> <tr> <td><code>protocol, host, hostname, port, href</code>, <code>pathname</code>, <code>search</code>, <code>hash</code></td> <td>32</td> <td>{{CompatGeckoDesktop("22.0")}}</td> <td>{{CompatUnknown}}</td> <td>19</td> <td>{{CompatVersionUnknown}}</td> </tr> <tr> <td><code>searchParams</code></td> <td>{{CompatNo}}</td> <td>{{CompatGeckoDesktop("29.0")}}</td> <td>{{CompatUnknown}}</td> <td>19</td> <td>{{CompatVersionUnknown}}</td> </tr> </tbody> </table> </div> <div id="compat-mobile"> <table class="compat-table"> <tbody> <tr> <th>Feature</th> <th>Android</th> <th>Firefox Mobile (Gecko)</th> <th>IE Mobile</th> <th>Opera Mobile</th> <th>Safari Mobile</th> </tr> <tr> <td>Basic support</td> <td>{{CompatVersionUnknown}}as <code>webkitURL</code></td> <td>{{CompatGeckoMobile("14.0")}}(non-standard name) [1]<br> {{CompatGeckoMobile("19.0")}}</td> <td>{{CompatVersionUnknown}}</td> <td>15.0 as <code>webkitURL</code></td> <td> <p>6.0 as <code>webkitURL</code></p> <p> </p> </td> </tr> <tr> <td><code>URLUtils </code></td> <td>{{CompatUnknown}}</td> <td>{{CompatNo}}</td> <td>{{CompatUnknown}}</td> <td>{{CompatUnknown}}</td> <td>{{CompatVersionUnknown}}</td> </tr> <tr> <td><code>username</code>, <code>password</code>, <code>href</code>, and <code>origin</code></td> <td>{{CompatUnknown}}</td> <td>{{CompatGeckoDesktop("26.0")}}</td> <td>{{CompatUnknown}}</td> <td>{{CompatUnknown}}</td> <td>{{CompatVersionUnknown}}</td> </tr> </tbody> </table> </div> <p>[1] From Gecko 2 (Firefox 4) to Gecko 18 included, Gecko supported this interface with the non-standard <code>nsIDOMMozURLProperty</code> internal type. As the only to access such an object was through {{domxref("window.URL")}}, in practice, this didn't make any difference.</p> <h2 id="Chrome_Code_-_Scope_Availability">Chrome Code - Scope Availability</h2> <p>To use from chrome code, JSM and Bootstrap scope, you have to import it like this:</p> <pre class="brush: js">Cu.importGlobalProperties(['URL']); </pre> <p><code>URL</code> is available in Worker scopes.</p> <h2 id="See_also">See also</h2> <ul> <li>Property allowing to get such an object: {{domxref("Window.URL")}}.</li> <li><a href="/en-US/docs/Components.utils.importGlobalProperties">Components.utils.importGlobalProperties</a></li> </ul>