Skip to content
CodeShift
Menu

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

Standard: Recommendation ITU-R M.1677-1 (2009, in force) — characters, prosigns and timing; ARRL Farnsworth timing standard

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:

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.