---
title: "URLWithString:relativeToURL:"
framework: foundation
role: symbol
role_heading: Type Method
path: "foundation/nsurl/urlwithstring:relativetourl:"
---

# URLWithString:relativeToURL:

Creates and returns an NSURL object initialized with a base URL and a relative string.

## Declaration

```occ
+ (instancetype) URLWithString:(NSString *) URLString relativeToURL:(NSURL *) baseURL;
```

## Parameters

- `URLString`: The URL string with which to initialize the NSURL object. May not be nil. Linked on or after iOS 17, this method parses URLString according to RFC 3986. Linked before iOS 17, this method parses URLString according to RFCs 1738 and 1808. URLString is interpreted relative to baseURL.
- `baseURL`: The base URL for the NSURL object.

## Return Value

Return Value An NSURL object initialized with URLString and baseURL. If URLString was malformed or nil, returns nil.

## Discussion

Discussion This method allows you to create a URL relative to a base path or URL. For example, if you have the URL for a folder on disk and the name of a file within that folder, you can construct a URL for the file by providing the folder’s URL as the base path (with a trailing slash) and the filename as the string part. important: For apps linked on or after iOS 17 and aligned OS versions, NSURL parsing has updated from the obsolete RFC 1738/1808 parsing to the same RFC 3986 parsing as NSURLComponents. This unifies the parsing behaviors of the NSURL and NSURLComponents APIs. Now, NSURL automatically percent- and IDNA-encodes invalid characters to help create a valid URL. To check if URLString is strictly valid according to the RFC, use the new [NSURL URLWithString:URLString encodingInvalidCharacters:NO] method. This method leaves all characters as they are and returns nil if URLString is explicitly invalid. For apps linked before iOS 17, this method expects URLString to contain only characters that are allowed in a properly formed URL. All other characters must be properly percent encoded. Any percent-encoded characters are interpreted using UTF-8 encoding.

## See Also

### Creating a URL object

- [URLWithString:](foundation/nsurl/urlwithstring:.md)
- [init(string:)](foundation/nsurl/init(string:).md)
- [URLWithString:encodingInvalidCharacters:](foundation/nsurl/urlwithstring:encodinginvalidcharacters:.md)
- [init(string:encodingInvalidCharacters:)](foundation/nsurl/init(string:encodinginvalidcharacters:).md)
- [init(string:relativeTo:)](foundation/nsurl/init(string:relativeto:).md)
- [fileURL(withPath:isDirectory:)](foundation/nsurl/fileurl(withpath:isdirectory:).md)
- [init(fileURLWithPath:isDirectory:)](foundation/nsurl/init(fileurlwithpath:isdirectory:).md)
- [fileURL(withPath:relativeTo:)](foundation/nsurl/fileurl(withpath:relativeto:).md)
- [init(fileURLWithPath:relativeTo:)](foundation/nsurl/init(fileurlwithpath:relativeto:).md)
- [fileURL(withPath:isDirectory:relativeTo:)](foundation/nsurl/fileurl(withpath:isdirectory:relativeto:).md)
- [init(fileURLWithPath:isDirectory:relativeTo:)](foundation/nsurl/init(fileurlwithpath:isdirectory:relativeto:).md)
- [fileURL(withPath:)](foundation/nsurl/fileurl(withpath:).md)
- [init(fileURLWithPath:)](foundation/nsurl/init(fileurlwithpath:).md)
- [fileURL(withPathComponents:)](foundation/nsurl/fileurl(withpathcomponents:).md)
- [init(resolvingAliasFileAt:options:)](foundation/nsurl/init(resolvingaliasfileat:options:).md)
