Varicode is a self-synchronizing code for use in PSK31. It supports all ASCII characters, but the characters used most frequently in English have shorter codes. The space between characters is indicated by a 00 sequence, an implementation of Fibonacci coding. Originally created for speeding up real-time keyboard-to-keyboard exchanges over low bandwidth links, Varicode is freely available.
Limitations
- Varicode provides somewhat weaker compression in languages other than English that use same characters as in English.
Varicode table
Control characters
{| class="wikitable" style="text-align: center"
|-
! Varicode !! Oct !! Dec !! Hex !! Abbr !! Description
|-
|1010101011 || 000 || 0 || 00 || NUL || Null character
|-
|1011011011 || 001 || 1 || 01 || SOH || Start of Header
|-
|1011101101 || 002 || 2 || 02 || STX || Start of Text
|-
|1101110111 || 003 || 3 || 03 || ETX || End of Text
|-
|1011101011 || 004 || 4 || 04 || EOT || End of Transmission
|-
|1101011111 || 005 || 5 || 05 || ENQ || Enquiry
|-
|1011101111 || 006 || 6 || 06 || ACK || Acknowledgment
|-
|1011111101 || 007 || 7 || 07 || BEL || Bell
|-
|1011111111 || 010 || 8 || 08 || BS || Backspace
|-
|11101111 || 011 || 9 || 09 || HT || Horizontal Tab
|-
|11101 || 012 || 10 || 0A || LF || Line feed
|-
|1101101111 || 013 || 11 || 0B || VT || Vertical Tab
|-
|1011011101 || 014 || 12 || 0C || FF || Form feed
|-
|11111 || 015 || 13 || 0D || CR || Carriage return
|-
|1101110101 || 016 || 14 || 0E || SO || Shift Out
|-
|1110101011 || 017 || 15 || 0F || SI || Shift In
|-
|1011110111 || 020 || 16 || 10 || DLE || Data Link Escape
|-
|1011110101 || 021 || 17 || 11 || DC1 || Device Control 1 (XON)
|-
|1110101101 || 022 || 18 || 12 || DC2 || Device Control 2
|-
|1110101111 || 023 || 19 || 13 || DC3 || Device Control 3 (XOFF)
|-
|1101011011 || 024 || 20 || 14 || DC4 || Device Control 4
|-
|1101101011 || 025 || 21 || 15 || NAK || Negative Acknowledgement
|-
|1101101101 || 026 || 22 || 16 || SYN || Synchronous Idle
|-
|1101010111 || 027 || 23 || 17 || ETB || End of Trans. Block
|-
|1101111011 || 030 || 24 || 18 || CAN || Cancel
|-
|1101111101 || 031 || 25 || 19 || EM || End of Medium
|-
|1110110111 || 032 || 26 || 1A || SUB || Substitute
|-
|1101010101 || 033 || 27 || 1B || ESC || Escape
|-
|1101011101 || 034 || 28 || 1C || FS || File Separator
|-
|1110111011 || 035 || 29 || 1D || GS || Group Separator
|-
|1011111011 || 036 || 30 || 1E || RS || Record Separator
|-
|1101111111 || 037 || 31 || 1F || US || Unit Separator
|-
|1110110101 || 177 || 127 || 7F || DEL || Delete
|}
Printable characters
{|
|- valign="top"
|
{| class="wikitable" style="text-align: center"
|-
!Varicode !! Oct !! Dec !! Hex !! Glyph
|-
|1 || 040 || 32 || 20 || SP
|-
|111111111 || 041 || 33 || 21 || !
|-
|101011111 || 042 || 34 || 22 || "
|-
|111110101 || 043 || 35 || 23 || #
|-
|111011011 || 044 || 36 || 24 || $
|-
|1011010101 || 045 || 37 || 25 || %
|-
|1010111011 || 046 || 38 || 26 || &
|-
|101111111 || 047 || 39 || 27 || '
|-
|11111011 || 050 || 40 || 28 || (
|-
|11110111 || 051 || 41 || 29 || )
|-
|101101111 || 052 || 42 || 2A || *
|-
|111011111 || 053 || 43 || 2B || +
|-
|1110101 || 054 || 44 || 2C || ,
|-
|110101 || 055 || 45 || 2D || -
|-
|1010111 || 056 || 46 || 2E || .
|-
|110101111 || 057 || 47 || 2F || /
|-
|10110111 || 060 || 48 || 30 || 0
|-
|10111101 || 061 || 49 || 31 || 1
|-
|11101101 || 062 || 50 || 32 || 2
|-
|11111111 || 063 || 51 || 33 || 3
|-
|101110111 || 064 || 52 || 34 || 4
|-
|101011011 || 065 || 53 || 35 || 5
|-
|101101011 || 066 || 54 || 36 || 6
|-
|110101101 || 067 || 55 || 37 || 7
|-
|110101011 || 070 || 56 || 38 || 8
|-
|110110111 || 071 || 57 || 39 || 9
|-
|11110101 || 072 || 58 || 3A || :
|-
|110111101 || 073 || 59 || 3B || ;
|-
|111101101 || 074 || 60 || 3C || <
|-
|1010101 || 075 || 61 || 3D || =
|-
|111010111 || 076 || 62 || 3E || >
|-
|1010101111 || 077 || 63 || 3F || ?
|}
|
|
{| class="wikitable" style="text-align: center"
|- valign="bottom"
!Varicode !! Oct !! Dec !! Hex !! Glyph
|-
|1010111101 || 100 || 64 || 40 || @
|-
|1111101 || 101 || 65 || 41 || A
|-
|11101011 || 102 || 66 || 42 || B
|-
|10101101 || 103 || 67 || 43 || C
|-
|10110101 || 104 || 68 || 44 || D
|-
|1110111 || 105 || 69 || 45 || E
|-
|11011011 || 106 || 70 || 46 || F
|-
|11111101 || 107 || 71 || 47 || G
|-
|101010101 || 110 || 72 || 48 || H
|-
|1111111 || 111 || 73 || 49 || I
|-
|111111101 || 112 || 74 || 4A || J
|-
|101111101 || 113 || 75 || 4B || K
|-
|11010111 || 114 || 76 || 4C || L
|-
|10111011 || 115 || 77 || 4D || M
|-
|11011101 || 116 || 78 || 4E || N
|-
|10101011 || 117 || 79 || 4F || O
|-
|11010101 || 120 || 80 || 50 || P
|-
|111011101 || 121 || 81 || 51 || Q
|-
|10101111 || 122 || 82 || 52 || R
|-
|1101111 || 123 || 83 || 53 || S
|-
|1101101 || 124 || 84 || 54 || T
|-
|101010111 || 125 || 85 || 55 || U
|-
|110110101 || 126 || 86 || 56 || V
|-
|101011101 || 127 || 87 || 57 || W
|-
|101110101 || 130 || 88 || 58 || X
|-
|101111011 || 131 || 89 || 59 || Y
|-
|1010101101 || 132 || 90 || 5A || Z
|-
|111110111 || 133 || 91 || 5B || <nowiki>[</nowiki>
|-
|111101111 || 134 || 92 || 5C || \
|-
|111111011 || 135 || 93 || 5D || [[Bracket|<nowiki>]</nowiki>]]
|-
|1010111111 || 136 || 94 || 5E || ^
|-
|101101101 || 137 || 95 || 5F || _
|}
|
|
{| class="wikitable" style="text-align: center"
|- valign="bottom"
!Varicode !! Oct !! Dec !! Hex !! Glyph
|-
|1011011111 || 140 || 96 || 60 || '
|-
|1011 || 141 || 97 || 61 || a
|-
|1011111 || 142 || 98 || 62 || b
|-
|101111 || 143 || 99 || 63 || c
|-
|101101 || 144 || 100 || 64 || d
|-
|11 || 145 || 101 || 65 || e
|-
|111101 || 146 || 102 || 66 || f
|-
|1011011 || 147 || 103 || 67 || g
|-
|101011 || 150 || 104 || 68 || h
|-
|1101 || 151 || 105 || 69 || i
|-
|111101011 || 152 || 106 || 6A || j
|-
|10111111 || 153 || 107 || 6B || k
|-
|11011 || 154 || 108 || 6C || l
|-
|111011 || 155 || 109 || 6D || m
|-
|1111 || 156 || 110 || 6E || n
|-
|111 || 157 || 111 || 6F || o
|-
|111111 || 160 || 112 || 70 || p
|-
|110111111 || 161 || 113 || 71 || q
|-
|10101 || 162 || 114 || 72 || r
|-
|10111 || 163 || 115 || 73 || s
|-
|101 || 164 || 116 || 74 || t
|-
|110111 || 165 || 117 || 75 || u
|-
|1111011 || 166 || 118 || 76 || v
|-
|1101011 || 167 || 119 || 77 || w
|-
|11011111 || 170 || 120 || 78 || x
|-
|1011101 || 171 || 121 || 79 || y
|-
|111010101 || 172 || 122 || 7A || z
|-
|1010110111 || 173 || 123 || 7B || {
|-
|110111011 || 174 || 124 || 7C || Vertical bar|
|-
|1010110101 || 175 || 125 || 7D || }
|-
|1011010111 || 176 || 126 || 7E || ~
|}
|}
Character lengths
Beginning with the single-bit code "1", valid varicode values may be formed by prefixing a "1" or "10" to a shorter code. Thus, the number of codes of length n is equal to the Fibonacci number F<sub>n</sub>. Varicode uses the 88 values of lengths up to 9 bits, and 40 of the 55 codes of length 10.
As transmitted, the codes are two bits longer due to the trailing delimiter 00.
{| class="wikitable"
|+ASCII characters by varicode length
! Bits || Codes || Characters
|-
| 1 || 1 || SP
|-
| 2 || 1 || e
|-
| 3 || 2 || o t
|-
| 4 || 3 || a i n
|-
| 5 || 5 || LF CR l r s
|-
| 6 || 8 || - c d f h m p u
|-
| 7 || 13 ||, . = A E I S T b g v w y
|-
| 8 || 21 || HT ( ) 0 1 2 3 : B C D F G L M N O P R k x
|-
| 9 || 34 || ! " # $ ' * + / 4 5 6 7 8 9 ; < > H J K Q U V W X Y [ \ ] _ j q z
|-
| 10 || 40 || NUL SOH STX ETX EOT ENQ ACK BEL BS VT FF SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EOM SUB ESC FS GS RS US % & ? @ Z ^ ` { } ~ DEL
|}
