ForHosting KIT · Developer Utilities

Tap code translator

Type HI and get 2,3 2,4: H sits in row 2, column 3 of the 5×5 Polybius square and I in row 2, column 4, also shown as dots for tapping. Decoding turns pairs, digit runs or dots back into letters. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Text
HI
Calculation mode
Encode
You get
Result
2,3 2,4
Input
HI
Numeric
2,3 2,4
Dots
.. ... / .. ....

A tap code translator turns ordinary Latin letters into the classic Polybius prison taps—or turns those taps back into readable text. Choose encode to map each A–Z character onto a five-by-five grid (I and J share one cell), then emit row and column counts as numeric pairs such as 2,3 or as classroom-style dots. Choose decode to parse the same pairs, compact digraphs like 23, bare streams of digits, or slash-separated dot runs, and recover uppercase letters. History buffs, escape-room designers, scouting educators, and unit-test authors all need that deterministic grid without a network call or a random seed.

How the 5×5 Polybius tap-code square works

Tap code is a simple two-number cipher built on a Polybius square with five rows and five columns. Letters fill the grid left to right, top to bottom: A through E on row one, F through I and K on row two (J shares I’s cell at row two column four), L through P on row three, Q through U on row four, and V through Z on row five.

To send a letter you tap the row count, pause briefly, then tap the column count; a longer pause separates letters. On paper the same idea appears as pairs such as 4,4 for T or as two runs of dots: .... .... . Because twenty-six letters must fit on twenty-five cells, I and J collapse to one position—decode always prints I for that cell, and encode folds J into the same coordinates so round-trips stay consistent.

Whitespace on encode is ignored so multi-word phrases still produce a pure letter stream of taps. Understanding that fixed layout is enough to verify any result by hand: count the row and column, read the letter at that intersection, and confirm it matches the published pairs array.

Practical tips, limits, and related searches

Prefer short classroom examples first: encode HI to confirm H is 2,3 and I is 2,4, then decode that numeric string to prove the round-trip. When pasting historical material, try slash separators between letters if spaces alone are ambiguous, or use the compact digraph form that packs each pair into two digits. Keep messages alphabetic only; strip phone numbers and punctuation before encode, or the task fails with a message that names the 5x5 grid rule.

Remember that J becomes I on both encode display and decode of cell 2,4—tests that expect a literal J after a round-trip will fail by design. This landing targets people searching for a tap code translator, Polybius square encoder, or prison tap cipher decoder online; it is not Morse code, not a full cryptographic Polybius with custom alphabets, and not a steganography tool that hides taps in audio.

Prefer this capability when you already have Latin letters or well-formed tap pairs and only need the grid mapping; if your source is Morse dots and dashes for international radio, use a Morse converter instead. Round-trip checks are easy: encode a word, feed result back with mode decode, and assert that letters match the original with J folded to I.

Classroom and scout cipher practice

Teachers encode short words to numeric or dot taps so students practice counting row and column strikes on the standard 5×5 square.

What is tap code?

Tap code is a two-number cipher on a 5×5 Polybius square: each letter is a row count and a column count, historically tapped on a wall or pipe. I and J share one cell.

How are I and J handled?

Both map to row 2, column 4. Encode folds J into that cell; decode always returns the letter I for that pair.

What formats work for decode?

Space-separated pairs like 2,3 1,5; compact digraphs like 23 15; bare digits in pairs; or dot runs such as .. ...

Is the tap code translator free?

The browser tool is free and runs locally.

What happens to digits or punctuation when I encode?

They are refused, because the classic grid holds only the letters A to Z. Spaces and line breaks are simply skipped, so remove phone numbers, commas and accented letters before encoding a phrase.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/enc/tap-code

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/enc/tap-code \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"HI"}'
{
  "text": "HI"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.tap_code",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_chars100000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Characters that are not A–Z on encode, or tap values outside rows and columns one through five on decode, return a clear invalid_input error instead of guessing.

How the 5×5 Polybius tap-code square works

Digits, punctuation, emoji, and accented characters sit outside the historical grid; this tool rejects them with invalid_input rather than inventing extensions that textbooks do not share.

How to call the API and what comes back

On encode, text should contain only A–Z letters after case folding; spaces and newlines are skipped, and any other character fails validation. Length is capped at one hundred thousand characters. Send a JSON body with required string field text (aliases input, value, data, message) and optional mode encode or decode (aliases operation, op, direction; default encode). The success payload echoes mode and input, sets result and numeric to space-separated row,col pairs, sets dots to slash-separated dual runs of periods, sets letters to the normalized uppercase stream (J shown as I), pairs to an ordered array of letter, row, col, numeric, and dots objects, letter_count to the number of encoded letters, and message to a short English summary. On decode, text may use 2,3 style pairs, compact 23 digraphs, streams of single digits in order, or dot runs separated by spaces or slashes; invalid tokens or odd counts of numbers return invalid_input. Decode success sets result, text, and letters to the recovered uppercase string, plus the same numeric, dots, pairs, and letter_count fields for inspection. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price; failed validation is never charged.

Practical tips, limits, and related searches

Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send digits or odd-length tap streams.

Escape-room and puzzle pipelines

Game designers decode player-entered tap strings into letters and reject malformed pairs with a clear invalid_input signal.

Golden tests for cipher kata

Coding exercises assert known-good encode and decode fixtures plus deliberate out-of-grid characters without floating randomness.

What happens with digits or punctuation on encode?

They sit outside the 5×5 A–Z grid. The API returns invalid_input and does not invent extra symbols.

Read the full KIT documentation →