Home › Developer Tools › Enigma Machine Simulator

Enigma Machine Simulator

A faithful, working model of the Enigma cipher machine. Choose the rotors, ring settings, start positions and plugboard cables, then type on the keyboard or paste a message: the lampboard lights up, the rotors step exactly like the real machine, and you can follow each letter's path through the wiring.

Last updated:

Click the keys, or click here and type on your keyboard. Backspace removes the last letter.

Signal path and stepping

Advertisement
Advertisement

How to use the Enigma Machine Simulator

  1. Pick a machine (Enigma I, M3 or M4) and a reflector.
  2. Set the key: choose three different rotors (plus the Greek rotor on the M4), their ring settings and start positions, and type the plugboard pairs.
  3. Type your message in the input box or press the machine's keys. The output and lampboard update instantly.
  4. Follow the stepping: drag the Letter slider or click a row in the step log to see the rotor windows and the full signal path for that letter.
  5. Decrypt: reset to the same start positions and enter the ciphertext, or press Use output as input. Enigma is reciprocal, so the original text comes back.

How the Enigma machine encrypts a letter

Each key press does two things. First the rotors step, then an electric current runs through the machine and lights one lamp:

  1. Stepping. The right rotor always advances one place. If it was sitting on its turnover notch, it also advances the middle rotor. If the middle rotor was on its own notch, the middle and left rotors both advance (the double step). The M4's Greek rotor never moves.
  2. Plugboard. Cables swap pairs of letters before and after the rotors, so A–V means A enters as V and V as A.
  3. Rotors, right to left. Each rotor is a fixed scrambled wiring. Its effect is shifted by its current position minus its ring setting: out = wiring[(in + pos − ring) mod 26] − (pos − ring).
  4. Reflector. The reflector (Umkehrwalze, UKW) pairs letters and sends the current back.
  5. Rotors, left to right through the inverse wirings, then the plugboard again, to the lamp.

Because the path through the reflector is symmetrical, pressing the output letter with the same machine state lights the original letter. That is why one operation both encrypts and decrypts.

Rotor and reflector reference

RotorWiring (A to Z)Turnover notchUsed in
IEKMFLGDQVZNTOWYHXUSPAIBRCJQ → RI, M3, M4
IIAJDKSIRUXBLHWTMCQGZNPYFVOEE → FI, M3, M4
IIIBDFHJLCPRTXVZNYEIWGAKMUSQOV → WI, M3, M4
IVESOVPZJAYQUIRHXLNFTGKDCMWBJ → KI, M3, M4
VVZBRGITYUPSDNHLXAWMJQOFECKZ → AI, M3, M4
VIJPGVOUMFYQBENHZRDKASXLICTWZ → A and M → NM3, M4
VIINZJHGRCXMYSWBOUFAIVLPEKQDTZ → A and M → NM3, M4
VIIIFKQHTLXOCBJSPDZRAMEWNIUYGVZ → A and M → NM3, M4
BetaLEYJVCNIXWPBQMDRTAKZGFUHOSnone (fixed)M4 only
GammaFSOKANUERHMBTIYCWLQPZXVGJDnone (fixed)M4 only
UKW-BYRUHQSLDPXNGOKMIEBFZCWVJATreflectorI, M3
UKW-CFVPJIAOYEDRZXWGCTKUQSBNMHLreflectorI, M3
UKW-B thinENKQAUYWJICOPBLMDXZVFTHRGSreflectorM4
UKW-C thinRDOBJNTKVEHMLFCWZAXGYIPSUQreflectorM4

Tips for using the simulator

  • To share a message, the receiver needs the full key: machine, reflector, rotor order, rings, plugboard and start positions. The Randomize settings button creates one; write it down before you change anything.
  • Historical operators sent text in five-letter groups without spaces. Choose Letters in groups of 5 for that look; numbers and punctuation are then dropped, as on the real keyboard, which had only 26 letters.
  • Watch the step log while typing a long message: the middle rotor moves roughly every 26 letters and the left rotor only every 650 or so, which shows why the right rotor did most of the work.
  • This is an educational model. Enigma was broken during the Second World War and must not be used to protect real secrets; use modern encryption for that.

Frequently asked questions

How do I decrypt an Enigma message?

Use exactly the same settings that encrypted it: the same machine, reflector, rotor order, ring settings, plugboard pairs and start positions. Enter the ciphertext and the plaintext appears. Because the Enigma is reciprocal, encryption and decryption are the same operation.

Why can a letter never encrypt to itself?

The reflector sends the current back through the rotors on a different path, and every reflector pair connects two different letters. So the lamp that lights can never be the key you pressed. Codebreakers exploited this weakness to rule out wrong guesses for known words (cribs).

What is the double step of the middle rotor?

When the middle rotor reaches its own turnover notch, it steps again on the next key press and takes the left rotor with it. The middle rotor therefore moves on two consecutive key presses, for example ADU, ADV, AEW, BFX with rotors I, II, III. This simulator reproduces it, and the step log marks every double step.

What is the difference between ring setting and start position?

The start position is the letter visible in the rotor window when you begin. The ring setting (Ringstellung) rotates the internal wiring relative to the letter ring and notch. Both change the output, and the operator needed both from the key sheet.

How can I check that the simulator is correct?

A widely used test: Enigma I, reflector B, rotors I II III, rings 01 01 01, start AAA and no plugboard cables. Typing AAAAA gives BDZGO. The M4 with Greek rotor Beta at position A, ring 01 and the thin B reflector behaves exactly like a three-rotor machine with reflector B, which is how it stayed compatible.

What is the difference between Enigma I, M3 and M4?

The Enigma I was used by the army and air force with rotors I to V. The navy M3 added rotors VI, VII and VIII, which have two turnover notches. The M4, introduced for U-boats in 1942, fitted a thin reflector and a fourth, non-moving Greek rotor (Beta or Gamma) beside the three stepping rotors.

Is my message sent anywhere?

No. The whole machine runs in JavaScript in your browser. Your text and settings never leave your device; the last settings are only remembered in your browser's local storage.

Are all the tools on FreeToolCabin tested for quality and accuracy?

Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.

Related tools

Caesar CipherEncode and decode Caesar shift ciphers and crack unknown shifts with a ranked brute force.Vigenère CipherEncrypt and decrypt Vigenère and Autokey ciphers, and crack unknown keys with frequency analysis.Morse Code TranslatorTranslate text to Morse code and back, then play it as sound or a blinking light, or save a WAV.Atbash CipherEncode and decode Atbash ciphers (A↔Z, B↔Y) in Latin or Hebrew, with a live letter mapping table.Password GeneratorCreate strong passwords and passphrases.Hash GeneratorGenerate MD5, SHA-1, SHA-256 and SHA-512 hashes of text or files.MD5 Hash GeneratorGenerate MD5 hashes of text, lines or files and verify checksums.SHA-256 Hash GeneratorSHA-256 and HMAC-SHA256 hashes of text, lines or files, in hex or Base64.Base64 Encoder DecoderEncode or decode Base64 text and files, and make data URIs.URL Encoder DecoderPercent-encode or decode URLs, query strings and form data.HTML Entity Encoder / DecoderEscape and unescape HTML entities, named or numeric.Bcrypt Hash Generator & CheckerCreate bcrypt password hashes and check a password against a hash.Binary TranslatorConvert text to binary, hex, octal and back.HMAC GeneratorGenerate and verify HMAC signatures with SHA-256, SHA-512, SHA-1 or MD5.CRC32 Checksum CalculatorCalculate CRC-32, CRC-32C, CRC-16 and Adler-32 checksums of text or large files.JWT DecoderDecode JSON Web Tokens, read the claims and expiry, and verify HS256 signatures.JWT GeneratorCreate and sign HS256, HS384 or HS512 JSON Web Tokens in your browser and verify them.Password Strength CheckerSee how strong a password really is, how long it takes to crack and how to improve it.ASCII TableFull ASCII code chart 0–255 in decimal, hex, octal, binary and HTML, with search and copy.Unicode Character LookupFind Unicode characters by name or code point and copy them with UTF-8, HTML and code escapes.Punycode ConverterConvert international domain names, emails and URLs between Unicode and xn-- Punycode, in bulk.JSON Escape / UnescapeEscape text for a JSON string, unescape \n and \" back to text, or stringify a whole object.Binary to HexConvert binary to hex instantly with steps and signed mode.Hex to BinaryConvert hex to binary instantly with steps and signed mode.Binary CalculatorAdd, subtract, multiply, divide, AND, OR, XOR and shift binary numbers with decimal values.Hex CalculatorHexadecimal + − × ÷ and AND, OR, XOR, NOT, shifts with decimal and binary equivalents.Base32 Encoder / DecoderEncode and decode Base32 (RFC 4648), Base32hex, Crockford and z-base-32 from text, hex or files.Base58 Encoder / DecoderEncode and decode Base58 and Base58Check (Bitcoin alphabet) from text or hex, with checksum verification.Unicode Escape / UnescapeConvert text to \uXXXX, \u{...}, \x, &#...; or CSS escapes and decode them back.File Hash CheckerGet MD5, SHA-1, SHA-256 and SHA-512 checksums of files and verify them against a hash.TOTP GeneratorGenerate 2FA one-time codes from a secret key, create otpauth QR codes and verify codes.RSA Key GeneratorGenerate 2048, 3072 or 4096-bit RSA key pairs as PEM, PKCS#1, JWK or OpenSSH, locally.SSL Certificate DecoderDecode PEM SSL/X.509 certificates: subject, issuer, expiry, SANs, key and fingerprints.Text Encryption ToolEncrypt and decrypt text with a password using AES-256-GCM, entirely in your browser.Argon2 Hash GeneratorHash passwords with Argon2id, Argon2i or Argon2d and verify them against an encoded hash.Base64 to PDFDecode a Base64 string to a PDF with preview and download, or encode a PDF to Base64.Bitwise CalculatorCalculate AND, OR, XOR, NOT and bit shifts at 8–64 bits with a bit grid and all bases.CSR GeneratorCreate a certificate signing request (CSR) and private key with SANs, RSA or ECDSA, in your browser.Checksum CalculatorCompute 8-bit sum, two's complement LRC, XOR/BCC, NMEA, Fletcher and Internet checksums of bytes.PBKDF2 Hash GeneratorDerive PBKDF2 keys from a password, salt and iteration count with SHA-1, SHA-256 or SHA-512.Protobuf DecoderDecode raw Protocol Buffers hex or Base64 without a schema, or add a .proto for field names.XML Escape / UnescapeEscape & < > " ' for XML text and attributes, unescape entities back, or wrap text in CDATA.Binary Search Tree VisualizerInsert, delete and find in BST, AVL and red-black trees with animated rotations and traversals.MongoDB ObjectId to TimestampDecode a MongoDB ObjectId to its creation date, or build ObjectIds from dates for range queries.PGP Encrypt / DecryptEncrypt, decrypt, sign and verify PGP messages with your armored keys, entirely offline.PGP Key GeneratorGenerate an OpenPGP key pair (Curve25519, NIST ECC or RSA) with passphrase and expiry, offline.Quoted-Printable Encoder / DecoderEncode or decode quoted-printable email text (MIME) with UTF-8 and 76-character soft line breaks.Self-Signed Certificate GeneratorCreate a self-signed SSL certificate and key for localhost or dev servers, as PEM or PFX.SHA-1 Hash GeneratorSHA-1 and HMAC-SHA1 of text or files in hex or Base64, plus Git blob hashes and verify.SHA-512 Hash GeneratorSHA-512 and SHA-384 hashes of text or files in hex or Base64, HMAC and hash verification.SRI Hash GeneratorCreate Subresource Integrity hashes (sha256/384/512) and ready <script> or <link> tags.SSH Key GeneratorGenerate Ed25519 or RSA SSH key pairs in your browser: OpenSSH public key plus private key.String Escape / UnescapeEscape or unescape strings for JavaScript, Java, C#, Python, C, SQL, regex, CSV and shell.UTF-8 Encoder / DecoderConvert text to UTF-8 bytes in hex, decimal, binary, \x or % and decode bytes back to text.UUID Decoder & ValidatorDecode any UUID: version, variant, v1/v6/v7 timestamp and MAC node, plus bulk validation.Base64 to FileDecode Base64 or a data URI to a downloadable file; detects the real file type and previews it.File Encryption ToolEncrypt and decrypt any file with a password using AES-256-GCM, entirely in your browser.Passphrase GeneratorMake strong, memorable diceware passphrases from a 7,776-word list, with entropy in bits.CSR DecoderDecode a PEM certificate signing request: subject, SANs, key size, signature and CA readiness checks.Hex Opacity CalculatorConvert opacity percent to a 2-digit HEX alpha code and full #RRGGBBAA color, with a 0-100% table.Playfair CipherEncrypt and decrypt Playfair ciphers from a keyword, with the 5x5 key square and every digraph step.Pwned Password CheckerCheck if a password appeared in data breaches; only 5 characters of its SHA-1 hash are sent.RSA Encryption ToolEncrypt text with an RSA public key and decrypt it with the private key using RSA-OAEP in your browser.SAML DecoderDecode SAMLRequest and SAMLResponse messages to readable XML, attributes and validity times.SSL Certificate ConverterConvert SSL certificates and keys between PEM, DER, PFX/P12 and P7B in your browser.
See all 65 Encoders, Hashes & Crypto →