StegoToolkit

Strings Extractor

Extract printable strings from binary files in your browser. ASCII + UTF-16LE, byte offsets, regex filtering, and CTF flag-pattern detection.

100% client-side
No upload
ASCII + UTF-16LE
Strings Extractor

Drop any binary file here or click to browse

EXE, ELF, firmware, images, archives — any format · Max 50 MB

Scanned entirely in a background WebWorker — nothing uploaded

100% Client-Side · WebWorker Processed · Up to 50 MB

All string extraction runs in a background WebWorker — the page stays responsive even on large files. Nothing is sent to a server.

CTF Mode: min 6 chars · CLI command shown · flag highlightsBasic Mode: min 4 chars · clean output only

How to extract strings (4 steps)

  1. Upload a File: Drop any binary — executable, image, archive, or unknown file up to 50 MB. Nothing leaves your browser.
  2. Wait for the Scan: The tool scans for printable ASCII and (optionally) UTF-16LE strings in a background WebWorker so the page stays responsive.
  3. Review Flag Matches: Any string matching a common CTF flag pattern (flag{...}, HTB{...}, picoCTF{...}, etc.) is highlighted at the top.
  4. Filter & Copy: Type a keyword to filter results. Copy individual strings or all currently filtered results with one click.

ASCII vs UTF-16LE strings

The two encoding types this tool searches for — and when to use each.

PropertyASCIIUTF-16LE
Bytes per character1 byte2 bytes (null between)
Common inLinux/Unix ELF, scripts, configs, most CTF filesWindows PE/DLL, Word .docx, Registry exports
Example bytes68 65 6C 6C 6F (hello)68 00 65 00 6C 00 6C 00 6F 00
Default modeAlways enabledEnable with UTF-16LE toggle
CLI equivalentstrings (default)strings -el
When to enableAlways (default — never disable)Target is a Windows binary or Office file

What Is the strings Command?

strings is a classic Unix utility that prints the runs of readable characters found inside a binary file. A program, an image or a firmware dump is mostly bytes that mean nothing as text, but names, messages, paths and URLs are usually stored as plain characters, so they stand out once everything else is skipped.

This tool does the same in your browser: it scans every byte, keeps sequences of printable ASCII above a minimum length, and records the byte offset of each one so you can find it again in a hex editor. Basic mode uses a minimum length of 4, matching the common strings default, and CTF mode uses 6 to cut noise.

Why CTF Players Run Strings First

It is the cheapest possible look inside an unknown file. Flags, passwords, URLs, error messages, compiler paths and format hints are often left readable in executables, and text can be appended to an image or archive without breaking it. A few seconds with strings can answer the question before any reverse engineering starts.

The tool also groups results into Flags, URLs and Hashes, so common CTF patterns such as flag{...} or a 32-character hex string are surfaced without scrolling through everything.

ASCII Strings vs UTF-16LE Strings

Windows programs commonly store text as UTF-16, where each character takes two bytes and, for English text, every second byte is 0x00. An ASCII-only scan sees single characters separated by zeros and finds nothing, so those strings are invisible to it.

Turn on the UTF-16LE option to look for that alternating layout. Results show their encoding, so you can tell an ascii string from a utf16le one. Only little-endian UTF-16 is supported.

Cutting Noise and Avoiding False Positives

Compressed or encrypted data produces many short accidental strings, because random bytes sometimes land in the printable range. Raise the minimum length, or filter by a substring or regular expression, to keep only what matters.

A match is a pattern, not proof. The generic word{...} pattern can match text that is not a flag, hash detection checks only length and hex characters, and anything encoded or encrypted will not match at all.

Flag and Hash Patterns Detected

These are the readable patterns the extractor recognises. Anything encoded or encrypted will not match.

PatternExampleReported as
flag{…}flag{found_it}Flag, high confidence
ctf{…}ctf{found_it}Flag, high confidence
htb{…}htb{found_it}Flag, high confidence
thm{…}thm{found_it}Flag, high confidence
picoctf{…}picoctf{found_it}Flag, high confidence
uctf{…}uctf{found_it}Flag, high confidence
acsc{…}acsc{found_it}Flag, high confidence
32 or 64 hex characters5d41402abc4b2a76b9719d911017c592Possible hash, low confidence (length only)

How it works

1. Read and scan in a Web Worker

The whole file is read into memory (up to 50 MB) and handed to a Web Worker, so the page stays responsive on large files.

2. Find ASCII strings

A string is a run of consecutive bytes in the range 0x20-0x7E that is at least the minimum length. Tab and newline are not included, matching the behaviour of the strings command. Each string is stored with its byte offset.

3. Find UTF-16LE strings (optional)

When enabled, the scan also looks for printable characters that alternate with 0x00 bytes, the layout Windows programs use for wide strings. Little-endian only.

4. Detect flags, hashes and URLs

Each string is tested against patterns for flag{}, ctf{}, htb{}, thm{}, picoctf{}, uctf{} and acsc{}, plus a generic short-word{...} pattern. A 32- or 64-character hex string is marked as a possible hash (low confidence). Strings containing http, https, ftp or www addresses are grouped under URLs.

5. Filter

Filter results by substring or by regular expression. An invalid regular expression falls back to a plain substring match. CTF Mode sets the minimum length to 6 and basic mode to 4.

What the results mean

ResultWhat it meansWhat to do
Flags tabStrings that matched a flag pattern, including the generic word{...} form.Read the surrounding string and offset, then check for encoding; a match is a pattern, not proof.
URLs tabStrings containing an http, https, ftp or www address.Useful for finding endpoints, C2 addresses or references in binaries and firmware.
Hashes tabStrings that are exactly 32 or 64 hex characters, marked possible hash with low confidence.The tool checks only the shape. Identify or crack the value with a hash tool.
All tabEvery extracted string in file order.Use the filter box and a higher minimum length to cut noise.
OffsetThe byte position where the string starts in the file.Open the same offset in the Hex Viewer to see what surrounds it.
Encodingascii or utf16le, depending on which scan found the string.utf16le results are common in Windows executables.

Examples

Input: A binary that contains the text flag{example_value}

Result: The string appears in the Flags tab with its byte offset and encoding.

Meaning: The flag was stored as plain ASCII. Note the offset to see where in the file it lives.

Input: A Windows executable with wide-character text, scanned with UTF-16LE turned off, then on

Result: Turning UTF-16LE on adds extra strings that the ASCII scan did not report.

Meaning: Windows programs commonly store text as UTF-16LE, so ASCII-only scanning can miss it.

Input: An image with a text message appended after its image data

Result: Readable strings appear at high offsets near the end of the file.

Meaning: Text past the image data is a sign of appended content. Inspect that offset in the Hex Viewer.

Input: A PNG file with the text flag{appended_after_iend} written after its IEND chunk

Result: The string appears in the Flags tab with a byte offset past the end of the image data.

Meaning: Text after the image end is invisible to viewers but still in the file. Open that offset in the Hex Viewer to see exactly what surrounds it.

Input: A Windows program that stores the word secret_key as UTF-16LE (s 00 e 00 c 00 …)

Result: An ASCII-only scan finds nothing for it; with UTF-16LE enabled it is listed with encoding utf16le.

Meaning: Wide strings alternate real characters with zero bytes, so they need the UTF-16LE scan to be visible.

Limitations

  • Only printable ASCII (0x20-0x7E) is detected. Multi-byte UTF-8 text and non-Latin scripts are not extracted, and UTF-16 is little-endian only.
  • Encoded, obfuscated or encrypted flags will not match. The scan finds text that is already readable.
  • The generic word{...} pattern can match strings that are not flags, so review Flags results by hand.
  • Hash detection checks only length and hex characters. It does not verify a real MD5 or SHA-256.
  • Files over 50 MB are rejected.
  • Binary files produce many short accidental strings. Raise the minimum length or filter to reduce noise.

Privacy

Scanning runs in a Web Worker in your browser and the file is not uploaded. For files up to 20 MB, a copy is also saved in IndexedDB in this browser so the Hex Viewer can open it without a re-upload; it stays on your device, and the Hex Viewer only offers it for 30 minutes. If you accept analytics, coarse usage data (file category, extension, MIME type and a size range) may be recorded; file names and contents are not.

Frequently Asked Questions

What file types are supported?

Any file up to 50 MB. The tool reads raw bytes — format does not matter. Works on executables, images, archives, unknown blobs, and anything else.

Does the file get uploaded anywhere?

No. Scanning happens entirely in a WebWorker inside your browser, and no data is sent to a server. For files up to 20 MB, a copy is also saved in your browser's IndexedDB so the Hex Viewer can open it without a re-upload; the Hex Viewer only offers it for 30 minutes. It stays on your device.

What is the minimum string length?

Default is 4 characters — the same as the classic 'strings' utility. CTF mode raises this to 6 to reduce noise.

What flag patterns are detected?

flag{}, ctf{}, HTB{}, THM{}, picoCTF{}, and the generic <word>{...} pattern used by most CTF platforms. Patterns are case-insensitive.

What is UTF-16LE scanning?

Windows executables often store strings as UTF-16LE (two bytes per character with a zero byte between). Enable this option to catch strings that ASCII scanning would miss.

Why do I see so many results?

Binary files contain many byte sequences that look like printable text. Use the filter box to search for specific keywords, or increase the minimum length to reduce noise.

What does 'Copy All' copy?

Copy All copies only the currently filtered results — if you have a filter active, only matching strings are copied. This lets you quickly export a focused subset.

How is this different from the Unix strings command?

The core idea is the same: runs of printable ASCII (0x20-0x7E, tab and newline excluded) above a minimum length. This tool adds the byte offset of every string, an optional UTF-16LE scan, regular-expression and substring filtering, tabs that group flags, URLs and hashes, and it runs in a Web Worker in your browser so nothing is uploaded.

Why can't I find the flag with strings?

Strings only finds text that is already stored as readable characters. If the flag is base64-encoded, XOR-ed, compressed, encrypted, stored as UTF-16 with the option off, or hidden in the pixel values of an image, it will not appear. Try the UTF-16LE option, a lower minimum length, and then the File Type Detector, Hex Viewer or a steganography tool.