Most beginner ciphers change letters. Caesar shifts them, Atbash reverses them, Affine sends them through modular arithmetic, and Vigenere changes them with a repeating keyword. The Columnar Transposition cipher does something different: it leaves the letters alone, then it moves them.
A message is written into a rectangular grid under a keyword. The keyword determines the order of the columns. Once the grid is filled, the ciphertext is created by reading the columns in alphabetical key order. The result is a message made from the same letters, but in a different arrangement.
That makes Columnar Transposition a transposition cipher, not a substitution cipher. In a substitution cipher, letters change identity. In a transposition cipher, letters keep their identity but change position.
The Columnar Transposition cipher is more structured than the Rail Fence cipher. Rail Fence uses a zigzag path. Columnar Transposition uses a grid and a keyword. The keyword does not tell you how to replace letters; it tells you how to reorder columns.
Caesar changes the alphabet. Rail Fence changes the path. Columnar Transposition changes the columns.
Columnar Transposition cipher at a glance
| Feature | Columnar Transposition Cipher |
|---|---|
| Type | Transposition cipher |
| Main idea | Write plaintext into rows under a keyword, then read columns in keyword order |
| Key | A keyword |
| What the key controls | The order in which columns are read |
| What changes | Letter positions |
| What stays the same | The letters themselves |
| Example key | ZEBRAS |
| Number of columns | Equal to the keyword length |
| Example plaintext | WEAREDISCOVEREDFLEEATONCE |
| Example ciphertext | EVLNA CDTES EAROF ODEEC WIREE |
| Padding | Optional; this classic example uses no padding |
| Duplicate key letters | Ordered left-to-right when tied |
| Security | Educational only; weak by modern standards |
| Best use | Learning transposition, grids, column ordering, and positional cryptanalysis |
Columnar Transposition is one of the most important classical transposition patterns because it is simple, visual, and more flexible than a basic zigzag.
The key is not a number of rails. The key is a word. That word becomes a column-ordering machine.
What is the Columnar Transposition cipher?
The Columnar Transposition cipher is a classical method for rearranging letters using a grid.
The sender chooses a keyword, such as:
ZEBRAS
The number of letters in the keyword determines the number of columns. Since ZEBRAS has 6 letters, the grid has 6 columns.
The plaintext is then written into the grid from left to right, row by row.
For example:
WEAREDISCOVEREDFLEEATONCE
becomes:
Z E B R A S
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E
Then the columns are read in alphabetical order of the keyword letters.
| Column | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Key letter | Z | E | B | R | A | S |
Alphabetically, the key letters go:
A, B, E, R, S, Z
So the read order is:
| Key letter | A | B | E | R | S | Z |
|---|---|---|---|---|---|---|
| Original column | 5 | 3 | 2 | 4 | 6 | 1 |
That gives the read order:
5 -> 3 -> 2 -> 4 -> 6 -> 1
The ciphertext is made by reading those columns from top to bottom: column 5 first, then column 3, then column 2, then column 4, then column 6, then column 1.
That is the whole cipher.
Write by rows. Read by columns. But not in ordinary column order. Read in keyword order.
How does Columnar Transposition work?
Columnar Transposition has four main stages:
- Choose a keyword.
- Write the plaintext into a grid under that keyword.
- Rank the keyword letters alphabetically.
- Read the columns in rank order.
The message itself is not substituted. The letters are not changed into new letters. Instead, their positions are permuted.
Suppose the keyword is:
ZEBRAS
Write the keyword above six columns:
Z E B R A S
Now assign each column a rank. Alphabetically, A comes first, B comes second, E comes third, R comes fourth, S comes fifth, and Z comes sixth.
So the keyword letters receive these ranks:
| Key letter | Z | E | B | R | A | S |
|---|---|---|---|---|---|---|
| Rank | 6 | 3 | 2 | 4 | 1 | 5 |
That means:
| Rank | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Column read | 5 | 3 | 2 | 4 | 6 | 1 |
So column 5 is read first because its key letter is A. Column 1 is read last because its key letter is Z.
That gives Columnar Transposition its identity. The keyword is not used to change letters. It is used to sort columns.
Key and rules
The key for Columnar Transposition is a keyword.
The keyword controls two things:
| Key property | Effect |
|---|---|
| Keyword length | Determines the number of columns |
| Alphabetical order of letters | Determines the column read order |
For example:
ZEBRAS
has 6 letters, so the grid has 6 columns. Its alphabetical ordering gives:
A, B, E, R, S, Z
So the columns are read:
5 -> 3 -> 2 -> 4 -> 6 -> 1
The main rules are:
| Rule | Explanation |
|---|---|
| Use a keyword | The keyword determines the columns |
| Remove or preserve non-letters depending on tool settings | Classical examples often use letters only |
| Write plaintext row by row | Fill the grid from left to right |
| Rank key letters alphabetically | This gives each column a read order |
| Read columns by rank | Read each selected column from top to bottom |
| Duplicate key letters need a tie rule | This site's tool keeps duplicates in original left-to-right order |
| Padding may or may not be used | The classic ZEBRAS example uses no padding |
| Decryption must reconstruct column lengths | Short final columns must be handled correctly |
The duplicate-letter rule is important.
If the keyword is:
BALLOON
then L appears twice and O appears twice. The cipher must decide which repeated letter comes first.
This site's tool uses a clean rule: duplicate key letters keep their original left-to-right order. That avoids ambiguity. Without a consistent duplicate-letter rule, encryption and decryption may disagree.
Worked example: WEAREDISCOVEREDFLEEATONCE with ZEBRAS
Now encrypt the classic plaintext:
WEAREDISCOVEREDFLEEATONCE
using the keyword:
ZEBRAS
First, write the keyword:
Z E B R A S
Now write the plaintext into the grid row by row:
Z E B R A S
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E
The final row is incomplete. No padding is added in this classic example, and short final columns are handled during decryption.
Now rank the keyword letters.
| Column | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Key | Z | E | B | R | A | S |
| Rank | 6 | 3 | 2 | 4 | 1 | 5 |
Read columns in rank order:
| Read position | Column | Key letter |
|---|---|---|
| 1st | 5 | A |
| 2nd | 3 | B |
| 3rd | 2 | E |
| 4th | 4 | R |
| 5th | 6 | S |
| 6th | 1 | Z |
So the read order is:
5 -> 3 -> 2 -> 4 -> 6 -> 1
Now read each column from top to bottom.
| Column | Key | Letters | Column text |
|---|---|---|---|
| 5 | A | E V L N | EVLN |
| 3 | B | A C D T | ACDT |
| 2 | E | E S E A | ESEA |
| 4 | R | R O F O | ROFO |
| 6 | S | D E E C | DEEC |
| 1 | Z | W I R E E | WIREE |
Now join the columns:
EVLNACDTESEAROFODEECWIREE
Grouped into blocks of five:
EVLNA CDTES EAROF ODEEC WIREE
So:
| Item | Value |
|---|---|
| Plaintext | WEAREDISCOVEREDFLEEATONCE |
| Keyword | ZEBRAS |
| Column read order | 5 -> 3 -> 2 -> 4 -> 6 -> 1 |
| Ciphertext | EVLNACDTESEAROFODEECWIREE |
| Grouped ciphertext | EVLNA CDTES EAROF ODEEC WIREE |
The grouped spaces are only formatting. They do not change the cipher.
What the keyword really does
The keyword in Columnar Transposition can be misunderstood.
It does not act like a Vigenere keyword. It does not provide letter shifts. It does not decide that A becomes Q or E becomes X.
Instead, the keyword controls column order.
With the key:
ZEBRAS
the columns are labelled:
| Column | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Key | Z | E | B | R | A | S |
Then those labels are sorted alphabetically:
A, B, E, R, S, Z
That sorted order tells the cipher which columns to read first.
So the keyword is really a compact way to create a permutation. A permutation is a rearrangement.
Here, the original column order is:
1, 2, 3, 4, 5, 6
The keyword turns it into:
5, 3, 2, 4, 6, 1
That is the mathematical core of the cipher.
Columnar Transposition is not only "write in a box and read down." It is: write in normal order, read in permuted order.
Decrypting Columnar Transposition
Decryption reverses the process.
Encryption writes the plaintext row by row, then reads the columns in key order. Decryption must do the opposite:
- Work out the grid dimensions.
- Work out the column read order.
- Work out how long each column should be.
- Split the ciphertext into column chunks.
- Put each chunk into the correct column.
- Read the grid row by row.
The hard part is not the alphabetic order. The hard part is column length.
If padding is used, every column has the same length. But the classic ZEBRAS example uses no padding, so some final columns are shorter than others.
The plaintext:
WEAREDISCOVEREDFLEEATONCE
has 25 letters. The key:
ZEBRAS
has 6 columns.
So the grid has:
25 / 6 = 4 remainder 1
That means most columns have 4 letters, and the first column has 5 letters because it receives the extra final-row letter.
| Column | Key | Length |
|---|---|---|
| 1 | Z | 5 |
| 2 | E | 4 |
| 3 | B | 4 |
| 4 | R | 4 |
| 5 | A | 4 |
| 6 | S | 4 |
But the ciphertext is read in this order:
5 -> 3 -> 2 -> 4 -> 6 -> 1
So the ciphertext chunks must be split according to those columns:
| Read order | Column | Length | Ciphertext chunk |
|---|---|---|---|
| 1 | 5 | 4 | EVLN |
| 2 | 3 | 4 | ACDT |
| 3 | 2 | 4 | ESEA |
| 4 | 4 | 4 | ROFO |
| 5 | 6 | 4 | DEEC |
| 6 | 1 | 5 | WIREE |
Now place those chunks back into their original columns:
Z E B R A S
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E
Now read row by row:
WEAREDISCOVEREDFLEEATONCE
The decryption problem is a grid reconstruction problem. The keyword gives the column order. The message length gives the column lengths. The receiver puts the columns back where they belong.
History and origin
Columnar Transposition belongs to the long family of transposition ciphers: systems that hide messages by rearranging letters rather than replacing them.
This family is ancient in spirit. The basic idea of rearranging text is old, simple, and practical. A message can be written into a shape, route, grid, strip, or table, then read in a different order.
Columnar Transposition is one of the cleanest grid-based versions of that idea. It does not require advanced mathematics. It does not require a cipher machine. It only requires a keyword, a writing grid, a rule for sorting columns, and agreement about padding and duplicate letters.
Its historical significance is not that it was unbreakable. It was not. But it shows a very important cryptographic principle:
The order of information can be as important as the symbols themselves.
A message can be hidden by changing its path through a grid. That same broad idea, rearrangement and permutation, becomes much more sophisticated in modern cryptography.
Columnar Transposition is not modern encryption. But it teaches a primitive form of a lasting idea.
Why Columnar Transposition was useful
Columnar Transposition was useful because it gave a simple way to scramble a message without changing the letters.
Compared with Rail Fence, it had a more flexible key.
Rail Fence usually uses a number:
3 rails
Columnar Transposition uses a keyword:
ZEBRAS
That keyword produces a specific column order:
5 -> 3 -> 2 -> 4 -> 6 -> 1
A longer keyword creates more columns and a more complex permutation.
The cipher had several practical strengths:
| Strength | Why it mattered |
|---|---|
| Easy to perform by hand | A grid and keyword are enough |
| Keyword-based | Easier to remember than a numeric permutation |
| More flexible than Rail Fence | Different keywords produce different column orders |
| Preserves letters | Useful for teaching transposition clearly |
| Can be combined with other methods | Transposition can be layered with substitution |
| Good for programming practice | Teaches grids, sorting, indexing, and reconstruction |
It also helps learners understand a key distinction.
A substitution cipher asks: what does this letter become?
A transposition cipher asks: where does this letter go?
Columnar Transposition makes that question visible. The message enters the grid in one order. It leaves in another.
Weaknesses and limitations
Columnar Transposition is stronger than the very simplest transposition ciphers, but it is still weak by modern standards.
The main problem is that the letters are unchanged. Only their positions move. That means the ciphertext contains exactly the same letter frequencies as the plaintext.
If the plaintext has many Es, the ciphertext has the same number of Es. If the plaintext has no Qs, the ciphertext has no Qs. This gives an attacker an important clue: the message may have been transposed rather than substituted.
The main weaknesses are:
| Weakness | Why it matters |
|---|---|
| Letter frequencies are preserved | The same letters remain present |
| Human keywords are guessable | Real keywords are often short or meaningful |
| Keyword length may be estimated | Grid structure can leak likely lengths |
| Anagrams can appear | Some local letter relationships survive |
| Padding conventions leak clues | Missing or filler cells reveal grid shape |
| Duplicate-key rules must match | Ambiguity can break decryption |
| Single transposition is limited | One rearrangement may not hide enough structure |
| No authentication | It cannot detect tampering |
Columnar Transposition can be made more difficult by using longer keys, double transposition, or combining it with substitution. But the basic single-columnar version remains a classical educational cipher.
It should not be used to protect real information.
How Columnar Transposition is broken
A practical attack begins by asking:
Is this substitution or transposition?
If the ciphertext has roughly normal English letter frequencies but the letters appear scrambled, a transposition cipher becomes plausible.
Columnar Transposition preserves the letters but disrupts their order. An attacker may look for normal letter frequencies, likely keyword lengths, repeated patterns, possible anagrams, common English fragments, column widths that produce readable row reconstructions, padding behaviour, and likely plaintext cribs.
A simple brute-force attack may try different column counts.
For example, if the ciphertext has 25 letters, possible column counts include:
| Columns | Approximate rows |
|---|---|
| 3 | 9 |
| 4 | 7 |
| 5 | 5 |
| 6 | 5 |
| 7 | 4 |
| 8 | 4 |
The attacker can test likely grid widths and look for row reconstructions that produce English-like fragments.
If the keyword length is known but the keyword order is not, the problem becomes one of finding the column permutation.
For 6 columns, there are:
6! = 720
possible column orders. That is not many for a computer.
For 10 columns, there are:
10! = 3,628,800
possible orders. That is larger, but still manageable with scoring methods and enough ciphertext.
Modern attacks can use language scoring. A program can try many column orders and score the resulting plaintext according to how English-like it is. Common letter pairs, word fragments, and n-gram frequencies help identify promising candidates.
The cipher is therefore not broken by one universal shortcut. It is broken by exploiting its structure: same letters, grid layout, keyword length, column permutation, and language patterns.
Columnar Transposition is more structured than Rail Fence. That structure is useful to the sender. It is also useful to the attacker.
Columnar Transposition vs Rail Fence
Columnar Transposition and Rail Fence are both transposition ciphers.
They both rearrange letters instead of replacing them, but they use different movement systems.
| Feature | Rail Fence | Columnar Transposition |
|---|---|---|
| Main shape | Zigzag | Grid |
| Key | Number of rails | Keyword |
| Writing method | Down-and-up diagonal path | Row by row |
| Reading method | Rail by rail | Column by column in key order |
| Flexibility | Low | Higher |
| Main teaching value | Shows transposition visually | Shows keyed permutation |
| Example key | 3 rails | ZEBRAS |
| What changes | Letter order | Letter order |
Rail Fence is easier to see. Columnar Transposition is more systematic.
Rail Fence asks: which rail does this letter land on?
Columnar Transposition asks: which column is read first?
That makes Columnar Transposition a natural next step after Rail Fence. Rail Fence teaches movement. Columnar Transposition teaches ordered rearrangement.
Related ciphers and comparisons
Columnar Transposition sits inside a wider family of rearrangement ciphers.
| Cipher | Relationship |
|---|---|
| Rail Fence cipher | A simpler transposition cipher using a zigzag path |
| Route cipher | Writes into a grid and reads along a route |
| Columnar Transposition | Writes rows and reads columns in keyword order |
| Double Transposition | Applies columnar transposition twice |
| Scytale | Ancient-style transposition using wrapping around a rod |
| Caesar cipher | Substitution rather than transposition |
| Vigenere cipher | Polyalphabetic substitution using a keyword |
| Product cipher | Combines substitution and transposition ideas |
The comparison with product ciphers is useful.
A single transposition step is weak. A single substitution step is often weak too. But combining substitution and transposition repeatedly can create much stronger systems.
Modern encryption is far beyond classical hand ciphers, but the broad idea of mixing substitution and permutation has roots in these older categories.
Columnar Transposition is not secure modern cryptography, but it is one of the simplest ways to see positional diffusion begin.
Where Columnar Transposition appears today
Columnar Transposition is common in:
- classical cryptography lessons
- online cipher tools
- programming exercises
- puzzle hunts
- escape rooms
- recreational cryptography
- CTF warm-up challenges
- transposition cipher demonstrations
- geocaching-style clues
It is less visually immediate than Caesar or Atbash, but more systematic than Rail Fence. That makes it useful for serious beginners.
A good Columnar Transposition tool can show the keyword, the column ranks, the read order, the plaintext grid, the ciphertext chunks, and how decryption reconstructs the columns.
Columnar Transposition is best understood visually. The reader should be able to see the grid, then see the columns move.
A simple Python Columnar Transposition cipher
Columnar Transposition is a good programming exercise because it uses several useful ideas: cleaning text, ranking keyword letters, handling duplicate key letters, building a grid, reading columns in a custom order, and reconstructing short final columns during decryption.
The code below implements a simple no-padding Columnar Transposition cipher.
Python exampleShow code
def normalise_key(key):
"""
Keep A-Z letters only and convert to uppercase.
"""
cleaned = ""
for char in key.upper():
if char.isalpha():
cleaned += char
if cleaned == "":
raise ValueError("Key must contain at least one letter.")
return cleaned
def get_column_order(key):
"""
Return the column read order for a keyword.
Duplicate letters are tied left-to-right.
"""
key = normalise_key(key)
indexed_letters = []
for index, letter in enumerate(key):
indexed_letters.append((letter, index))
sorted_letters = sorted(indexed_letters)
order = []
for letter, index in sorted_letters:
order.append(index)
return order
def clean_text_letters(text):
"""
Keep letters only and uppercase them.
"""
cleaned = ""
for char in text.upper():
if char.isalpha():
cleaned += char
return cleaned
def columnar_encrypt(plaintext, key, group_size=0):
"""
Encrypt plaintext using no-padding Columnar Transposition.
Plaintext is written row by row.
Columns are read in alphabetical key order.
"""
key = normalise_key(key)
text = clean_text_letters(plaintext)
columns = len(key)
order = get_column_order(key)
ciphertext = ""
for col in order:
index = col
while index < len(text):
ciphertext += text[index]
index += columns
if group_size:
groups = []
for i in range(0, len(ciphertext), group_size):
groups.append(ciphertext[i:i + group_size])
return " ".join(groups)
return ciphertext
def column_lengths(message_length, columns):
"""
Work out how many letters each original column contains
when no padding is used.
"""
full_rows = message_length // columns
extra = message_length % columns
lengths = []
for col in range(columns):
if col < extra:
lengths.append(full_rows + 1)
else:
lengths.append(full_rows)
return lengths
def columnar_decrypt(ciphertext, key):
"""
Decrypt no-padding Columnar Transposition.
The ciphertext is split into chunks according to the
length of each original column, then the grid is read row by row.
"""
key = normalise_key(key)
text = clean_text_letters(ciphertext)
columns = len(key)
order = get_column_order(key)
lengths = column_lengths(len(text), columns)
column_text = [""] * columns
position = 0
for col in order:
length = lengths[col]
column_text[col] = text[position:position + length]
position += length
plaintext = ""
rows = max(lengths)
for row in range(rows):
for col in range(columns):
if row < len(column_text[col]):
plaintext += column_text[col][row]
return plaintext
plaintext = "WEAREDISCOVEREDFLEEATONCE"
key = "ZEBRAS"
ciphertext = columnar_encrypt(plaintext, key)
grouped = columnar_encrypt(plaintext, key, group_size=5)
decrypted = columnar_decrypt(ciphertext, key)
print("Plaintext :", plaintext)
print("Key :", key)
print("Encrypted :", ciphertext)
print("Grouped :", grouped)
print("Decrypted :", decrypted)
Expected output:
Plaintext : WEAREDISCOVEREDFLEEATONCE
Key : ZEBRAS
Encrypted : EVLNACDTESEAROFODEECWIREE
Grouped : EVLNA CDTES EAROF ODEEC WIREE
Decrypted : WEAREDISCOVEREDFLEEATONCE
The most important part of the encryption is:
for col in order:
index = col
while index < len(text):
ciphertext += text[index]
index += columns
That reads one column at a time.
The variable order contains the keyword-driven column order. For ZEBRAS, it is:
[4, 2, 1, 3, 5, 0]
That is the zero-based version of:
5 -> 3 -> 2 -> 4 -> 6 -> 1
The code is not replacing letters. It is walking through the message in a different order.
That is transposition in programming form.
Reading the code like the cipher
The function:
get_column_order(key)
turns the keyword into a column order.
For:
ZEBRAS
the letters and positions are:
| Index | Letter |
|---|---|
| 0 | Z |
| 1 | E |
| 2 | B |
| 3 | R |
| 4 | A |
| 5 | S |
Sorting those alphabetically gives:
| Sorted letter | Original index |
|---|---|
| A | 4 |
| B | 2 |
| E | 1 |
| R | 3 |
| S | 5 |
| Z | 0 |
So the read order is:
[4, 2, 1, 3, 5, 0]
That corresponds to column 5, column 3, column 2, column 4, column 6, column 1.
The encryption function does not need to physically draw the grid. Instead, it uses indexing. If there are 6 columns, then letters in the same column are spaced 6 positions apart in the plaintext string.
Column 5, using zero-based index 4, contains:
text[4], text[10], text[16], text[22], ...
That is how the code reads down a column.
Decryption is slightly more complicated because the final row may be incomplete. The function:
column_lengths(message_length, columns)
works out how many letters each original column should contain.
For 25 letters and 6 columns:
[5, 4, 4, 4, 4, 4]
That means column 1 has 5 letters, while columns 2 through 6 have 4 letters.
Then the ciphertext is split into chunks using the keyword read order. Finally, the grid is read row by row to recover the plaintext.
Encryption:
rows -> columns
Decryption:
columns -> rows
Common questions about the Columnar Transposition cipher
Is Columnar Transposition secure?
No. Columnar Transposition is not secure by modern standards. It preserves letter frequencies, has a recoverable grid structure, and can be attacked by testing likely column counts and permutations.
It is useful for education, puzzles, and historical interest only.
Is Columnar Transposition a substitution cipher?
No. It is a transposition cipher. That means it rearranges the letters rather than replacing them. The ciphertext contains the same letters as the plaintext, just in a different order.
What is the key in Columnar Transposition?
The key is usually a keyword.
The keyword determines how many columns the grid has and the order in which those columns are read.
For example:
ZEBRAS
has 6 letters, so the grid has 6 columns. Its read order is:
5 -> 3 -> 2 -> 4 -> 6 -> 1
How are duplicate key letters handled?
Duplicate key letters need a consistent tie rule.
This site's tool uses a left-to-right rule: duplicate key letters keep their original order. For example, if two columns are both labelled L, the leftmost L is ranked before the later L.
This matters because encryption and decryption must agree.
Does Columnar Transposition use padding?
Sometimes.
Some versions pad the final row with filler letters so every column has the same length. The classic example with ZEBRAS uses no padding. Short final columns are handled correctly during decryption.
Both approaches are valid as long as sender and receiver use the same convention.
What happens to spaces and punctuation?
Classical examples often remove spaces and punctuation before encryption.
This site's tool can keep punctuation and numbers visible, but only transposes letters. With punctuation kept on, non-letters stay where they are and only the letters are rearranged.
That makes the tool easier to use, but it can leak structure.
What is a good Columnar Transposition example?
A classic example is:
| Item | Value |
|---|---|
| Plaintext | WEAREDISCOVEREDFLEEATONCE |
| Keyword | ZEBRAS |
| Read order | 5 -> 3 -> 2 -> 4 -> 6 -> 1 |
| Ciphertext | EVLNACDTESEAROFODEECWIREE |
| Grouped ciphertext | EVLNA CDTES EAROF ODEEC WIREE |
This matches the example in the tool.
Why Columnar Transposition still matters
The Columnar Transposition cipher should not be used to protect anything serious.
Not passwords.
Not private messages.
Not personal information.
Not financial data.
Not API keys.
Not recovery phrases.
Modern encryption depends on carefully analysed algorithms, secure keys, randomness, authentication, and resistance to many kinds of attack. Columnar Transposition has none of that.
But it still earns its place.
It shows that a cipher can hide a message without changing the letters. It shows how a keyword can become a permutation. It shows why grids matter. It shows why padding conventions matter. It shows why preserving letter frequency is dangerous. It shows how a message can be written one way and read another.
And most importantly, it teaches that encryption is not only about symbols.
It is also about position.
Rail Fence makes text move in a zigzag. Columnar Transposition makes text move through ordered columns.
The message enters as rows. It leaves as columns.
That is why the Columnar Transposition cipher still matters. Not because it is strong, but because it teaches the power and the weakness of rearrangement.