POSIX errno Reference

Search errno constant names and numbers across Linux, macOS and BSD.

Cross-platform errno reference with POSIX, Linux-specific and macOS/BSD values side by side, plus the meaning of each constant. Searchable by name or number, runs entirely in your browser.

What is errno?

errno is a thread-local integer set by system calls and library functions to indicate why the last operation failed. After a call returns an error, you read errno (or use strerror) to learn the specific cause, such as ENOENT for a missing file.

This is a searchable, cross-platform errno reference — the integer error codes that Unix system calls set to explain a failure. It puts the Linux and macOS/BSD numeric values side by side, because while the low codes match, the two families diverge above 34 and assign different numbers to the same name.

How it works

When a system call fails it returns −1 (or NULL) and sets the thread-local errno to a value identifying the cause. Each value has a symbolic name (ENOENT, EACCES, EAGAIN) defined in errno.h, and a human-readable string you can fetch with strerror. Values 1 to 34 are nearly identical across Linux, macOS and BSD. Above that, the numbering diverges — for example EAGAIN is 11 on Linux but 35 on macOS, and EDEADLK swaps the other way. This tool shows both numbers for each name so you never confuse them. Search by name, by either platform’s number, or by keyword.

Why you should match by name

A program that hard-codes if (err == 35) works on macOS but silently misbehaves on Linux. Always compare against the symbolic constant (if (err == EAGAIN)), which the compiler resolves to the correct number for the build target. The numeric columns here are for decoding logs and core dumps, not for writing comparisons.

Example

Decoding a failed open() from a strace or log line:

open("/etc/app.conf", O_RDONLY) = -1 ENOENT (No such file or directory)

ENOENT (2) tells you the file or a directory in its path does not exist — create it, fix the path, or check the working directory. Everything in this tool runs in your browser; nothing is uploaded.