A method for encoding alphanumeric data onto a tangible computer readable medium comprising: a) receiving an alphanumeric character string having a plurality of characters; b) generating a character map having a string of character type symbols, wherein generating the character map includes: for each of the plurality of characters in the alphanumeric character string, assigning a character type value to a symbol in the string of character type symbols; c) generating a character map remainder, wherein the character map remainder is a variable-length bit pattern and generating the character map remainder includes: i) identifying one or more runs of character type symbols in sequential positions in the character map having the same character type value, and ii) removing the one or more identified runs of character type symbols from the character map; d) for each identified run, generating a run field, wherein generating the run field includes encoding base data and run length data; e) encoding the characters of each character type into binary encoded substrings, wherein encoding includes: i) assembling the characters into separate substrings by character type, and ii) encoding each character type substring into a binary encoded substring; f) generating an encoded data string including one or more run fields, the character map remainder, and the binary encoded substrings; and g) writing the encoded data string to the tangible computer readable medium. a) receiving an alphanumeric character string having a plurality of characters; b) generating a character map having a string of character type symbols, wherein generating the character map includes: for each of the plurality of characters in the alphanumeric character string, assigning a character type value to a symbol in the string of character type symbols; for each of the plurality of characters in the alphanumeric character string, assigning a character type value to a symbol in the string of character type symbols; c) generating a character map remainder, wherein the character map remainder is a variable-length bit pattern and generating the character map remainder includes: i) identifying one or more runs of character type symbols in sequential positions in the character map having the same character type value, and ii) removing the one or more identified runs of character type symbols from the character map; i) identifying one or more runs of character type symbols in sequential positions in the character map having the same character type value, and ii) removing the one or more identified runs of character type symbols from the character map; d) for each identified run, generating a run field, wherein generating the run field includes encoding base data and run length data; e) encoding the characters of each character type into binary encoded substrings, wherein encoding includes: i) assembling the characters into separate substrings by character type, and ii) encoding each character type substring into a binary encoded substring; i) assembling the characters into separate substrings by character type, and ii) encoding each character type substring into a binary encoded substring; f) generating an encoded data string including one or more run fields, the character map remainder, and the binary encoded substrings; and g) writing the encoded data string to the tangible computer readable medium.