curl\_url\_dup(3) Library Functions Manual curl\_url\_dup(3)

# [NAME](#NAME)

curl\_url\_dup - duplicate a URL handle

# [SYNOPSIS](#SYNOPSIS)

```
#include <curl/curl.h>
CURLU *curl_url_dup(const CURLU *inhandle);
```

# [DESCRIPTION](#DESCRIPTION)

Duplicates the URL object the input *CURLU* *inhandle* identifies and returns a pointer to the copy as a new *CURLU* handle. The new handle also needs to be freed with [*curl\_url\_cleanup(3)*](/man/os/curl/curl_url_cleanup.3).

# [PROTOCOLS](#PROTOCOLS)

This functionality affects all supported protocols

# [EXAMPLE](#EXAMPLE)

```
int main(void)
{


  CURLUcode rc;


  CURLU *url = curl_url();


  CURLU *url2;


  rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0);


  if(!rc) {


    url2 = curl_url_dup(url); /* clone it */


    curl_url_cleanup(url2);


  }


  curl_url_cleanup(url);
}
```

# [AVAILABILITY](#AVAILABILITY)

Added in curl 7.62.0

# [RETURN VALUE](#RETURN_VALUE)

Returns a pointer to a new *CURLU* handle or NULL if out of memory or if *inhandle* is NULL.

# [SEE ALSO](#SEE_ALSO)

[**CURLOPT\_CURLU**(3)](/man/os/curl/CURLOPT_CURLU.3), [**curl\_url**(3)](/man/os/curl/curl_url.3), [**curl\_url\_cleanup**(3)](/man/os/curl/curl_url_cleanup.3), [**curl\_url\_get**(3)](/man/os/curl/curl_url_get.3), [**curl\_url\_set**(3)](/man/os/curl/curl_url_set.3)

2026-10-31 libcurl

---

Document: curl_url_dup(3) from curl 8.23.0-r3 (Chainguard OS)
Source: https://github.com/curl/curl.git
