README.md
CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. These operations include simple encoding like XOR and Base64, more complex encryption like AES, DES and Blowfish, creating binary and hexdumps, compression and decompression of data, calculating hashes and checksums, IPv6 and X.509 parsing, changing character encodings, and much more.
The tool is designed to enable both technical and non-technical analysts to manipulate data in complex ways without having to deal with complex tools or algorithms. It was conceived, designed, built and incrementally improved by an analyst in their 10% innovation time over several years.
CyberChef's official website can be found here - have fun!
You can run CyberChef with Docker (no toolchain required) or build it from source with Node.js.
Prerequisites
docker build --tag cyberchef --ulimit nofile=10000 .
docker run -it -p 8080:8080 cyberchef
http://localhost:8080 in your browserIf you prefer to skip the build process, you can use the pre-built image
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
Just like before, navigate to http://localhost:8080 in your browser.
This image is built and published through our GitHub Workflows.
If you want to develop CyberChef or run it without Docker, you can build it directly with Node.js.
Prerequisites
v24 (see Node.js support)[!NOTE]
You can use nvm to manage Node.js versions and use the current development version in this project to avoid conflicts with other projects on your machine.
Setup
git clone https://github.com/gchq/CyberChef.git
cd CyberChef
npm install
Common tasks
| Command | Description |
|---|---|
npm start | Run the development server with live reload at http://localhost:8080. |
npm run build | Produce a production build in the build/prod directory. |
npm test | Run the Node.js and operation test suites. |
npm run testui | Run the browser (UI) tests. |
npm run lint | Check the code against the linting rules. |
npm run newop | Scaffold a new operation via the interactive quickstart script. |
If you hit an out-of-memory error while building large recipes, increase Node's heap size with npm run setheapsize.
There are four main areas in CyberChef:
You can use as many operations as you like in simple or complex ways. Some examples are as follows:
By manipulating CyberChef's URL hash, you can change the initial settings with which the page opens.
The format is https://gchq.github.io/CyberChef/#recipe=Operation()&input=...
Supported arguments are recipe, input (encoded in Base64), and theme.
CyberChef is built to support
CyberChef is built to fully support Node.js v24 and is also tested against Node.js v26 ahead of it becoming the active LTS release. For more information, see the "Node API" wiki page
Please see the CyberChef security policy.
Contributing a new operation to CyberChef is super easy! The quickstart script will walk you through the process. If you can write basic JavaScript, you can write a CyberChef operation.
An installation walkthrough, how-to guides for adding new operations and themes, descriptions of the repository structure, available data types and coding conventions can all be found in the "Contributing" wiki page.
CyberChef is released under the Apache 2.0 Licence and is covered by Crown Copyright.