---
name: "strcasecmp"
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/strcasecmp"
---

# strcasecmp(3)

strings case-insensitive compare

## NAME

strcasecmp - strings case-insensitive compare

## LIBRARY

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

## SYNOPSIS

```
#include <strings.h>
```

**int strcasecmp(const char \****s1***, const char \****s2***);**

## DESCRIPTION

The **strcasecmp**() function performs a byte-by-byte comparison of the strings *s1* and *s2*, ignoring the case of the characters. It returns an integer less than, equal to, or greater than zero if *s1* is found, respectively, to be less than, to match, or be greater than *s2*.

## RETURN VALUE

The **strcasecmp**() function returns an integer less than, equal to, or greater than zero if *s1* is, after ignoring case, found to be less than, to match, or be greater than *s2*, respectively.

## ATTRIBUTES

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

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

## STANDARDS

POSIX.1-2008.

## HISTORY

4\.4BSD, POSIX.1-2001.

**strcasecmp**() first appeared in 4.4BSD, where it was declared in *\<string.h\>*. Thus, for reasons of historical compatibility, the glibc *\<string.h\>* header file also declares this function, if the **\_DEFAULT\_SOURCE** (or, in glibc 2.19 and earlier, **\_BSD\_SOURCE**) feature test macro is defined.

The POSIX.1-2008 standard says of this function:

When the **LC\_CTYPE** category of the locale being used is from the POSIX locale, these functions shall behave as if the strings had been converted to lowercase and then a byte comparison performed. Otherwise, the results are unspecified.

## SEE ALSO

[**strcmp**(3)](/strcmp/3.md), [**string**(3)](/string/3.md), [**wcscasecmp**(3)](/wcscasecmp/3.md)
