Strings Extractor
Extract printable strings from binary files in your browser. ASCII + UTF-16LE, byte offsets, regex filtering, and CTF flag-pattern detection.
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.
How to extract strings (4 steps)
- Upload a File: Drop any binary — executable, image, archive, or unknown file up to 50 MB. Nothing leaves your browser.
- Wait for the Scan: The tool scans for printable ASCII and (optionally) UTF-16LE strings in a background WebWorker so the page stays responsive.
- Review Flag Matches: Any string matching a common CTF flag pattern (flag{...}, HTB{...}, picoCTF{...}, etc.) is highlighted at the top.
- 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.
| Property | ASCII | UTF-16LE |
|---|---|---|
| Bytes per character | 1 byte | 2 bytes (null between) |
| Common in | Linux/Unix ELF, scripts, configs, most CTF files | Windows PE/DLL, Word .docx, Registry exports |
| Example bytes | 68 65 6C 6C 6F (hello) | 68 00 65 00 6C 00 6C 00 6F 00 |
| Default mode | Always enabled | Enable with UTF-16LE toggle |
| CLI equivalent | strings (default) | strings -el |
| When to enable | Always (default — never disable) | Target is a Windows binary or Office file |
Other tools in your CTF workflow
Strings extraction is usually step 2. Use these tools before and after.
Magic Byte Detector
Identify the real file format from header bytes — before extracting strings
Steganography Analyzer
Run entropy and chi-square analysis on images that strings can't decode
Binary Steganography Extractor
Extract payloads hidden in binary files using BINSTEG methods
Hex Viewer
Browse raw bytes and see the hex offset alongside strings
Found text in an image? Check EXIF too
Pull EXIF, XMP, and embedded metadata — often contains flags
Polyglot File Analyzer
Detect files hidden inside files (polyglots, appended payloads)
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.
| Pattern | Example | Reported 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 characters | 5d41402abc4b2a76b9719d911017c592 | Possible 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
| Result | What it means | What to do |
|---|---|---|
| Flags tab | Strings 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 tab | Strings containing an http, https, ftp or www address. | Useful for finding endpoints, C2 addresses or references in binaries and firmware. |
| Hashes tab | Strings 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 tab | Every extracted string in file order. | Use the filter box and a higher minimum length to cut noise. |
| Offset | The byte position where the string starts in the file. | Open the same offset in the Hex Viewer to see what surrounds it. |
| Encoding | ascii 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.
Related Tools
Encoding Auto-Decoder
Found a Base64, hex or URL-encoded string? Detect and decode it, layer by layer.
File Type / Magic Byte Detector
Identify what kind of file you are searching before you scan it.
Hex Viewer / Editor
Jump to a string's offset and inspect the bytes around it.
PNG Chunk Analyzer
If the file is a PNG, check its chunk structure and trailing data.
ROT13 & Caesar Cipher Solver
A string that reads like scrambled English or a rotated flag (synt{…})? Brute-force the shift.