Methodology & Standards
Every CodeShift translator implements a published standard. This page lists the standard for each tool, the decisions we made where the standard is silent, and how we test the code. The same functions run in your browser, generate the examples in our explainers, and are covered by the test suite — so the numbers in the text always match what the tool produces.
Standards by tool
Morse code translator
Text is uppercased (Morse has no case). Letters are separated by a space and words by " / ". É is the only ITU accented letter; other accents are sent as the plain letter with a note. × is sent as X and % as 0/0, as the ITU text instructs. Characters with no ITU signal are skipped and listed — never given invented codes. Four common amateur signals (! ; _ $) are translated and labelled non-standard. Timing: 1 unit = 1200 ÷ WPM ms; dot 1, dash 3, gaps 1/3/7; Farnsworth gaps per the ARRL formula.
Binary translator
Standard: UTF-8, RFC 3629
Text is encoded to UTF-8 bytes, each written as 8 bits. Decoding accepts spaced or unspaced bits; short whitespace-separated groups are read as one byte each. Invalid UTF-8 is shown as � with a warning.
Hex to text converter
Standard: Base16 (RFC 4648 §8) over UTF-8 bytes
Two hex digits per byte; 0x, \x, colons, commas and spaces are accepted. An odd digit count is reported rather than guessed.
ASCII converter
Standard: ASCII as reproduced in RFC 20
Characters 0–127 give their ASCII code. Anything outside ASCII is given as its Unicode code point and flagged as not ASCII. The 0–127 table is generated in code.
Base64 encoder & decoder
Standard: RFC 4648 §4 (base64) and §5 (base64url)
Text is converted to UTF-8 first. Padding is on by default and can be turned off; decoding accepts either alphabet, with or without padding, and ignores whitespace. Tested against the RFC 4648 §10 test vectors.
Braille translator
Standard: The Rules of Unified English Braille, 3rd ed. 2024 (ICEB) — grade 1; Unicode Braille Patterns block
Uncontracted (grade 1) only — contracted grade 2 is not produced. Capital indicator, capitalised-word indicator, numeric indicator and the grade 1 indicator after digits follow UEB §5, §6 and §8; output reproduces worked examples from the rule book. Accented letters are written as the base letter with a note.
NATO phonetic alphabet converter
Standard: ICAO Annex 10, Volume II (spelling alphabet and number pronunciation)
Official spellings Alfa, Juliett, Whiskey, X-ray. Digits default to ICAO forms (Tree, Fife, Niner); plain English is an option. Decoding accepts common variants.
Roman numeral converter
Standard: Standard subtractive notation, 1–3,999 (as summarised by Encyclopaedia Britannica)
Strict validation: only the standard form is accepted (no IIII, VX, IC, MMMM). Invalid input is explained, with the standard form suggested when one exists. Zero, negatives, fractions and numbers above 3,999 are rejected with a reason. Every number 1–3,999 is round-trip tested.
Caesar cipher
Standard: Classical shift cipher on A–Z (Suetonius, Life of Julius Caesar 56)
Any integer shift, reduced mod 26; case preserved; non-letters unchanged. The brute-force table ranks the 25 shifts by how typical their letters are of English (approximate letter frequencies) plus a bonus for very common English words — a heuristic, labelled as such.
Vigenère cipher
Standard: Classical Vigenère (Britannica)
Key letters give shifts A = 0 … Z = 25; the key advances only on letters; case and non-letters are preserved; non-letters in the key are ignored.
Atbash cipher
Standard: Atbash mirror substitution on A–Z
A ↔ Z, B ↔ Y …; self-inverse; case preserved; non-letters unchanged.
Letter to number cipher (A1Z26)
Standard: Alphabet position, A = 1 … Z = 26
Separator options: dash, space, comma, dot. Decoding detects the separator per line; numbers outside 1–26 are kept in brackets and reported.
Reference data and provenance
The three tables most prone to copying errors on the web are stored as data files with a record of where each value came from:
- Morse table — transcribed from Recommendation ITU-R M.1677-1 (10/2009) — International Morse code, Annex 1, Part I, checked 2026-10-07. Prosign names follow ITU-R M.1172 and amateur usage; the non-ITU signals are kept in a separate, clearly labelled list.
- Spelling alphabet — from ICAO’s published alphabet (Annex 10, Volume II), with pronunciations from ICAO Doc 9432, checked 2026-10-07.
- Braille — letters, indicators and symbols from The Rules of Unified English Braille, Third Edition 2024 (International Council on English Braille); Unicode cells computed from dot numbers using the rule in the Unicode Braille Patterns chart, checked 2026-10-07.
Charts such as the ASCII table, binary alphabet and Roman numerals chart are generated by code at build time, not typed by hand.
Testing
Each translator has at least six hand-worked test cases, including round trips, empty input, unknown characters and multi-byte UTF-8. Examples include: “é” → 11000011 10101001 in binary; “Man” → TWFu in Base64 plus all RFC 4648 test vectors; SOS → ... --- ...; 1994 → MCMXCIV and 3,999 → MMMCMXCIX; IIII rejected; HELLO with Caesar shift 3 → KHOOR; ATTACKATDAWN with the key LEMON → LXFOPVEFRNHR; and braille examples copied from the UEB rule book such as “Question 3c” → ⠠⠟⠥⠑⠎⠞⠊⠕⠝ ⠼⠉⠰⠉.
Limits we are open about
- The braille translator produces grade 1 only. For contracted (grade 2) braille or anything official, use a certified transcriber.
- Morse code is International Morse; American (railroad) Morse and non-Latin Morse alphabets are not supported.
- The ciphers on this site are historical and educational. None of them is secure for real secrets.
Spotted an error? Please tell us; see the editorial policy for how corrections are handled.