curl_easy_unescape(3)

✨ curl_easy_unescape(3) β€” URL decode a string ✨

okay so bestie 🫢 welcome to the libcurl Library Functions Manual page for curl_easy_unescape β€” manual name folded in right here so we can skip the boring header repeat. This whole page is about turning URL-encoded stuff back into a plain string, and it's lowkey iconic. πŸ¦‹

πŸŽ€ NAME πŸŽ€

curl_easy_unescape β€” URL decode a string

🌸 SYNOPSIS 🌸

#include <curl/curl.h>

char *curl_easy_unescape(CURL *curl, const char *input,
                         int inlength, int *outlength);

πŸ’… DESCRIPTION πŸ’…

This function converts the URL encoded string input to a "plain string" and returns that in an allocated memory area. All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) are converted to their binary versions. Although not constrained by its type, the returned data may not be altered. πŸ™ˆ pls don't touch it, bestie.

If the length argument is set to 0 (zero), curl_easy_unescape(3) uses strlen() on input to find out the size. ✨

If outlength is non-NULL, the function writes the length of the returned string in the integer it points to. This allows proper handling even for strings containing %00. Since this is a pointer to an int type, it can only return a value up to INT_MAX so no longer string can be returned in this parameter. 😭

Since 7.82.0, the curl parameter is ignored. Prior to that there was per-handle character conversion support for some old operating systems such as TPF, but it was otherwise ignored. πŸ’€

You must curl_free(3) the returned string when you are done with it. 🫢 this part is not optional, bestie.

🌈 PROTOCOLS 🌈

This functionality affects all supported protocols. πŸ‘‘

πŸ“ EXAMPLE πŸ“

int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    int decodelen;
    char *decoded = curl_easy_unescape(curl, "%63%75%72%6c", 12, &decodelen);
    if(decoded) {
      /* do not assume printf() works on the decoded data */
      printf("Decoded: ");
      /* ... */
      curl_free(decoded);
    }
    curl_easy_cleanup(curl);
  }
}

⭐ AVAILABILITY ⭐

Added in curl 7.15.4. πŸŽ€

πŸ’– RETURN VALUE πŸ’–

A pointer to a null-terminated string or NULL if it failed. 😭

πŸ¦‹ SEE ALSO πŸ¦‹


okay bye bestie πŸ’œ this was the libcurl manual page for curl_easy_unescape(3), dated 2026-10-12 β€” now go decode something iconic and remember to curl_free(3) it. ✨

πŸ“¦ where this page comes from