바이너리 데이터를 아스키 코드의 일부와 1:1로 매칭되는 문자열로 단순 치환하는 인코딩 방식이다.
Base64는 원본 바이너리 데이터에 비해 용량이 약 30%정도 증가하는 단점이 있지만, 바이너리 데이터를 문자열 기반 데이터로 취급할 수 있어서 email이나 HTTP와 같은 텍스트 프로토콜 등에서 자주 사용된다.
인코딩된 문자열은 알파벳 대소문자와 숫자, 그리고 "+", "/" 기호 64개로 이루어지며, "="는 끝을 알리는 코드로 쓰인다.
Base64는 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다. (https://ko.wikipedia.org/wiki/베이스64)

2^6 = 64)씩 잘라 그 값을 읽은 다음, 아래의 정렬된 64개 문자 중에서 읽은 값 번째 문자를 고른다.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=, ==)비트 배열이 정확히 3바이트로 정확히 나누어 떨어지지 않으면 3바이트로 나누어 떨어질 때까지 '0'비트를 추가하고 추가된 바이트 수 만큼 패딩(=)을 붙인다. 즉, 1바이트가 부족하면 '=' 를, 2바이트가 부족할 경우 '=='를 추가한다.
패딩 문자가 반드시 필요하지는 않다. 데이터 길이가 명시적인 상황에서는 추가된 패딩에 대한 정보를 알수 있다. 하지만 TCP와 같이 스트림 형태로 데이터를 주고 받는 상황에서는 데이터이 없을 경우, 어디까지가 끝인지 알수 없기 때문에, 구분을 위해 필요하다.
URL 문자 중 + 와 /, = 는 특수목적으로 사용된다. 그래서 Base64에 있는 다음의 문자를 치환하여 사용한다.
+ → -/ → _= → .https://en.wikipedia.org/wiki/Base62