CARVIEW |
User login is handled by the Internet Archive
User registration is handled by the Internet Archive
- Complete the Internet Archive user registration.
- Come back to https://purl.archive.org/
PURL help
- Home
- Help
What is a PURL?
A PURL is a persistent URL, it provides a permanent address to access a resource on the web. When a user retrieves a PURL they will be redirected to the current location of the resource. When an author needs to move a page they can update the PURL to point to the new location.
PURLs with a common prefix are grouped together into domains. Each domain has a single maintainer who can add new PURLs to the domain and make changes to existing PURLs within the domain.
PURL types
Each PURL has a target and status code or type. The target specifies where the PURL redirects to. The type is a status code from HTTP specification. The default PURL type is "302 Found", meaning that the object of the request was found elsewhere. This is the status code that should be used if there is not a reason to use a different one.
A partial PURL is a special type which will match the beginning of a URL. The PURL resolver will match as much of a PURL as it can and append the remainder to the end of the resolved URL. This reduces the need to create multiple PURLs to handle all of the resources that share a common location. For more on partials, see the section below the following table.
For more information, Wikipedia has brief summary of HTTP Status Codes and their meanings. For more much more detailed information, see the redirection section of RFC 9110.
PURL Type | Meaning | HTTP Shorthand |
---|---|---|
301 | Moved permanently to a target URL | Moved Permanently |
302 | Simple redirection to a target URL | Found |
303 | See other URLs (use for Semantic Web resources) | See Other |
307 | Temporary redirect to a target URL | Temporary Redirect |
404 | Temporarily gone | Not Found |
410 | Permanently gone | Gone |
Partial types and name resolution
As mentioned above, partials are a special type that only have meaning within the PURL service. They are not a standard. Though they can reduce the need to create many PURLs, they can also be a bit confusing as they can act a bit like wildcard forwarders. At a high level, PURLs are resolved as follows:- a patron visits https://purl.archive.org/some/path/to/a/purl;
- the PURL service determines the correct domain to use within the patron-entered path;
- within that domain, a search is performed for a matching PURL according to the following logic:
- if there is an exact match based on the PURL's "name" field, that PURL will be used and patron forwarded to the "target" of that PURL.
- next there's a check for a case insensitive match, and if one is found, then the PURL with the first case insensitive match is used;
- finally, if there's a partial type that matches, the PURL with the longest partial type "name" field is used.
name | type | target | created |
---|---|---|---|
/example-domain | 302 Found | https://example.org/a-domain-can-be-a-purl-too | 2024-05-07 23:34:38 |
/example-domain/partial | partial | https://example.org/partial | 2024-05-07 23:34:55 |
/example-domain/partial/something/specific | 302 Found | https://example.org/this-does-not-forward-to-the-partial-namespace | 2024-05-07 23:37:59 |
/example-domain/partial/crazy/nested/partial | partial | https://example.org/nested-partial/destination | 2024-05-07 23:38:50 |
- https://purl.archive.org/example-domain would forward only to https://example.org/a-domain-can-be-a-purl-too.
- https://purl.archive.org/example-domain/partial would forward to https://example.org/partial, but it would also forward anything after the name of our partial, which here is named "partial". Partials can be named anything. Only the type matters.
- https://purl.archive.org/example-domain/partial/123 is an example of this, and would forward to https://example.org/partial/123, because "123" was added to the end of the partial.
- https://purl.archive.org/example-domain/partial/this/is/weird would forward to https://example.org/partial/this/is/weird for the same reason.
- https://purl.archive.org/example-domain/partial/something/specific isn't treated as a partial, even though this occurs within the "example-domain/partial" namespace. It is an exact match of a PURL with a 302 redirect and would be treated as such. Therefore it would forward only to https://example.org/this-does-not-forward-to-the-partial-namespace, and the partial would not come into play at all.
- https://purl.archive.org/example-domain/partial/crazy/nested/partial/file5.tar.gz is a nested partial, and because it is longer than https://purl.archive.org/example-domain/partial, it would be matched first, so this would go to https://example.org/nested-partial/destination/file5.tar.gz.
Claiming a PURL domain
The PURL service is now administered by the Internet Archive. If you have any difficulty making changes to your PURLs please contact info@archive.org for assistance.
Administering PURLs
The PURL system is a service of the Internet Archive. To make changes to a PURL users need to have a user account with the Internet Archive.
Search for a PURL
PURLs are grouped into domains, domains can be searched from the home page.

The domain search shows a list of domains that match the search criteria. Each domain links to a domain details page.
Viewing the contents of a PURL domain
The domain details page displays the list of PURLs within the domain. This includes the name, redirect type and target for each PURL.
There is a form that can be used to add new PURLs.

Every PURL has a page that shows information about the PURL including the revision history. There is a link to the edit page.

Users can edit the type of PURL and the target URL.
Version
This is version 1.2.3.
![]() |
The PURL service is an initiative of the Internet Archive, a 501(c)(3) non-profit, building a digital library of Internet sites and other cultural artifacts in digital form. For help and assistance please email info@archive.org. |