Ktoolio

개발자 유틸 도구 모음

개발에 자주 쓰이는 데이터 변환 작업을 쉽고 빠르게 처리하세요.UUID, Base64/URL 인코딩·디코딩, JSON 포맷터, SHA-256 해시, 랜덤 비밀번호·토큰, 타임스탬프, JWT 디코더, OG 미리보기까지 한 곳에서 제공합니다.입력한 데이터는 서버로 전송되지 않고 사용자의 브라우저 안에서만 처리됩니다.

개발자 도구

데이터 변환

Base64, URL, JSON 등 데이터 포맷을 변환할 때 사용하는 도구들입니다.

Base64 변환기 (Base64 Encoder / Decoder)

결과가 여기에 표시됩니다. (Result will appear here)

주요 기능 상세 가이드

UUID v4 생성기란?

UUID(Universally Unique Identifier)는 전역적으로 충돌 가능성이 매우 낮은 128비트 식별자입니다. 데이터베이스 기본 키, 세션 ID, 트랜잭션 ID처럼 "겹치면 안 되는 값"을 만들 때 자주 사용됩니다.

  • 형식: 8-4-4-4-12 자리 16진수 문자열
  • 용도: DB 키, 세션 토큰, 추적 ID 등
  • 클라이언트에서 생성 가능해 서버 부하를 줄일 수 있음

Base64 인코딩/디코딩

바이너리 데이터(이미지, 파일 등)를 텍스트 형태로 전송하기 위해 사용하는 인코딩 방식입니다. 이 도구는 UTF-8 한글 깨짐을 방지하도록 구현되어 있어 한글/이모지도 안전하게 변환할 수 있습니다.

  • 이미지를 Data URI 형태로 HTML/CSS에 직접 삽입할 때 유용
  • 토큰·설정 값 등 텍스트 기반 프로토콜에 이진 데이터 담을 때 사용

URL 인코더 (Percent Encoding)

URL에는 공백, 한글, 일부 특수문자를 그대로 쓸 수 없습니다. 이 도구는 이를 %ED%95%9C%EA%B8%80과 같은 퍼센트 인코딩 형태로 바꿔 주거나, 그 반대로 복원해 줍니다. 검색 파라미터, 공유 링크를 만들 때 필수적인 작업입니다.

  • GET 쿼리스트링 구성, 리다이렉트 URL 생성 시 활용
  • 로그에 찍힌 인코딩 문자열을 사람이 읽을 수 있게 디코딩

SHA-256 해시 함수

입력 문자열을 256비트 고정 길이의 해시 값으로 변환하는 단방향 함수입니다. 원본을 다시 되돌릴 수 없기 때문에 비밀번호 원문을 저장하지 않고, 해시 값만 저장하는 패턴 등에 사용됩니다.

  • API 응답/파일이 전송 중 변경되지 않았는지 무결성 체크용으로 활용
  • 실제 서비스 비밀번호 저장 시에는 bcrypt/argon2 등의 KDF 권장

랜덤 비밀번호 생성기

길이와 문자 종류(대문자, 소문자, 숫자, 특수문자)를 조합해예측하기 어려운 임의의 문자열을 만들어 줍니다. 테스트 계정, 임시 접속용 토큰, 샘플 데이터용 패스워드 등에 활용하기 좋습니다.

  • 각 문자 유형이 최소 1개 이상 포함되도록 내부에서 보정
  • 브라우저 Web Crypto를 사용해 단순 Math.random()보다 안전한 난수

JSON 포맷터 · 미니파이어

API 응답이나 설정 파일을 붙여넣으면 자동으로 예쁘게 정렬(Pretty)하거나 공백을 제거해 압축(Minify)해 줍니다. 동시에 JSON 파싱 에러도 함께 알려 주기 때문에 디버깅에 유용합니다.

  • 쉼표, 따옴표, 중괄호 짝 오류를 빠르게 찾는 데 도움
  • 프론트/백엔드 API 연동 시 응답 구조 확인용으로 활용

텍스트 포맷 · 케이스 변환기

공백 정리, 대·소문자 변환, snake_case, kebab-case 등 문자열 포맷을 한 번에 바꿔 줍니다. 변수명 정리나 로그 메시지 포맷 통일에 활용할 수 있습니다.

  • camelCase, 스네이크, 케밥, 공백 섞인 문자열을 자동 분리 후 재조합
  • 글자 수, 줄 수, 단어 수 등 간단 통계도 함께 제공

Slug / URL 제목 변환기

블로그 글 제목, 상품명을 붙여넣으면 URL에 쓰기 좋은 슬러그(slug)로 변환해 줍니다. 공백과 특수문자를 정리하고, 소문자 + 하이픈/언더스코어 조합으로 SEO 친화적인 주소를 만들 수 있습니다.

  • kebab-case(-) / snake_case(_) 중 원하는 구분자 선택 가능
  • 옵션으로 한글 제거(ASCII only)도 지원해 영문 전용 URL 생성 가능

타임스탬프 ↔ 날짜 변환기

Unix 타임스탬프(초/밀리초)를 사람이 읽을 수 있는 날짜/시간으로 변환하거나, 그 반대로 datetime-local 값을 타임스탬프로 바꿀 수 있습니다. 로그 분석, 만료 시간 계산 등에 매우 자주 쓰이는 패턴입니다.

  • 로컬 시간, UTC 시간, ISO 문자열을 한 번에 확인 가능
  • 프론트/백엔드 간 시차(타임존) 문제를 디버깅할 때 유용

랜덤 토큰 · API 키 생성기

Web Crypto 기반 난수를 사용해 예측하기 어려운 토큰 문자열을 만들어 주는 도구입니다. 16~256바이트 길이의 랜덤 바이트를 생성한 뒤, HEX 또는 Base64URL 형식으로 변환해 API 키, Webhook 시크릿, 세션 토큰 등으로 활용할 수 있습니다.

  • HEX: 로그·환경변수에 넣기 좋은 16진수 문자열
  • Base64URL: JWT, OAuth, OpenID Connect 등에서 자주 쓰이는 토큰 포맷
  • 서버가 아닌 브라우저에서 생성되기 때문에 테스트용 시크릿 만들 때 편리

JWT 디코더 (Header / Payload 확인)

JSON Web Token(JWT) 문자열을 점(.) 기준으로 나누어 header와 payload 부분을 Base64URL 디코딩한 뒤, 사람이 읽을 수 있는 JSON 형태로 보여 줍니다. 이 도구는 서명 검증 없이 내용만 확인하는 용도이며, 만료 시간(exp)을 로컬 시간·UTC 기준으로 함께 표시해 줍니다.

  • 로그인 토큰에 담긴 클레임(sub, aud, scope 등) 구조 빠르게 확인
  • exp(만료 시각)를 바로 읽기 좋은 날짜/시간 포맷으로 변환
  • 서명 유효성, 위변조 여부는 따로 서버/라이브러리에서 검증해야 함

텍스트 → JSON 변환기

일반 텍스트를 JSON에서 바로 사용할 수 있는 형태로 바꿔 주는 도구입니다. 한 덩어리 문자열, 줄 배열, key:value 객체 세 가지 모드를 지원해 로그, 설정 스니펫, 메모 등을 빠르게 구조화할 수 있습니다.

  • 문자열 1개: 멀티라인 설명·메모를 하나의 JSON 문자열로 만들 때 사용
  • 줄 배열: 한 줄당 하나의 요소가 되는 문자열 배열로 변환 (목록·태그·권한 리스트 등에 적합)
  • key:value 객체: name: nado-lotto, retry=3처럼key:value / key=value 형식을 객체로 변환하며 숫자, true/false, null은 자동으로 타입을 맞춰 줍니다.

Open Graph 링크 미리보기

페이지의 <head> 영역이나 meta property="og:*" 태그들을 붙여넣으면,카카오톡·디스코드·슬랙 등에 공유될 때 노출되는 링크 카드 형태를 브라우저 안에서 바로 확인할 수 있습니다. 외부 URL을 직접 요청하지 않고, 여러분이 붙여넣은 HTML/메타 정보만을 파싱해서 동작합니다.

  • og:title, og:description, og:image, og:url, og:site_name 등을 자동 추출
  • 별도의 서버 없이, 클라이언트에서만 메타 태그 구조와 카드 레이아웃을 점검할 때 유용
  • SEO/OG 작업 후 실제 공유 미리보기가 어떻게 나올지 빠르게 시뮬레이션 가능

데이터는 서버로 전송되지 않습니다.

이 페이지의 모든 변환 및 생성 작업은 여러분의 브라우저 내부(Client-side)에서만 처리됩니다. 입력한 민감한 정보나 비밀번호는 서버에 저장되거나 전송되지 않으므로 안심하고 사용하셔도 됩니다.
운영 환경의 실제 비밀번호·액세스 토큰·JWT 등은 가능하면 테스트용 데이터로만 확인하는 것을 권장합니다.

원상복구 가능 여부 한눈에 보기

개발하다 보면 변환, 암호화, 해시를 머릿속에서 섞어서 생각하는 순간이 있습니다. 이 표는 지금 이 페이지 도구들이 어떤 성격인지, 결과 값을 다시 원문으로 되돌릴 수 있는지 기준으로 빠르게 구분하도록 만든 체크표입니다.

분류대표 도구원상복구키 필요실무에서 자주 하는 실수
인코딩Base64, URL가능불필요인코딩 결과를 보안 처리로 착각하고 민감값을 그대로 공유함
해시SHA-256불가불필요비밀번호 저장에 단순 SHA-256을 쓰면 안전하다고 오해함
난수 생성랜덤 비밀번호, 랜덤 토큰, UUID해당 없음불필요길이만 길면 안전하다고 생각하거나, 반대로 사람이 외우기 쉬운 패턴을 넣어 안전을 깎음
내용 확인JWT 디코더일부만 확인검증은 별도디코딩만 했는데 토큰이 안전하다고 판단하거나, 서명이 유효하다고 착각함
실무 팁 Base64나 URL 인코딩은 보안이 아니라 운송 규격입니다. 해시는 되돌릴 수 없지만, 빠르기 때문에 비밀번호 저장에는 추가 방어가 필요합니다. JWT는 분해해서 읽을 수 있어도 신뢰는 검증이 끝나야 생깁니다.

왜 비밀번호는 복잡하고 어려울수록 좋은가요

비밀번호 보안은 감정이 아니라 계산입니다. 공격자는 정답을 맞히는 사람이 아니라, 가능한 후보를 자동으로 찍는 프로그램에 가깝습니다. 즉, 공격을 막는 핵심은 규칙을 숨기는 게 아니라 후보의 수를 폭발시키는 것입니다.

길이는 후보 수를 기하급수로 늘립니다

문자 집합이 60개쯤 되는 환경에서 길이가 8에서 12로 늘어나면 후보 수는 4자만큼 곱해집니다. 사람 입장에서는 4글자 차이지만, 기계 입장에서는 체감이 전혀 다릅니다.

패턴은 후보를 줄입니다

사람이 좋아하는 규칙은 공격자도 좋아합니다. 키보드 인접, 반복, 날짜, 단어 조합 같은 패턴은 후보 공간을 좁혀서 공격을 쉽게 합니다. 복잡함은 보기 좋음이 아니라 예측 불가능함입니다.

서버 저장은 해시 단독으로 끝나지 않습니다

공격자가 유출된 해시를 손에 넣으면, 오프라인에서 무수히 많이 대입할 수 있습니다. 그래서 비밀번호 저장은 느린 방식이 필요하고, 그 역할이 KDF입니다. 이 페이지의 SHA-256은 무결성 확인에 강하고, 비밀번호 저장의 정답은 아닙니다.

재미있는 관점 한 번에 떠올리기 비밀번호는 자물쇠 비밀번호가 아니라, 공격자가 들어야 하는 문을 몇 개나 늘리느냐의 문제입니다. 길이는 문을 통째로 증식시키고, 패턴은 문을 안내 표지판으로 바꿉니다. 이 페이지의 랜덤 비밀번호는 사람이 만들기 쉬운 패턴 대신, 브라우저 난수로 후보 공간을 넓히는 쪽을 택합니다.

자주 묻는 질문

운영 환경의 실제 토큰이나 비밀번호를 붙여넣어도 되나요
기술적으로는 브라우저에서만 처리되지만, 습관의 문제가 더 큽니다. 실제 운영 시크릿은 입력하지 않는 것을 규칙으로 정해두면, 실수 확률이 급격히 줄어듭니다. 테스트용 값, 마스킹된 값, 또는 만료된 값으로 확인하는 방식이 안전합니다.
Base64를 디코딩했는데 글자가 깨져요
보통 두 가지입니다. 첫째, 원본이 UTF-8 텍스트가 아니라 바이너리였는데 텍스트처럼 읽으려고 해서입니다. 둘째, Base64가 아니라 Base64URL이거나, 중간에 공백이 섞여 입력이 변형된 경우입니다. 이 페이지는 멀티바이트 텍스트를 안전하게 처리하도록 구성되어 있으니, 그래도 깨지면 원본 데이터 성격부터 확인하는 것이 빠릅니다.
타임스탬프 변환 결과가 수십 년씩 튀어요
초 단위와 밀리초 단위를 섞었을 가능성이 큽니다. 로그 값이 13자리인데 초로 해석하면 날짜가 크게 어긋납니다. 이 도구는 초와 밀리초를 분리해 변환하므로, 먼저 자릿수와 단위를 맞춘 뒤 변환하세요.
JWT 디코더가 내용을 보여주면 그 토큰은 안전한 건가요
반대에 가깝습니다. JWT는 구조상 header와 payload가 사람이 읽을 수 있게 설계된 경우가 많습니다. 안전성은 내용을 숨기는 게 아니라 서명이 검증되는지, 만료가 유효한지, 발급자가 신뢰 가능한지에서 결정됩니다. 이 도구는 내용 확인용이며, 신뢰 판단은 서버 검증이 필요합니다.
SHA-256 해시로 비밀번호를 저장하면 충분한가요
충분하지 않은 경우가 많습니다. SHA-256은 빠른 해시라 무결성 확인에는 훌륭하지만, 비밀번호 저장에서는 공격자도 같은 속도로 대입할 수 있습니다. 그래서 반복과 솔트가 기본으로 포함된 KDF 방식이 더 적합합니다. 이 페이지의 해시 도구는 체크섬과 무결성 확인 용도로 생각하면 정확합니다.
OG 미리보기는 왜 URL을 직접 가져오지 않나요
이 도구의 목적은 네트워크 상태에 따라 흔들리는 결과가 아니라, 내가 만든 head 태그 구조가 맞는지 즉시 확인하는 것입니다. 그래서 외부 요청 대신, 붙여넣은 메타 태그를 파싱해 카드 구조를 빠르게 점검하도록 구성했습니다.