Three bytes in, four characters out
Base64 works on groups of three bytes. Twenty-four bits divide evenly into four six-bit chunks, and each chunk indexes into a 64-character alphabet - `A-Z`, `a-z`, `0-9`, `+` and `/`. So every three bytes of input become exactly four characters of output, which is where the predictable 33% size increase comes from.
When the input length is not a multiple of three, the final group is short and gets padded. One leftover byte produces two characters plus `==`; two leftover bytes produce three characters plus `=`. That is why the `=` signs only ever appear at the end, and why their count tells you the original length modulo three.
Because six bits map to one of 64 printable ASCII characters, the output survives any channel that handles text. That is the entire purpose: Base64 exists so binary data can pass through systems that were only ever designed for text.