---
name: "od"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/od"
---

# od(1)

octal, decimal, hex, ascii dump

## NAME

**od** – octal, decimal, hex, ascii dump

## SYNOPSIS

**od** \[**-aBbcDdeFfHhIiLlOosvXx**\] \[**-A** *base*\] \[**-j** *offset*\] \[**-N** *length*\] \[**-t** *type\_string*\] \[*file ...*\]

## DESCRIPTION

The **od** utility is a filter which displays the specified files, or standard input if no files are specified, in a user specified format.

The options are as follows:

- **-A** *base*

  Specify the input address base. The argument *base* may be one of **d**, **o**, **x**, or **n**, which specify decimal, octal, hexadecimal addresses or no address, respectively.

- **-a**

  *One-byte* *character* *display*. Display the input offset in octal, followed by sixteen space-separated, three column, space-filled, characters of input data per line. Control characters are printed as their names instead of as C-style escapes.

- **-B**

  Same as **-o**.

- **-b**

  *One-byte* *octal* *display*. Display the input offset in octal, followed by sixteen space-separated, three column, zero-filled, bytes of input data, in octal, per line. This is the default output style if no other is selected.

- **-c**

  *One-byte* *character* *display*. Display the input offset in octal, followed by sixteen space-separated, three column, space-filled, characters of input data per line. Control characters are printed as c style escapes, or as three octal digits, if no c escape exists for the character.

- **-D**

  *Four-byte* *octal* *display*. Display the input offset in octal, followed by four space-separated, ten column, space filled, four-byte units of input data, in octal, per line.

- **-d**

  *Two-byte* *unsigned* *decimal* *display*. Display the input offset in octal, followed by eight space-separated, five column, zero-filled, two-byte units of input data, in unsigned decimal, per line.

- **-e**

  *Eight-byte* *floating* *point* *display*. Display the input offset in octal, followed by two space-separated, twenty-one column, space filled, eight-byte units of input data, in floating point, per line.

- **-F**

  Same as **-e**.

- **-f**

  *Four-byte* *floating* *point* *display*. Display the input offset in octal, followed by four space-separated, 14 column, space filled, four-byte units of input data, in floating point, per line.

- **-H**

  *Four-byte* *hex* *display*. Display the input offset in octal, followed by four space-separated, eight column, zero filled, four-byte units of input data, in hex, per line.

- **-h**

  *Two-byte* *hex* *display*. Display the input offset in octal, followed by eight space-separated, four column, zero filled, two-byte units of input data, in hex, per line.

- **-I**

  *Four-byte* *decimal* *display*. Display the input offset in octal, followed by four space-separated, eleven column, space filled, four-byte units of input data, in decimal, per line.

- **-i**

  *Two-byte* *decimal* *display*. Display the input offset in octal, followed by eight space-separated, six column, space filled, two-byte units of input data, in decimal, per line.

- **-j** *offset*

  Skip *offset* bytes from the beginning of the input. By default, *offset* is interpreted as a decimal number. With a leading **0x** or **0X**, *offset* is interpreted as a hexadecimal number, otherwise, with a leading **0**, *offset* is interpreted as an octal number. Appending the character **b**, **k**, or **m** to *offset* causes it to be interpreted as a multiple of 512, 1024, or 1048576, respectively.

  As an alternative to **od** **-j** *offset* \[*file*\], the X/Open System Interfaces syntax **od** \[*file*\] \[**+**\] *offset* \[**.**\] \[**Bb**\] is also supported.

- **-L**

  Same as **-I**.

- **-l**

  Same as **-I**.

- **-N** *length*

  Interpret only *length* bytes of input.

- **-O**

  *Four-byte* *octal* *display*. Display the input offset in octal, followed by four space-separated, eleven column, zero-filled, four-byte units of input data, in octal, per line.

- **-o**

  *Two-byte* *octal* *display*. Display the input offset in octal, followed by eight space-separated, six column, zero-filled, two-byte units of input data, in octal, per line.

- **-s**

  *Two-byte* *signed* *decimal* *display*. Display the input offset in octal, followed by eight space-separated, five column, zero-filled, two-byte units of input data, in signed decimal, per line.

- **-t** *type\_string*

  Specify one or more output types. The *type\_string* option-argument must be a string specifying the types to be used when writing the input data. The string must consist of the type specification characters:

  **a** selects US-ASCII output, with control characters replaced with their names instead of as c escape sequences. See also the **\_u** conversion provided by [hexdump(1)](/hexdump/1.md).

  **c** selects a standard character based conversion. See also the **\_c** conversion provided by [hexdump(1)](/hexdump/1.md).

  **f** selects the floating point output format. This type character can be optionally followed by the characters **4** or **F** to specify four-byte floating point output, or **8** or **L** to specify eight-byte floating point output. The default output format is eight-byte floats. See also the **e** conversion provided by [hexdump(1)](/hexdump/1.md).

  **d**, **o**, **u**, or **x** select decimal, octal, unsigned decimal, or hex output respectively. These types can optionally be followed by **C** to specify *char*-sized output, **S** to specify *short*-sized output, **I** to specify *int*-sized output, **L** to specify *long*-sized output, **1** to specify one-byte output, **2** to specify two-byte output, **4** to specify four-byte output, or **8** to specify eight-byte output. The default output format is in four-byte quantities. See also the **d**, **o**, **u**, and **x** conversions provided by [hexdump(1)](/hexdump/1.md).

- **-v**

  The **-v** option causes **od** to display all input data. Without the **-v** option, any number of groups of output lines, which would be identical to the immediately preceding group of output lines (except for the input offsets), are replaced with a line comprised of a single asterisk.

- **-X**

  Same as **-H**.

- **-x**

  Same as **-h**.

For each input file, **od** sequentially copies the input to standard output, transforming the data according to the options given. If no options are specified, the default display is equivalent to specifying the **-o** option.

## EXIT STATUS

The **od** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[hexdump(1)](/hexdump/1.md)

## STANDARDS

The **od** utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

The flags \[**-bcdosx**\] as well as the *offset* specifier are marked by IEEE Std 1003.1-2008 (“POSIX.1”) as being an X/Open System Interfaces option.

The flags \[**-aBDeFfHhIiLlOX**\] are extensions to that specification.

## HISTORY

An **od** command appeared in Version 1 AT&T UNIX.

This man page was written in February 2001 by Andrew Brown, shortly after he augmented the **od** syntax to include things he felt had been missing for a long time.
