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

# wcwidth(3)

determine columns needed for a wide character

## NAME

wcwidth - determine columns needed for a wide character

## LIBRARY

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

## SYNOPSIS

```
#define _XOPEN_SOURCE       /* See feature_test_macros(7) */
#include <wchar.h>
```

**int wcwidth(wchar\_t** *wc***);**

## DESCRIPTION

The **wcwidth**() function returns the number of columns needed to represent the wide character *wc*. If *wc* is a printable wide character, the value is at least 0. If *wc* is null wide character (L'\\0'), the value is 0. Otherwise, -1 is returned.

## RETURN VALUE

The **wcwidth**() function returns the number of column positions for *wc*.

## ATTRIBUTES

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

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **wcwidth**() | Thread safety | MT-Safe locale |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001.

Note that before glibc 2.2.5, glibc used the prototype

```
int wcwidth(wint_t wc);
```

## NOTES

The behavior of **wcwidth**() depends on the **LC\_CTYPE** category of the current locale.

## SEE ALSO

[**iswprint**(3)](/iswprint/3.md), [**wcswidth**(3)](/wcswidth/3.md)
