JWT (JSON Web Token) 디코더
복잡하게 암호화된 것처럼 보이는 JWT 토큰을 붙여넣어, 숨겨진 Header와 Payload 데이터를 즉시 해독하고 만료 시간을 확인해 보세요.
인코딩된 JWT 토큰 입력 (Encoded Token)
해독된 데이터 (Decoded Data)
💡 함께 많이 쓰는 추천 도구
JWT(JSON Web Token)란 무엇이고 왜 쓸까요?
안녕하세요 개발자 여러분! 프론트엔드나 백엔드 개발을 하면서 회원가입 및 로그인(인증/인가) 시스템을 구현해 보셨다면, 무조건 한 번쯤은 마주치게 되는 단어가 있습니다. 바로 JWT(JSON Web Token)입니다. "토큰이 만료되었습니다" 혹은 "유효하지 않은 토큰입니다" 같은 끔찍한 401 에러를 잡기 위해 오늘도 많은 개발자들이 터미널 창과 싸우고 있죠.

과거에는 로그인한 유저를 기억하기 위해 서버의 메모리(Session)에 유저 정보를 저장해 두었습니다. 하지만 사용자가 수만 명으로 늘어나면 서버의 메모리가 꽉 차서 터져버리는 문제가 발생했습니다. 그래서 등장한 혁신적인 아이디어가 바로 JWT입니다. "서버에 저장하지 말고, 유저의 정보를 일종의 '방문증(Token)'으로 만들어서 유저 브라우저(쿠키나 로컬스토리지)에 쥐어주자!"는 것이 핵심입니다. 유저가 이 방문증을 제시하기만 하면, 서버는 방문증에 찍힌 도장(서명)만 확인하고 문을 열어주는 효율적인 방식입니다.
JWT는 어떻게 생겼을까? (3단 콤보 구조 해부)
여러분이 발급받은 JWT를 자세히 살펴보면, 알파벳과 숫자가 무작위로 섞여 있지만 그 안에 두 개의 점(.)이 있다는 것을 알 수 있습니다. 이 점을 기준으로 JWT는 세 가지 파트로 나뉩니다.
- 1. Header (머리): 토큰의 타입(JWT)과 마지막 세 번째 파트인 서명을 만들 때 어떤 암호화 알고리즘(예: HS256, RS256)을 사용했는지에 대한 메타 정보가 담겨 있습니다.
- 2. Payload (몸통): 개발자가 실제로 서버와 주고받고 싶은 핵심 데이터(Claim)가 들어가는 곳입니다. 유저의 고유 ID, 유저 닉네임, 그리고 가장 중요한 토큰 발급 시간(iat)과 만료 시간(exp)이 들어갑니다.
- 3. Signature (서명): 이 방문증이 위조되지 않았다는 것을 증명하는 서버의 '비밀 도장'입니다. 1번과 2번의 데이터를 합친 뒤, 서버만 알고 있는 시크릿 키(Secret Key)를 더해 해시(Hash) 함수로 암호화한 결과물입니다. 해커가 몸통(Payload)의 글자를 하나라도 조작하면 이 서명 값과 불일치하게 되어 서버가 가짜 토큰임을 즉시 알아차립니다.

🚨 주니어 개발자가 가장 많이 하는 최악의 실수: "비밀번호 넣기"
"JWT는 암호화되어 있으니까 안전하겠지?"
절대 아닙니다! 이것은 정말 치명적인 착각입니다. JWT의 1번(Header)과 2번(Payload) 파트는 누군가가 복호화할 수 없도록 강력하게 암호화(Encryption)된 것이 아닙니다. 단순히 Base64Url 방식으로 '인코딩(Encoding)'된 것뿐입니다.
저희가 제공하는 이 JWT 디코더에 토큰을 붙여넣기만 해도, 그 안에 숨겨진 유저 ID와 데이터가 누구나 볼 수 있는 평문(JSON)으로 1초 만에 홀라당 풀려버립니다. 따라서 Payload 안에는 유저의 비밀번호, 주민등록번호, 계좌번호 같은 민감한 개인정보를 절대로, 네버, 에버 넣으시면 안 됩니다! 오직 데이터베이스에서 유저를 식별할 수 있는 고유 번호(User ID 등)와 권한 등급 정도만 넣어야 합니다.
🕒 토큰 만료 시간(exp) 변환의 마법
토큰을 발급받아 프론트엔드에서 개발을 하다 보면, 이 토큰이 도대체 언제 만료되는지 테스트해야 할 때가 많습니다. 하지만 Payload에 들어있는 exp 값은 1712345678 같은 유닉스 타임스탬프(Unix Timestamp)로 되어 있어서 사람의 눈으로는 언제인지 계산할 수가 없습니다. 저희 디코더는 사용자가 토큰을 붙여넣는 즉시 이 숫자를 계산하여, "2026년 10월 25일 오후 3시 만료"처럼 사람이 읽기 쉬운 로컬 시간으로 자동 변환해 주며, 현재 시간 기준으로 이미 만료되었는지 여부까지 빨간색 경고로 직관적으로 알려줍니다.