---
name: "strings"
section: "1"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/strings"
---

# strings(1)

print the strings of printable characters in files

## NAME

**strings** – print the strings of printable characters in files

## SYNOPSIS

**strings** \[**-a** \| **--all**\] \[**-e** *encoding* \| **--encoding=***encoding*\] \[**-f** \| **--print-file-name**\] \[**-h** \| **--help**\] \[**-n** *number* \| **--bytes=***number* \| **-***number*\] \[**-o**\] \[**-t** *radix* \| **--radix=***radix*\] \[**-v** \| **--version**\] \[*file ...*\]

## DESCRIPTION

For each *file* specified, the **strings** utility prints contiguous sequences of printable characters that are at least *n* characters long and are followed by an unprintable character. The default value of *n* is 4. By default, the **strings** utility only scans the initialized and loaded sections of ELF objects; for other file types, the entire file is scanned. The **strings** utility is mainly used for determining the contents of non-text files.

If no file name is specified as an argument, standard input is read.

The following options are available:

- **-a** \| **--all**

  For ELF objects, scan the entire file for printable strings.

- **-e** *encoding* \| **--encoding=***encoding*

  Select the character encoding to be used while searching for strings. Valid values for argument *encoding* are:

  - *s*

    for single 7-bit-byte characters (ASCII, ISO 8859).

  - *S*

    for single 8-bit-byte characters.

  - *l*

    for 16-bit little-endian.

  - *b*

    for 16-bit big-endian.

  - *L*

    for 32-bit little-endian.

  - *B*

    for 32-bit big-endian.

    The default is to assume that characters are encoded using a single 7-bit byte.

- **-f** \| **--print-file-name**

  Print the name of the file before each string.

- **-h** \| **--help**

  Print a usage summary and exit.

-

  **-n** *number* \| **--bytes=***number* \| **-***number* Print the contiguous character sequence of at least *number* characters long, instead of the default of 4 characters. Argument *number* should specify a positive decimal integer.

- **-o**

  Equivalent to specifying **-t** *o*.

- **-t** *radix* \| **--radix=***radix*

  Print the offset from the start of the file before each string using the specified radix. Valid values for argument *radix* are:

  - *d*

    for decimal

  - *o*

    for octal

  - *x*

    for hexadecimal

- **-v** \| **--version**

  Display a version identifier and exit.

## EXIT STATUS

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

## EXAMPLES

To display strings in */bin/ls* use:

```
$ strings /bin/ls
```

To display strings in all sections of */bin/ln* use:

```
$ strings -a /bin/ln
```

To display strings in all sections of */bin/cat* prefixed with the filename and the offset within the file use:

```
$ strings -a -f -t x /bin/cat
```

## SEE ALSO

[ar(1)](/ar/1.md), [nm(1)](/nm/1.md), [objdump(1)](/objdump/1.md), ranlib, [readelf(1)](/readelf/1.md), [size(1)](/size/1.md)

## HISTORY

The first FreeBSD **strings** utility appeared in FreeBSD v3. It was later discontinued in FreeBSD v5, when i386-only a.out format was dropped in favor of ELF.

## AUTHORS

The **strings** utility was re-written by S.Sam Arun Raj ⟨*samarunraj@gmail.com*⟩. This manual page was written by S.Sam Arun Raj ⟨*samarunraj@gmail.com*⟩.
