← Reference · Nestor G Pestelos Jr
Internet Standards
URL vs URN vs URI
Reference entry · last updated August 24, 2026
Uniform Resource Identifier (URI), Uniform Resource Locator (URL), and Uniform Resource Name (URN) are three terms for identifiers used on the Internet, related as a general class and two of its categories. A URI is a compact sequence of characters that identifies an abstract or physical resource.[1] A URL is the subset of URIs that, in addition to identifying a resource, provides a means of locating it by describing its primary access mechanism, such as a network location.[1] A URN is a URI assigned under the urn scheme with the intent that it remain a persistent, location-independent identifier of the resource.[3] The relationship between the three is a recurring source of confusion, because the standards corpus has described it two different ways over time.[4]
Definitions
URI
A Uniform Resource Identifier is a sequence of characters matching the generic URI syntax that identifies an abstract or physical resource.[1] The concept was introduced in "Universal Resource Identifiers in WWW" (RFC 1630, 1994) and standardized in RFC 2396 (1998), which merged the earlier URL and relative-URL specifications into one generic syntax; the current specification is RFC 3986 (2005), which obsoletes RFC 2396.[1] A URI is not required to be reachable: "access to the resource is neither guaranteed nor implied by the presence of a URI."[1]
URL
"Uniform Resource Locator" (URL) is the term given to a URI that locates a resource. RFC 3986 defines a URL as "the subset of URIs that, in addition to identifying a resource, provide a means of locating the resource by describing its primary access mechanism (e.g., its network 'location')."[1] The name dates to RFC 1738 (1994), which defined the syntax for locating resources available "via the Internet" — chiefly the http, ftp, file, and related schemes, plus a generic form for future schemes.[2]
URN
A Uniform Resource Name is a URI assigned under the urn scheme and within a registered URN namespace, "with the intent that the URN will be a persistent, location-independent resource identifier."[3] RFC 8141 (2017) is the current specification; it obsoletes RFC 2141 (1997). RFC 3986 describes the same idea in looser terms: a URN is required to "remain globally unique and persistent even when the resource ceases to exist or becomes unavailable."[1]
The relationship
RFC 3986 states the relationship directly: "A URI can be further classified as a locator, a name, or both."[1] URL and URN are therefore not disjoint classes, and neither is every URI necessarily one of them. The specification emphasizes that a scheme does not lock an identifier into a class: "An individual scheme does not have to be classified as being just one of 'name' or 'locator'. Instances of URIs from any given scheme may have the characteristics of names or locators or both, often depending on the persistence and care in the assignment of identifiers by the naming authority, rather than on any quality of the scheme."[1]
| Term | Full name | What it is | Example |
|---|---|---|---|
| URI | Uniform Resource Identifier | The general class of resource identifier; a locator, a name, or both | Every URL and every URN is a URI |
| URL | Uniform Resource Locator | A URI that locates a resource via its primary access mechanism | http://www.ietf.org/rfc/rfc3986.txt |
| URN | Uniform Resource Name | A URI under the urn scheme, persistent and location-independent |
urn:isbn:0451450523 |
Classical and contemporary views
The confusion between the three terms is explained by RFC 3305, the report of the joint W3C/IETF URI Planning Interest Group, which describes two incompatible ways URI space has been partitioned over time.[4]
- Classical view (early to mid-1990s): an identifier was assumed to fall into one of two classes — a URL specifying location, or a URN specifying a name independent of location. "Without loss of generality," the report says, "URI space was thought to be partitioned into two classes: URL and URN."[4]
- Contemporary view: an individual scheme need not be cast into such classes.
http:is a URI scheme;urn:is also a URI scheme, which defines subspaces called namespaces. Under this view, "URL" does not refer to a formal partition of URI space; it is "a useful but informal concept" — a type of URI that identifies a resource via its primary access mechanism.[4]
RFC 3305 notes the practical consequence: because the RFC corpus spans both periods, "URL" and "URI" have often been used interchangeably, which confuses a community that expects them to mean different things.[4] RFC 3986 later made the recommended usage explicit: "Future specifications and related documentation should use the general term 'URI' rather than the more restrictive terms 'URL' and 'URN'."[1]
URNs and persistence
The defining property of a URN is persistence, not syntax. RFC 8141 requires that a URN namespace's names be unique (never reassigned to a different resource), assigned consistently, and assigned under a common definition — and it notes that "the syntactical correctness of a name starting with 'urn:' is not sufficient to make it a URN": the namespace identifier must be registered with the Internet Assigned Numbers Authority (IANA).[3] Because the identifier is meant to outlive any particular location, URN "resolution" is deliberately flexible — often mapping the URN to one or more current locators, but possibly returning only metadata, or nothing, depending on the namespace.[3]
Registered URN namespaces include those for ISBNs and ISSNs, book and serial identifiers that were created outside the Web and are reused as URNs — for example, the URN for a specific edition of a book is written urn:isbn: followed by the ISBN.[5] RFC 3986's own example list includes urn:oasis:names:specification:docbook:dtd:xml:4.1.2, drawn from the oasis namespace.[1]
Why the distinction matters
Two properties of the distinction have practical consequences. First, a URL carries an expectation of being dereferenceable — using it should retrieve the resource — whereas a URI in general only provides identification.[1] Second, a URL is not a promise of permanence: RFC 1738 warned already in 1994 that "there is no general guarantee that a URL which at one time points to a given object continues to do so" — the object may move, and the URL then points at nothing, or at a different object.[2] The URN design exists precisely to give a stable name that survives such moves, at the cost of not itself saying where the resource is.[3]
So the three terms answer different questions: a URL says where something is, a URN says what something is, and URI is the general term for either.[1][4]
See also
- ELI5: URL vs URN vs URI — a picture-book explainer covering the same ground
References
- ^ T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax," RFC 3986, STD 66, January 2005 — https://www.rfc-editor.org/rfc/rfc3986
- ^ T. Berners-Lee, L. Masinter, M. McCahill, "Uniform Resource Locators (URL)," RFC 1738, December 1994 — https://www.rfc-editor.org/rfc/rfc1738
- ^ P. Saint-Andre, J. Klensin, "Uniform Resource Names (URNs)," RFC 8141, April 2017 (obsoletes RFC 2141 and RFC 3406) — https://www.rfc-editor.org/rfc/rfc8141
- ^ M. Mealling, R. Denenberg, "Report from the Joint W3C/IETF URI Planning Interest Group: Uniform Resource Identifiers (URIs), URLs, and Uniform Resource Names (URNs): Clarifications and Recommendations," RFC 3305, August 2002 — https://www.rfc-editor.org/rfc/rfc3305
- ^ J. Hakala, H. Walravens, "Using International Standard Book Numbers as Uniform Resource Names," RFC 3187, October 2001 — https://www.rfc-editor.org/rfc/rfc3187