이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 파일을 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

Base64 인코더 · 디코더 — URL, HTML 엔티티, 16진수, 이스케이프까지

Base64, 퍼센트 인코딩, HTML 엔티티, 16진수, 역슬래시 이스케이프를 양방향으로. 남의 서버에 붙여 넣는 것은 없습니다.

언어: 한국어
소스 보기
텍스트는 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

여기의 모든 인코딩은 문자열을 두고 하는 산술이고, 여기 이 페이지에서 이루어집니다. 코덱은 직접 손으로 쓴 것이고 src/encode.js에 있으며, 그 밖의 것은 없습니다. 이 도구에는 네트워크 기능이 하나도 없어서 가져올 것도 보낼 것도 없고, 그 사실이 거의 다른 어디보다 여기서 더 중요합니다. 사람들이 온라인 Base64 디코더에 붙여 넣는 것은 토큰이고, 토큰을 남의 웹사이트에 붙여 넣는 것은 그것을 건네주는 일이니까요.

실시간 확인: 확인 중…

오프라인: 확인 중…

그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 무언가를 디코딩해 보십시오. 붙여 넣은 것의 한 글자도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 디코딩해 보셔도 됩니다.

1 인코딩 고르기

어느 방향으로

2 붙여 넣기

비어 있음

3 결과 가져가기

아직 없습니다.

 

Markdown으로 보기

업로드하지 않고 Base64를 인코딩하거나 디코딩하는 방법

  1. 인코딩을 고릅니다. 두 알파벳의 Base64, 값 하나 또는 URL 전체를 위한 퍼센트 인코딩, HTML 엔티티 다섯 가지, 16진수 바이트, 그리고 문자열 리터럴의 역슬래시 이스케이프. 메뉴 아래의 설명이 각각의 쓰임새를 말해 줍니다.
  2. 방향을 고릅니다. 인코딩은 일반 텍스트를 받아 인코딩된 형태를 만들고, 디코딩은 인코딩된 형태를 일반 텍스트로 되돌립니다. 결과는 타이핑을 따라오니 방향을 바꾸는 것은 클릭 한 번이고, 다시 입력할 것은 없습니다.
  3. 붙여 넣거나, 파일을 놓습니다. 선택해서 복사할 수 있는 것이면 무엇이든 됩니다. 선택 영역에 놓인 파일은 브라우저가 읽어 상자에 넣습니다. 빼놓을 업로드 단계 자체가 없어요.
  4. 오류가 있으면 읽어 봅니다. 여기서 실패하는 디코더는 무엇을 만났는지 말합니다. Base64가 쓰지 않는 문자, 잘못된 자리의 패딩, 텍스트가 아닌 바이트. 그럴듯하지만 틀린 것을 돌려주는 대신에요.
  5. 결과를 가져갑니다. 복사하거나 텍스트 파일로 내려받으세요. 상자 아래 카운터가 몇 바이트가 들어가서 몇 바이트가 나왔는지 알려 줍니다.

자주 묻는 질문

제 텍스트가 어딘가로 업로드되나요?

아닙니다. 이 페이지의 모든 인코더와 디코더는 내 기기에서, 내 브라우저 안에서 도는 함수입니다. 이 도구에는 네트워크 기능이 하나도 없어서 무언가를 가져오지도, 보내지도 않습니다. 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 액세스 토큰이나 세션 쿠키에 이 도구를 써야 하는 이유가 그것입니다. 그런 것을 남의 디코더에 붙여 넣는 것은 그들에게 그것을 주는 일이니까요.

여기 Base64는 다른 데의 Base64와 같은 것인가요?

같습니다. 자기 자신이 아니라 RFC 4648의 테스트 벡터에 맞춰 확인하니까요. 두 알파벳 모두 디코딩되므로 -와 _로 쓴 JWT도 +와 /로 쓴 것만큼 잘 읽히고, 64자로 접힌 입력은 대신 펴 드립니다. 인코딩은 UTF-8 바이트 기준이라 악센트가 붙은 글자나 이모지도 왕복을 견딥니다.

Base64는 암호화인가요?

아니고, 그렇게 여기는 것이 고전적인 착각입니다. Base64는 표기법입니다. 같은 바이트를 URL과 이메일과 JSON 문자열에서 살아남는 알파벳으로 적은 것뿐이에요. 누구나 되읽을 수 있고 — 이 페이지는 1밀리초면 합니다 — 그러니 아무것도 숨기지 못하고 아무것도 지키지 못합니다. 가진 것이 비밀이라면 인코딩 전에 진짜 암호화가 필요합니다. 암호화 대신이 아니라요.

디코딩이 왜 실패했나요?

붙여 넣은 것이 코덱에 말해 준 그것과 정확히 같지 않아서이고, 오류가 어느 쪽이 문제인지 말해 줍니다. Base64 알파벳 밖의 문자, 잘못된 자리의 패딩, 뒤에 16진수 두 자리가 없는 퍼센트 기호, 또는 Base64에서는 풀리지만 UTF-8 텍스트가 아닌 바이트 — 마지막 경우는 대개 원본이 문자열이 아니라 파일이었다는 뜻입니다. 브라우저의 atob였다면 대신 그럴듯한 것을 돌려줬을 겁니다. 무엇이 문제인지 들을 수 있다는 것, 그게 디코더에 무언가를 붙여 넣는 이유의 전부입니다.

두 가지 웹 주소 인코딩은 뭐가 다른가요?

값 하나냐, 주소 전체냐입니다. 값 하나를 인코딩하면 URL이 의미를 두는 모든 것 — 슬래시, 물음표, 앰퍼샌드 — 이 이스케이프되는데, 쿼리 문자열의 매개변수 하나에 원하는 것이 바로 그것입니다. URL 전체를 인코딩하면 주소는 계속 동작합니다. 슬래시와 ?는 남고, URL이 아예 실을 수 없는 문자만 이스케이프됩니다. 앞의 것을 주소 전체에 쓰면 주소가 깨지고, 뒤의 것을 값에 쓰면 값이 어디서 끝나는지 잃어버립니다.

얼마나 큰 파일까지 다룰 수 있나요?

여기 정해 둔 제한은 없습니다. 그 값을 치를 서버가 없으니까요. 현실적인 한계는 기기 쪽입니다. 몇 메가바이트짜리 텍스트는 괜찮고, 아주 긴 문서라면 페이지가 키보드를 두고 다투는 대신 타이핑이 잠시 멎기를 기다렸다가 다시 인코딩합니다.

무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도 없으며 붙여 넣는 양에도 제한이 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 텍스트에 관한 것은 넘어가지 않습니다.

오프라인에서도 되나요?

됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 텍스트를 어딘가로 보내서 디코딩해 오는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.