---
name: "inet_ntop"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/inet_ntop"
---

# inet\_ntop(3)

convert IPv4 and IPv6 addresses from binary to text form

## NAME

inet\_ntop - convert IPv4 and IPv6 addresses from binary to text form

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <arpa/inet.h>
```

**const char \*inet\_ntop(**socklen\_t size;                       **int** *af***, const void \*restrict** *src***,**                       **char** *dst***\[restrict** *size***\], socklen\_t** *size***);**

## DESCRIPTION

This function converts the network address structure *src* in the *af* address family into a character string. The resulting string is copied to the buffer pointed to by *dst*, which must be a non-null pointer. The caller specifies the number of bytes available in this buffer in the argument *size*.

**inet\_ntop**() extends the [**inet\_ntoa**(3)](/inet_ntoa/3.md) function to support multiple address families, [**inet\_ntoa**(3)](/inet_ntoa/3.md) is now considered to be deprecated in favor of **inet\_ntop**(). The following address families are currently supported:

- **AF\_INET**

  *src* points to a *struct in\_addr* (in network byte order) which is converted to an IPv4 network address in the dotted-decimal format, "*ddd.ddd.ddd.ddd*". The buffer *dst* must be at least **INET\_ADDRSTRLEN** bytes long.

- **AF\_INET6**

  *src* points to a *struct in6\_addr* (in network byte order) which is converted to a representation of this address in the most appropriate IPv6 network address format for this address. The buffer *dst* must be at least **INET6\_ADDRSTRLEN** bytes long.

## RETURN VALUE

On success, **inet\_ntop**() returns a non-null pointer to *dst*. NULL is returned if there was an error, with *errno* set to indicate the error.

## ERRORS

- **EAFNOSUPPORT**

  *af* was not a valid address family.

- **ENOSPC**

  The converted address string would exceed the size given by *size*.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **inet\_ntop**() | Thread safety | MT-Safe locale |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001.

Note that RFC 2553 defines a prototype where the last argument *size* is of type *size\_t*. Many systems follow RFC 2553. glibc 2.0 and 2.1 have *size\_t*, but 2.2 and later have *socklen\_t*.

## BUGS

**AF\_INET6** converts IPv4-mapped IPv6 addresses into an IPv6 format.

## EXAMPLES

See [**inet\_pton**(3)](/inet_pton/3.md).

## SEE ALSO

[**getnameinfo**(3)](/getnameinfo/3.md), [**inet**(3)](/inet/3.md), [**inet\_pton**(3)](/inet_pton/3.md)
