OD(1)

๐Ÿ’– NAME ๐Ÿ’–

od โ€” dump files in octal and other formats. that's the whole pitch bestie, she just dumps bytes and she does it unambiguously โœจ


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

okay so here's the tea: od writes an unambiguous representation of FILE to standard output, and it's octal bytes by default. unambiguous as in: every single byte is on the record, no vibes-based guessing, no hiding. ๐Ÿซถ

hand it more than one FILE argument and it concatenates them in the listed order to form the input. not alphabetical, not by size, literally the order you typed them. main character energy only.

with no FILE, or when FILE is -, it reads standard input. yes, pipes work, we love her for that ๐Ÿ’…

if the first and second call formats both apply, the second format is assumed if the last operand begins with + or (if there are 2 operands) a digit. she's just like that.

an OFFSET operand means -j OFFSET. LABEL is the pseudo-address at first byte printed, incremented when dump is progressing. for OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal; suffixes may be . for octal and b for multiply by 512. no cap.

mandatory arguments to long options are mandatory for short options too. (same as every other GNU coreutils page, it's giving consistency ๐ŸŒˆ)

โœจ OPTIONS โœจ

  • -A, --address-radix=RADIX โ€” sets the output format for the file offsets. RADIX is one of [doxn], for Decimal, Octal, Hex or None. pick your fighter ๐Ÿ’€
  • --endian={big|little} โ€” swaps input bytes according to the specified order. yes you can make it read backwards on purpose, icon behavior
  • -j, --skip-bytes=BYTES โ€” skips BYTES input bytes first. hopscotch ๐Ÿ‡
  • -N, --read-bytes=BYTES โ€” limits the dump to BYTES input bytes. she stops when she's done
  • -S BYTES, --strings[=BYTES] โ€” show only NUL terminated strings of at least BYTES (default 3) printable characters. little string-hunting moment ๐ŸŽ€
  • -t, --format=TYPE โ€” selects the output format or formats
  • -v, --output-duplicates โ€” do not use * to mark line suppression. she shows you every single duplicate line, obsessed
  • -w[BYTES], --width[=BYTES] โ€” output BYTES bytes per output line; 32 is implied when BYTES is not specified
  • --traditional โ€” accept arguments in the third form above
  • --help โ€” display this help and exit
  • --version โ€” output version information and exit

๐ŸŒธ TRADITIONAL FORMAT SPECIFICATIONS ๐ŸŒธ

traditional format specifications may be intermixed; they accumulate. stack 'em, they add up, no conflict:

  • -a โ€” same as -t a, select named characters, ignoring high-order bit
  • -b โ€” same as -t o1, select octal bytes
  • -c โ€” same as -t c, select printable characters or backslash escapes
  • -d โ€” same as -t u2, select unsigned decimal 2-byte units
  • -f โ€” same as -t fF, select floats
  • -i โ€” same as -t dI, select decimal ints
  • -l โ€” same as -t dL, select decimal longs
  • -o โ€” same as -t o2, select octal 2-byte units
  • -s โ€” same as -t d2, select decimal 2-byte units
  • -x โ€” same as -t x2, select hexadecimal 2-byte units

๐Ÿงš TYPE SPECIFICATIONS ๐Ÿงš

TYPE is made up of one or more of these specifications:

  • a โ€” named character, ignoring high-order bit
  • c โ€” printable character or backslash escape
  • d[SIZE] โ€” signed decimal, SIZE bytes per integer
  • f[SIZE] โ€” floating point, SIZE bytes per float
  • o[SIZE] โ€” octal, SIZE bytes per integer
  • u[SIZE] โ€” unsigned decimal, SIZE bytes per integer
  • x[SIZE] โ€” hexadecimal, SIZE bytes per integer

SIZE is a number. for TYPE in [doux], SIZE may also be C for sizeof(char), S for sizeof(short), I for sizeof(int) or L for sizeof(long). if TYPE is f, SIZE may also be B for Brain 16 bit, H for Half precision float, F for sizeof(float), D for sizeof(double), or L for sizeof(long double). so many letters, so much power ๐Ÿ”ฅ

adding a z suffix to any type displays printable characters at the end of each output line. the little cherry on top ๐Ÿ“


๐Ÿ’œ BYTES AND ITS MULTIPLIERS ๐Ÿ’œ

BYTES is hex with a 0x or 0X prefix, and may have a multiplier suffix:

  • b โ€” 512
  • KB โ€” 1000
  • K โ€” 1024
  • MB โ€” 1000*1000
  • M โ€” 1024*1024

and so on for G, T, P, E, Z, Y, R, Q. binary prefixes can be used, too: KiB=K, MiB=M, and so on. iykyk ๐Ÿ’…


โญ EXAMPLES โญ

  • od -A x -t x1z -v โ€” display hexdump format output
  • od -A o -t oS -w16 โ€” the default output format used by od
$ od -A x -t x1z -v
$ od -A o -t oS -w16

go off, both of these eat ๐ŸŽ€


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

written by Jim Meyering. legend behavior, fr fr.


๐Ÿ› REPORTING BUGS ๐Ÿ›

if something's cursed, tell them, not me ๐Ÿ˜ญ


Copyright ยฉ 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

this is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. like, none. zero. don't come crying to the FSF if your bytes get weird ๐Ÿ™ˆ

๐ŸŒˆ SEE ALSO ๐ŸŒˆ


and that's the whole page, bestie ๐Ÿ’– this was od(1) from GNU coreutils 9.12, dated September 2026 โ€” stay unambiguous, stay slaying, periodt โœจ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from