Working as a web developer means it's good to know as much about how the internet works as possible. It also means you'll hear a lot of acronyms that aren't always used correctly.
An example of some of the acronyms you'll hear are URIs and URLs. While they are used interchangeably, there are some subtle differences. For starters, URI stands for uniform resource identifier and URL stands for uniform resource locator.
Most of the confusion with these two is because they are related. You see, a URI can be a name, locator, or both for an online resource where a URL is just the locator. URLs are a subset of URIs. That means all URLs are URIs. It doesn't work the opposite way though.
Not all URIs are URLs because a URI could be a name instead of a locator. Here's an illustration of the difference between the two:
Your name could be a URI because it identifies you, but it couldn't be a URL because it doesn't help anyone find your location. On the other hand, your address is both a URI and a URL because it both identifies you and it provides a location for you.
In the web dev world, you might be trying to get different resources by name so you'll have different URIs that have distinct URLs. And that's how the confusion started. Now that you know the difference, hopefully it won't be as hard for you to figure out what you need and where to find it when people start talking about resources.
Remember, a URL is the locator of a resource. The URI is the identifier of the resource and it can just happen to be a locator. I hope this helped clear up some of the jargon we use!
I always like to hear from you guys so tell me something good in the comments!
Hey! You should follow me on Twitter because reasons: https://twitter.com/FlippedCoding
Top comments (33)
Always wondered. Would have been nice to have seen some examples too :)
dev.to → URI
dev.to with protocol (https, ftp) → URL
tools.ietf.org/html/rfc3986#sectio...
dev.to is not a URI, it is just a domain name.
URI's must start with a scheme (e.g. file, http, ftp) as specified in section 1.1.1 of the RFC you linked to.
A scheme may or may not be associated with a protocol which is where your confustion may be coming from. For instance the schemes 'http' and 'ftp' are clearly associated with the HTTP and FTP protocols, whereas the 'file' scheme is not associated with any protocol.
Hm yes, correct. I think I confused myself :D
Sorry.
If "Your Name" can be an URI, any domain name is an URI too, yes?
Love the graphic! Reminds me of the relationship between squares and rectangles.
Thank you very much for this post! It definitely clears up a lot on the difference between these two terms. I find it's really important to get the terms right, just so I don't confuse others when explaining my code :)
You could also say that the URL is that part of the URI that never changes, right?
Example:
example.com/Project/users/1
example.com/Project/posts
In this case, the URL is “www.example.com/Project”.
Correct me if I’m wrong!
By the way, nice article!
They are both URIs but not URLs, because you do not know where to find them. To be a locator I think you need to specify where I can find it, in this case it should have a protocol.
Hmm, that makes sense. So my affirmation would be valid if I added the protocol to both of them?
There is no formal differentiation that is definitive.
This comes the closest to explaining the difference:
tools.ietf.org/html/rfc3305#sectio...
... and basically states they are ALMOST equivalent ... but not quite.
The entire RFC3305 is about the confusion about URI, URL and URN and the conclusion is that there needs to be work done to clarify the confusion:
tools.ietf.org/html/rfc3305#section-5
you have to reverse URL and URI in your graph example.
If I'm reading you correctly, URI (Name) is a subset of URL (Name + location), so the shapes should be the other way round : URL should wrap URI and not the opposite.
Why am I the first one to notice ?
You are wrong... commons.wikimedia.org/wiki/File:UR...
What is an example of an URI that is not an URL?
Here's a URI that's not a URL:
example.test.com
The reason that this is not a URL is because this system could respond to different protocols.
This URI could have a URL like any of these:
ftp://example.test.com
example.test.com
example.test.com
Hopefully that makes sense!
I don't think
example.test.com
is a valid URI. In RFC3986:URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
And it didn't say anything about that schema can be ignored. Also ":" seems to be necessary in the definition. Am I thinking wrong?
mailto:email@domain.com
would be an URI but not a URL.Not clear at all, in the context of web development, sorry.
Examples would help, as well as breaking down URLs into their components.
Anyway, this is not a topic worth writing a new post about. There are canonical explanations, such as the one over at Webmasters.
Fantastic concept for a short article. I give it an A for effort but a D for execution. It provided no examples and based on the confusion lingering in the comments they could have cleared the confusion. It also left me pondering what some examples my look like.
I refer to tools.ietf.org/html/rfc1630
page 2
URI:
URL:
URI is just an abstract syntax to write down 'object reference' in universal way:
scheme:path
path not necessary starts with '//'
and 'scheme' is not necessary an existing protocol
URI, but not URL:
Here is more explanation about URLs:
This was helpful explanation. Exactly what I needed. Thank you!.