Search iThub

Search tools, categories and collections. Type at least two characters.

Explore all tools
↑ ↓ to explore resultsEnter to open · Esc to close

CyberChef

Browser-based web app with 500+ operations for encoding, encryption, compression, hashing and data analysis

Visit website Save

CyberChef is GCHQ's open-source web app for chaining operations such as Base64, XOR, AES, hashing, hexdumps, decompression and X.509 parsing into recipes. It processes data in the browser and also runs offline, in Docker or from Node.js.

Pricing
Open source
Deployment
Self-hosted
Platforms
Web
36,396stars4,195forks
0views
Updated

What is CyberChef?

CyberChef is a web app for carrying out data operations inside a web browser: simple encodings such as XOR and Base64, encryption such as AES, DES and Blowfish, binary and hexdumps, compression and decompression, hashes and checksums, IPv6 and X.509 parsing and character encoding changes. Its GitHub description calls it "The Cyber Swiss Army Knife". The project is published by GCHQ, which describes itself in its GitHub organisation profile as the UK's intelligence, security and cyber agency. According to the README, the tool was conceived, designed and built by an analyst in their 10% innovation time over several years, for technical and non-technical analysts alike.

Work in CyberChef is organised as a recipe. Operations are dragged from a categorised, searchable list into the Recipe pane, configured with arguments (called ingredients) and applied in order to the data in the Input pane, with the result shown in the Output pane. The repository's operation index groups more than 500 operations into 16 menu categories, from Data format and Encryption / Encoding to Networking, Forensics, Multimedia and Flow control. The in-app About page names cybersecurity and antivirus companies, academia, developers, analysts, mathematicians and puzzle solvers as expected users. For dedicated binary reverse engineering, this directory also lists Ghidra and REA.

CyberChef is written in JavaScript and has no server-side component. The README states that recipe configuration and input, whether text or files, are never sent to the CyberChef web server, and that all processing happens in the browser on the user's computer. The app's download dialog lists three operations that contact external services: Show on map loads map tiles from wikimedia.org, DNS over HTTPS resolves queries through Google or Cloudflare, and HTTP request calls the URL the user enters. The same static files run from the official site at gchq.github.io/CyberChef, from a downloaded ZIP, from the prebuilt container image or from a source build, and the cyberchef npm package exposes most operations to Node.js.

The latest GitHub release is v11.5.0, published September 18, 2026. The changelog lists a security fix that stops Auto Bake from running on a loaded recipe when any operation in it is set to manual baking, a new Parse PGP Key operation, an optional key ID for PEM to JWK and Safari drag-and-drop fixes. Version 11.4.0 patched cross-site scripting in the Regular expression module and added XPRESS decompression and Node.js 26 support. Version 11.0.0 (April 28, 2026) raised the minimum Node.js version from 16 to 24, moved the container's exported port from 80 to 8080 and made the Node API bake and execute functions asynchronous.

CyberChef is released under the Apache 2.0 licence and is covered by Crown Copyright. Pull requests require signing the GCHQ Contributor Licence Agreement through the CLA assistant. The security policy states that the project is supported on a best endeavours basis, that patches go to the latest version rather than older ones, that no guarantee is offered for correctness or security, and that the security of its cryptographic operations should not be relied upon. The README lists Google Chrome 50+ and Mozilla Firefox 38+ as supported browsers.

Inside the application

CyberChef screenshots

Explore the interface. Open a screenshot to view it at full size.

CyberChef web app with the Magic operation in the recipe and a table of candidate recipes, result snippets and possible languages in the output
CyberChef screenshot 1

Official CyberChef web app with the README nested-encoding example: Magic at depth 3 proposes From Base58, Zlib Inflate and From Hex.

CyberChef web app with a From Hexdump and Gunzip recipe, a four-line hexdump as input and the decoded sentence as output
From Hexdump and Gunzip recipe

Official CyberChef web app with the README example that converts a hexdump back to bytes and decompresses it with Gunzip.

CyberChef web app with XOR key 3a and To Hexdump width 16 in the recipe, an English sentence as input and a hexdump as output
XOR and To Hexdump recipe

Official CyberChef web app with the README highlighting example: XOR with key 3a followed by To Hexdump.

CyberChef web app with Fork and From UNIX Timestamp in the recipe, six UNIX timestamps as input and six formatted UTC dates as output
Fork with From UNIX Timestamp

Official CyberChef web app with the README example that uses Fork to convert each line of UNIX timestamps into a full date.

Source: official CyberChef project page.

Key capabilities

  • Official hosted web app The instance at gchq.github.io/CyberChef is a static site that needs no account or installation, and the security policy describes it as always up to date. The About / Support dialog shows the build version and compile time, FAQs and keybindings.
  • Standalone ZIP for offline and closed networks The Download CyberChef link in the app, and each GitHub release, provides a ZIP file containing the whole web app; the v11.5.0 release asset is about 83 MB. Once uncompressed it runs locally or from a web server with no configuration, and the download dialog shows the SHA256 hash of the file. The project notes that a standalone copy never updates itself and that unofficial copies could have been modified to exfiltrate input or recipes.
  • Prebuilt container image docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest starts the published image, after which the app answers on localhost:8080. The release workflow publishes it to the GitHub Container Registry for linux/amd64, linux/arm64 and linux/arm/v7. The image is based on nginx-unprivileged, a change made for Kubernetes compatibility.
  • Source build with Node.js Building requires Node.js v24, and package.json accepts versions from 24 up to, but not including, 27. After npm install, npm start runs a development server with live reload on port 8080, npm run build writes a production build to build/prod, and npm test runs the test suites. The getting started guide states that only bash-based development environments, primarily Linux and macOS, are supported for builds.
  • Operations, Recipe, Input and Output panes The interface has four areas: a searchable operations list on the left, the recipe in the middle, input at the top right and output at the bottom right. Search matches operation names and descriptions, and an editable Favourites list sits at the top of the operations. Operations are added by double-clicking or dragging, reordered by dragging, and can be disabled or given a breakpoint individually.
  • Encoding and data format conversion The Data format category covers hexdumps, hex, decimal, binary, octal and charcodes, Base32, Base45, Base58, Base62, Base64, Base85 and Base92, plus URL, HTML entity, quoted-printable, Punycode and Unicode escapes. Structured formats include CSV, JSON, YAML, CBOR, Avro, MessagePack and BSON.
  • Symmetric, classical and token ciphers Encryption / Encoding includes AES, DES, Triple DES, Blowfish, RC2, RC4, RC6, ChaCha, Salsa20, XSalsa20, Rabbit, SM4, GOST, Fernet, Ascon, PRESENT, Twofish, TEA, XTEA and XXTEA. Key derivation covers PBKDF2, EVP and HKDF, and JWT tokens and Flask session cookies can be decoded, signed or verified. Classical ciphers include ROT13, ROT47, Vigenère, Affine, Bacon, Bifid, Rail Fence and Atbash, and XOR, ROT13 and ROT47 have brute-force variants.
  • Public key and certificate parsing The Public Key category parses X.509 certificates, certificate bundles, CRLs, CSRs, ASN.1 structures and SSH host keys, and converts between PEM, hex, JWK and object identifiers. It generates RSA, ECDSA and PGP key pairs, signs and verifies with RSA and ECDSA, and encrypts, decrypts, signs and verifies PGP messages.
  • Hashes, checksums and fuzzy hashing The Hashing category includes MD2 to MD6, SHA0, SHA1, SHA2, SHA3, Keccak, Shake, RIPEMD, Whirlpool, BLAKE2b, BLAKE2s, BLAKE3, SM3, Streebog and Ascon Hash, with HMAC and CMAC. Password hashing covers Bcrypt, Argon2, Scrypt, NT Hash and LM Hash, with compare operations for Bcrypt and Argon2. SSDEEP and CTPH fuzzy hashes can be generated and compared and Analyse hash lists candidate algorithms for a digest.
  • Compression and archives Gzip, Zlib and raw Deflate work in both directions, as do Bzip2, LZMA, LZ4 and LZString. Zip, Unzip, Tar and Untar handle archives, and LZNT1 and XPRESS decompression cover Microsoft compression formats.
  • Network and protocol analysis The Networking category parses Ethernet frames, IPv4, TCP and UDP headers, TLS records, IPv6 addresses including transition addresses such as Teredo, IP ranges, URIs and user agents. It computes JA3, JA3S, JA4, JA4Server and HASSH fingerprints, decodes Protobuf and VarInt data, and defangs or fangs URLs and IP addresses. HTTP request and DNS over HTTPS are the operations in this category that send network traffic.
  • Forensics, extraction and disassembly Forensics operations detect file types, scan for and extract embedded files, run YARA rules and read or remove EXIF data; image operations extract least significant bits, view bit planes and split colour channels. Extractors pull strings, IP and MAC addresses, email addresses, URLs, domains, file paths, dates and hashes out of data. Disassemble x86 and Disassemble ARM render machine code, and Entropy, Frequency distribution and Chi Square describe data statistically.
  • Magic encoding detection The Magic operation, added in version 8, detects how data is encoded and which operations decode it. The Magic documentation describes pattern matching with regular expressions, speculative execution of candidate operations and ranking by magic bytes, valid UTF-8, entropy and byte frequency, with a Depth argument for nested layers and an Intensive mode.
  • Flow control Fork splits input on a delimiter and runs the following operations on each part, Merge joins the branches again, and Subsection applies operations only to regular expression matches. Register stores captured values for use as arguments through $R0, $R1 and so on. Label, Jump, Conditional Jump, Return and Comment add loops, branches and notes, as described on the flow control page.
  • Auto Bake, stepping and highlighting Auto Bake reruns the recipe whenever the input or recipe changes and can be switched off for large inputs. Step runs one operation at a time, and breakpoints pause before a chosen operation. Selecting text shows its offset and length and highlights the matching data on the other side where possible.
  • Saving and sharing recipes Save recipe stores a recipe in the browser's local storage for later visits. The URL hash can carry the recipe, the Base64-encoded input and the theme, so a link reproduces a configuration; the README documents the format #recipe=Operation()&input=.... An option controls whether the URL updates as the input or recipe changes.
  • Files, multiple inputs and batch output Files up to around 2 GB, depending on the browser, can be dragged onto the input, and output above a threshold (1 MiB by default) is offered as a download with slices viewable in the pane. Since version 9 several inputs can be loaded as tabs, including every file of a folder, and Bake runs the recipe on all tabs using worker threads (number of cores minus one). All outputs can be saved to one ZIP file. The multiple inputs page lists browser memory limits.
  • Editor features and themes Version 10 added status bars with length, line count and selection, explicit character encoding selection for input and output, end-of-line separator selection, rendering of non-printable characters as red control pictures, rectangular selection and bracket matching. Themes are Classic, Dark, GeoCities, Solarized Dark and Solarized Light.
  • Node.js API npm install --save cyberchef adds the library, which supports ES module import and CommonJS require. Operations are exposed as camelCase functions such as chef.fromBase64, accept arguments as objects and work on Dish objects; chef.bake runs recipes and chef.help describes an operation. The Node API page states that flow control operations are excluded and throw an ExcludedOperationError, and since version 11.0.0 bake and execute are asynchronous.
  • Historical cipher machines and new operations Enigma, Bombe, Multiple Bombe, Typex, Lorenz, Colossus and SIGABA operations simulate wartime cipher machines and codebreaking equipment, with wiki guides for Enigma, the Bombe and Typex, the Lorenz SZ40/42 and Colossus. For contributors, npm run newop scaffolds a new operation, as described in the operation guide.

Where CyberChef fits

Unwrapping data with unknown or nested encoding

An encoded string pasted into the input and passed to the Magic operation produces a table of candidate recipes, result snippets and properties such as likely languages. The README example for nested encoding resolves a string through From Base58, Zlib Inflate and From Hex at depth 3. Clicking a candidate loads it into the Recipe pane, where further operations can be added, and a crib (a known plaintext string or regular expression) narrows the candidates.

Converting a hexdump and decompressing the contents

A hexdump copied from a terminal or a report is turned back into bytes with From Hexdump and then passed to Gunzip, Unzip, Bzip2 Decompress or another decompression operation. The README example decodes a four-line hexdump of gzip data into a short English sentence. Detect File Type and Scan for Embedded Files identify formats when the content type is not known in advance.

Decrypting data with values taken from the input

Register captures part of the input with a regular expression, for example an initialisation vector at the start of a cipher stream, and later operations reference it as $R0. The README shows AES decryption in CTR mode where the first 16 bytes supply the IV and Drop bytes removes them from the ciphertext, plus a shorter variant in which AES Decrypt reads the IV from the start of the input itself, an option added in version 11.1.0. Another README example extracts an RC4 key from a URL parameter and decrypts the data parameter with it.

Converting many values in one pass

Fork splits the input line by line so that each value runs through the rest of the recipe separately; the README example turns six UNIX timestamps into full dates with From UNIX Timestamp. Conditional Jump and Label send lines of different types to different operations. For whole files, the multiple inputs feature loads a folder as tabs, Bake processes every tab, and the outputs can be downloaded together as one ZIP file.

Running CyberChef on an isolated network

Where the public site cannot be reached, the ZIP from Download CyberChef or from a GitHub release runs from a local folder or an internal web server, and the container image serves the same build through nginx on port 8080. The download dialog shows the SHA256 hash of the ZIP, and the app's help text points to the browser's network tab for observing which requests a recipe makes. Standalone copies stay at their downloaded version, while the security policy states that fixes are applied only to the latest release.

Moving a recipe from the browser into a script

The About page describes CyberChef as a way to prototype a solution in the browser that can then be scripted once it works. In Node.js, chef.bake runs a recipe saved from the web tool, and individual operations can be chained with Dish.apply, as in the wiki example that converts a hexdump and then gunzips it. Flow control operations such as Fork and Register are not part of the Node API.

Install

docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest

Reviews of CyberChef

No reviews yet

Be the first to share your experience with CyberChef.

Loading review form…

Related to CyberChef

Compare CyberChef with these tools →