b2KIT

AES Round Function Visualizer

Step through AES encryption rounds: SubBytes, ShiftRows, MixColumns, and AddRoundKey with state matrix visualization.

Tested tool guide Tested browser tools Checked August 15, 2026

What AES Round Function Visualizer does, with a checked example

This tool renders the AES 128-bit state as a 4x4 byte grid and lets you step through a round's four transformations - SubBytes, ShiftRows, MixColumns, AddRoundKey - watching the grid update after each one. It's built for tracing what happens inside a round, not for producing usable ciphertext. The detail people most often misjudge is the byte-to-cell mapping: AES fills the state column by column, not row by row, so a grid that looks transposed from what you expected is usually correct, not a bug in the tool.

Worked example

A concrete input and expected output from the current implementation.

Input

16-byte state loaded in order: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

Expected output

After ShiftRows: 00 05 0a 0f 04 09 0e 03 08 0d 02 07 0c 01 06 0b

FIPS 197 fills the state column-major, so row 0 is 00 04 08 0c, row 1 is 01 05 09 0d, row 2 is 02 06 0a 0e, row 3 is 03 07 0b 0f. ShiftRows leaves row 0 fixed and cyclically shifts rows 1, 2, 3 left by 1, 2, and 3 bytes; flattening the shifted grid back column-major gives this byte sequence.

How the result is produced

1

Column-major state loading

The 16 input bytes fill a 4x4 grid column by column: byte 0 goes to row 0/col 0, byte 1 to row 1/col 0, byte 4 to row 0/col 1, and so on, matching the layout FIPS 197 defines. Every later transformation operates on this grid, and the same column-major order is used when flattening it back to a byte stream for display.

2

Round transformation order

A full round applies SubBytes (per-byte S-box substitution), ShiftRows (cyclic left-shift of each row by its row index), MixColumns (a fixed GF(2^8) matrix multiplication on each column), then AddRoundKey (XOR with that round's subkey), in that order. The last encryption round skips MixColumns, and the state is XORed with the first subkey before round 1 starts.

Good uses

  • hand-tracing an AES-128 test vector for a course assignment and confirming the state after each transformation
  • cross-checking a from-scratch AES implementation's intermediate round output against a known-good reference before trusting it
  • explaining to a student or CTF teammate why ShiftRows plus MixColumns together diffuse a single byte across the whole block within two rounds

Limits and checks

  • this visualizes one 16-byte state through round transformations; it is not a vetted encryption library and should not be used to actually encrypt real files or secrets
  • whether the tool derives round keys itself from a single input key or expects each round's subkey entered separately is not stated in its description - check the interface before assuming either
  • byte-ordering conventions differ across textbooks; if a hand-computed value does not match the tool's output, check whether you assumed row-major filling before concluding the tool is wrong

Common questions

Can I use this to actually encrypt a file or a password?

No. It shows the internal state of one 16-byte block moving through SubBytes, ShiftRows, MixColumns, and AddRoundKey, not a full encryption pipeline with key management, modes, or padding. For real encryption use a maintained library, such as one backed by OpenSSL or your language's standard crypto module.

Does it show the key schedule, or only the round transformations on the data?

The tool's stated scope is SubBytes, ShiftRows, MixColumns, and AddRoundKey on the state matrix. Whether it also computes and displays the expanded round keys from a master key isn't confirmed here, so check the tool page directly if that's what you need.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools