작업 흐름 간소화: miniwebtool 검색.
추가
관련 도구
CSS 정리 도구CSS 박스 그림자 생성기Googlebot 크롤링 크기 검사기HTML을 Markdown으로 변환기이미지 Base64 변환기JavaScript 축소/정리 도구🔍 표절 검사기SQL 포맷터XML에서 JSON 변환기YAML 포맷터/검증기
홈페이지 > 텍스트 관련 도구 > 텍스트 수정 도구 > HTML 뷰티파이어
 

HTML 뷰티파이어

무료 온라인 HTML 뷰티파이어 및 포맷터입니다. 축소되거나 지저분한 HTML을 적절한 들여쓰기, 태그 정렬, 속성 정리와 함께 즉시 포맷합니다. 클라이언트 측 처리 방식으로 코드가 브라우저를 벗어나지 않습니다.

HTML 뷰티파이어
🔒 100% 클라이언트 측 처리 — 코드는 브라우저를 벗어나지 않습니다
빠른 예제
⚡ 축소된 HTML 🔀 엉망인 들여쓰기 📐 시맨틱 레이아웃 📝 폼 요소
입력 HTML
출력
들여쓰기:
⚠ 태그 경고
    0
    총 태그 수
    0
    고유 요소
    0
    최대 깊이
    0
    속성 수
    0
    입력 (바이트)
    0
    출력 (바이트)
    ⟨/⟩ 태그 분석
    크기 변화
    0%
    ', messy: '\n\n\n 블로그 포스트\n \n\n \n
    \n
    \n

    Flexbox 이해하기

    \n
    \n 홍길동\n \n
    \n

    Flexbox는 유연하고 반응형인 레이아웃 구조를 쉽게 디자인할 수 있게 해주는 강력한 CSS 레이아웃 모듈입니다.

    \n

    주요 개념

    \n
      \n
    • Flex 컨테이너
    • \n
    • Flex 아이템
    • \n
    • 주축(Main Axis) vs 교차축(Cross Axis)
    • \n
    • Flex Wrap
    • \n
    \n
    \n

    Flexbox는 CSS 레이아웃에 대한 우리의 생각을 영원히 바꿔놓았습니다.

    \n
    \n

    2차원 레이아웃에 대해서는 CSS Grid를 더 읽어보세요.

    \n
    \n
    \n \n', semantic: '\n\n\n \n \n 시맨틱 HTML5 레이아웃\n\n\n
    \n \n
    \n
    \n
    \n
    \n

    문서 제목

    \n

    게시일:

    \n
    \n
    \n

    서론

    \n

    이 문서는 접근성과 SEO를 개선하는 시맨틱 HTML5 요소를 보여줍니다.

    \n
    \n HTML5 시맨틱 요소 다이어그램\n
    시맨틱 요소는 문서 구조에 의미를 부여합니다.
    \n
    \n
    \n \n \n
    \n
    \n
    \n

    © 2026 내 사이트. 시맨틱 HTML로 제작되었습니다.

    \n
    \n\n', form: '회원가입 양식
    개인 정보
    환경 설정
    ' }; function hbLoadExample(key) { document.getElementById('htmlInput').value = HB_EXAMPLES[key]; document.getElementById('htmlOutput').value = ''; hbHideStats(); } /* ── Utility Functions ───────────────────── */ function hbClearInput() { document.getElementById('htmlInput').value = ''; document.getElementById('htmlOutput').value = ''; hbHideStats(); } function hbPasteFromClipboard() { navigator.clipboard.readText().then(function(text) { document.getElementById('htmlInput').value = text; }).catch(function() {}); } function hbCopyOutput() { var text = document.getElementById('htmlOutput').value; if (!text) return; var btn = document.getElementById('hbCopyBtn'); navigator.clipboard.writeText(text).then(function() { btn.classList.add('copied'); btn.textContent = '✓ 복사됨'; setTimeout(function() { btn.classList.remove('copied'); btn.textContent = '\u29C9 복사'; }, 1500); }).catch(function() {}); } function hbDownloadOutput() { var code = document.getElementById('htmlOutput').value; if (!code) return; var blob = new Blob([code], { type: 'text/html' }); var a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'beautified.html'; a.click(); URL.revokeObjectURL(a.href); } function hbHideStats() { document.getElementById('hbStatsRibbon').classList.remove('visible'); document.getElementById('hbTagBreakdown').classList.remove('visible'); document.getElementById('hbDiffBar').classList.remove('visible'); document.getElementById('hbWarnings').classList.remove('visible'); } /* ── HTML Element Classifications ─────────── */ var VOID_ELEMENTS = ['area','base','br','col','embed','hr','img','input','link','meta','param','source','track','wbr']; var INLINE_ELEMENTS = ['a','abbr','acronym','b','bdo','big','br','button','cite','code','dfn','em','i','img','input','kbd','label','map','object','output','q','samp','select','small','span','strong','sub','sup','textarea','time','tt','u','var']; var RAW_TEXT_ELEMENTS = ['script','style']; var PRESERVE_ELEMENTS = ['pre','code','textarea','script','style']; /* ── HTML Beautifier Engine ──────────────── */ function hbTokenize(html) { var tokens = []; var i = 0; var len = html.length; while (i < len) { // Comment if (html.substr(i, 4) === '', i + 4); if (end === -1) end = len - 3; tokens.push({ type: 'comment', value: html.substring(i, end + 3) }); i = end + 3; } // DOCTYPE else if (html.substr(i, 9).toUpperCase() === '', i); if (end === -1) end = len - 1; tokens.push({ type: 'doctype', value: html.substring(i, end + 1) }); i = end + 1; } // CDATA else if (html.substr(i, 9) === '', i + 9); if (end === -1) end = len - 3; tokens.push({ type: 'cdata', value: html.substring(i, end + 3) }); i = end + 3; } // Closing tag else if (html.substr(i, 2) === '', i); if (end === -1) end = len - 1; var tag = html.substring(i + 2, end).trim().toLowerCase(); tokens.push({ type: 'close', tag: tag, value: html.substring(i, end + 1) }); i = end + 1; } // Opening tag else if (html[i] === '<' && i + 1 < len && /[a-zA-Z]/.test(html[i + 1])) { var end = i + 1; var inQuote = false; var quoteChar = ''; while (end < len) { var ch = html[end]; if (inQuote) { if (ch === quoteChar) inQuote = false; } else { if (ch === '"' || ch === "'") { inQuote = true; quoteChar = ch; } else if (ch === '>') break; } end++; } if (end >= len) end = len - 1; var tagContent = html.substring(i + 1, end); var selfClosing = tagContent.charAt(tagContent.length - 1) === '/'; if (selfClosing) tagContent = tagContent.substring(0, tagContent.length - 1); // Parse tag name and attributes var spaceIdx = tagContent.search(/[\s\/]/); var tagName, attrStr; if (spaceIdx === -1) { tagName = tagContent.trim(); attrStr = ''; } else { tagName = tagContent.substring(0, spaceIdx).trim(); attrStr = tagContent.substring(spaceIdx).trim(); } tagName = tagName.toLowerCase(); var isVoid = VOID_ELEMENTS.indexOf(tagName) !== -1; // Parse attributes var attrs = hbParseAttributes(attrStr); tokens.push({ type: 'open', tag: tagName, attrs: attrs, selfClosing: selfClosing || isVoid, isVoid: isVoid, raw: html.substring(i, end + 1) }); i = end + 1; // Handle raw text elements (script, style) if (RAW_TEXT_ELEMENTS.indexOf(tagName) !== -1 && !selfClosing && !isVoid) { var closeTag = ''); return parts.join(''); } function hbBeautifyCode(html, opts) { var indent = opts.indent || ' '; var sortAttrs = opts.sortAttrs || false; var removeComments = opts.removeComments || false; var preserveInline = opts.preserveInline !== false; var tokens = hbTokenize(html); var output = []; var level = 0; var preserveStack = 0; function addIndent(d) { var r = ''; for (var j = 0; j < d; j++) r += indent; return r; } function isInline(tagName) { return preserveInline && INLINE_ELEMENTS.indexOf(tagName) !== -1; } function isPreserve(tagName) { return PRESERVE_ELEMENTS.indexOf(tagName) !== -1; } for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (token.type === 'comment') { if (!removeComments) { if (preserveStack > 0) { output.push(token.value); } else { output.push(addIndent(level) + token.value); } } } else if (token.type === 'doctype') { output.push(token.value); } else if (token.type === 'cdata') { output.push(addIndent(level) + token.value); } else if (token.type === 'open') { var tag = hbBuildTag(token.tag, token.attrs, token.selfClosing, sortAttrs); if (preserveStack > 0) { output.push(tag); if (isPreserve(token.tag) && !token.selfClosing) preserveStack++; } else if (isInline(token.tag)) { // Check if previous output ends with text on the same line if (output.length > 0) { var last = output[output.length - 1]; // If last line has text content, append inline tag to same line var lastNewline = last.lastIndexOf('\n'); var lastLine = lastNewline === -1 ? last : last.substring(lastNewline + 1); if (lastLine.trim() && !lastLine.trim().match(/^<\/(div|section|article|main|header|footer|nav|aside|ul|ol|li|table|tr|td|th|thead|tbody|tfoot|form|fieldset|dl|dt|dd|details|summary|figure|figcaption|blockquote|p|h[1-6]|pre|hr)>/i)) { output[output.length - 1] = last + tag; } else { output.push(addIndent(level) + tag); } } else { output.push(addIndent(level) + tag); } if (!token.selfClosing) { // Don't increase indent for inline elements } } else { output.push(addIndent(level) + tag); if (!token.selfClosing) { if (isPreserve(token.tag)) preserveStack++; level++; } } } else if (token.type === 'close') { if (preserveStack > 0) { if (isPreserve(token.tag)) preserveStack--; output.push(''); } else if (isInline(token.tag)) { // Append closing inline tag to previous line if (output.length > 0) { output[output.length - 1] = output[output.length - 1] + ''; } else { output.push(''); } } else { level--; if (level < 0) level = 0; output.push(addIndent(level) + ''); } } else if (token.type === 'text') { if (preserveStack > 0 || token.preserve) { output.push(token.value); } else { var text = token.value; // Collapse whitespace for non-preserve context var trimmed = text.replace(/\s+/g, ' ').trim(); if (trimmed) { // Check if adjacent to inline elements var prevToken = i > 0 ? tokens[i - 1] : null; var nextToken = i < tokens.length - 1 ? tokens[i + 1] : null; var prevIsInline = prevToken && ((prevToken.type === 'open' && isInline(prevToken.tag)) || (prevToken.type === 'close' && isInline(prevToken.tag))); var nextIsInline = nextToken && ((nextToken.type === 'open' && isInline(nextToken.tag)) || (nextToken.type === 'close' && isInline(nextToken.tag))); if (prevIsInline || nextIsInline) { // Append to previous line for inline continuity if (output.length > 0) { output[output.length - 1] = output[output.length - 1] + trimmed; } else { output.push(trimmed); } } else { output.push(addIndent(level) + trimmed); } } } } } var result = output.join('\n'); // Clean up multiple blank lines result = result.replace(/\n{3,}/g, '\n\n'); return result.trim(); } function hbMinifyCode(html) { // Remove comments html = html.replace(//g, ''); // Collapse whitespace between tags html = html.replace(/>\s+<'); // Collapse internal whitespace html = html.replace(/\s+/g, ' '); // Trim return html.trim(); } /* ── Stats Calculation ───────────────────── */ function hbGetStats(html) { var stats = { totalTags: 0, uniqueTags: {}, maxDepth: 0, attrCount: 0, warnings: [], tagTypes: { block: {}, inline: {}, void_el: {}, semantic: {} } }; var SEMANTIC = ['article','aside','details','figcaption','figure','footer','header','main','mark','nav','section','summary','time']; var BLOCK = ['div','p','h1','h2','h3','h4','h5','h6','ul','ol','li','table','tr','td','th','thead','tbody','tfoot','form','fieldset','legend','blockquote','pre','dl','dt','dd','hr']; var tokens = hbTokenize(html); var stack = []; var depth = 0; for (var i = 0; i < tokens.length; i++) { var t = tokens[i]; if (t.type === 'open') { stats.totalTags++; stats.uniqueTags[t.tag] = (stats.uniqueTags[t.tag] || 0) + 1; if (t.attrs) stats.attrCount += t.attrs.length; // Classify tag if (SEMANTIC.indexOf(t.tag) !== -1) { stats.tagTypes.semantic[t.tag] = (stats.tagTypes.semantic[t.tag] || 0) + 1; } else if (VOID_ELEMENTS.indexOf(t.tag) !== -1) { stats.tagTypes.void_el[t.tag] = (stats.tagTypes.void_el[t.tag] || 0) + 1; } else if (INLINE_ELEMENTS.indexOf(t.tag) !== -1) { stats.tagTypes.inline[t.tag] = (stats.tagTypes.inline[t.tag] || 0) + 1; } else if (BLOCK.indexOf(t.tag) !== -1 || t.tag === 'html' || t.tag === 'head' || t.tag === 'body') { stats.tagTypes.block[t.tag] = (stats.tagTypes.block[t.tag] || 0) + 1; } else { stats.tagTypes.block[t.tag] = (stats.tagTypes.block[t.tag] || 0) + 1; } if (!t.selfClosing) { stack.push(t.tag); depth = stack.length; if (depth > stats.maxDepth) stats.maxDepth = depth; } } else if (t.type === 'close') { stats.totalTags++; // Find matching open tag var found = false; for (var j = stack.length - 1; j >= 0; j--) { if (stack[j] === t.tag) { // Warn about any unclosed tags above this for (var k = stack.length - 1; k > j; k--) { stats.warnings.push('<' + stack[k] + '> 태그가 닫히지 않았습니다'); } stack.splice(j); found = true; break; } } if (!found) { stats.warnings.push('예상치 못한 닫는 태그: '); } } } // Any remaining tags on stack are unclosed for (var s = 0; s < stack.length; s++) { stats.warnings.push('<' + stack[s] + '> 태그가 닫히지 않았습니다'); } return stats; } /* ── Display Functions ───────────────────── */ function hbShowStats(inputHtml, outputHtml) { var stats = hbGetStats(inputHtml); var inputSize = new Blob([inputHtml]).size; var outputSize = new Blob([outputHtml]).size; document.getElementById('hbStatTags').textContent = stats.totalTags; document.getElementById('hbStatUnique').textContent = Object.keys(stats.uniqueTags).length; document.getElementById('hbStatDepth').textContent = stats.maxDepth; document.getElementById('hbStatAttrs').textContent = stats.attrCount; document.getElementById('hbStatInputSize').textContent = hbFormatSize(inputSize); document.getElementById('hbStatOutputSize').textContent = hbFormatSize(outputSize); document.getElementById('hbStatsRibbon').classList.add('visible'); // Tag breakdown var grid = document.getElementById('hbTagGrid'); grid.innerHTML = ''; var types = [ { obj: stats.tagTypes.semantic, cls: 'tag-pill-semantic', label: 'semantic' }, { obj: stats.tagTypes.block, cls: 'tag-pill-block', label: 'block' }, { obj: stats.tagTypes.inline, cls: 'tag-pill-inline', label: 'inline' }, { obj: stats.tagTypes.void_el, cls: 'tag-pill-void', label: 'void' } ]; var hasAny = false; for (var t = 0; t < types.length; t++) { var keys = Object.keys(types[t].obj).sort(); for (var k = 0; k < keys.length; k++) { hasAny = true; var pill = document.createElement('span'); pill.className = 'tag-pill ' + types[t].cls; pill.innerHTML = '<' + keys[k] + '> ' + types[t].obj[keys[k]] + ''; grid.appendChild(pill); } } if (hasAny) { document.getElementById('hbTagBreakdown').classList.add('visible'); } // Warnings if (stats.warnings.length > 0) { var list = document.getElementById('hbWarningsList'); list.innerHTML = ''; // Deduplicate var unique = []; var seen = {}; for (var w = 0; w < stats.warnings.length; w++) { if (!seen[stats.warnings[w]]) { seen[stats.warnings[w]] = true; unique.push(stats.warnings[w]); } } for (var u = 0; u < unique.length && u < 10; u++) { var li = document.createElement('li'); li.textContent = unique[u]; list.appendChild(li); } document.getElementById('hbWarnings').classList.add('visible'); } // Diff bar var pct, isShrink; if (inputSize === 0) { pct = 0; isShrink = true; } else { var change = ((outputSize - inputSize) / inputSize) * 100; isShrink = change < 0; pct = Math.abs(change); } var fill = document.getElementById('hbDiffFill'); var cappedPct = Math.min(pct, 100); fill.style.width = cappedPct + '%'; fill.className = 'diff-fill ' + (isShrink ? 'shrink' : 'grow'); document.getElementById('hbDiffValue').textContent = (isShrink ? '-' : '+') + pct.toFixed(1) + '%'; document.getElementById('hbDiffBar').classList.add('visible'); } function hbFormatSize(bytes) { if (bytes < 1024) return bytes + ''; return (bytes / 1024).toFixed(1) + 'K'; } /* ── Main Actions ────────────────────────── */ function hbBeautify() { var input = document.getElementById('htmlInput').value; if (!input.trim()) return; var indentSel = document.getElementById('hbIndentSize').value; var indent; if (indentSel === 'tab') indent = '\t'; else indent = new Array(parseInt(indentSel) + 1).join(' '); var opts = { indent: indent, sortAttrs: document.getElementById('hbOptSortAttrs').checked, removeComments: document.getElementById('hbOptRemoveComments').checked, preserveInline: document.getElementById('hbOptPreserveInline').checked }; var output = hbBeautifyCode(input, opts); document.getElementById('htmlOutput').value = output; hbShowStats(input, output); } function hbMinify() { var input = document.getElementById('htmlInput').value; if (!input.trim()) return; var output = hbMinifyCode(input); document.getElementById('htmlOutput').value = output; hbShowStats(input, output); }

    Embed HTML 뷰티파이어 Widget

    HTML 뷰티파이어 정보

    이 콘텐츠, 페이지 또는 도구를 다음과 같이 인용하세요:

    "HTML 뷰티파이어" - https://MiniWebtool.com/ko/html-뷰티파이어/에서 MiniWebtool 인용, https://MiniWebtool.com/

    miniwebtool 팀 제작. 업데이트: 2026-03-07

    텍스트 수정 도구:

    주요 도구:

    인스타그램 사용자 ID 조회분수 계산기애너그램 생성기내 행운의 숫자는?방어율 계산기상대 표준 편차 계산기복리 계산기랜덤 이름 생성기평균 계산기공백 제거👙 브라 사이즈 계산기기대 수명 계산기피트 인치 센티미터 변환기🎮 게임 감도 변환기토크 변환기 (Nm, ft-lb, kgf-cm)근무 시간 계산기16진수 변환기소인수분해 계산기OPS 계산기16진수에서 10진수로 변환기무작위 토너먼트 대진표 생성기cm에서 피트와 인치로 변환기10진수를 16진수로 변환연봉 인상 계산기월경주기 계산기CAGR 계산기벤치 프레스 계산기몫과 나머지 계산기무작위 초능력 생성기줄 바꿈 제거수면 계산기이미지 분할기시험관 출산 예정일 계산기kg에서 파운드로 변환기사랑 궁합 계산기러닝 페이스 계산기분수 백분율 변환기파운드→킬로그램 변환기음력 양력 변환기잘고 텍스트 생성기원형 면적 계산기기울기 및 경사 계산기💧 이슬점 계산기랜덤 영어 단어 생성기로마-숫자-변환기팩토리얼 계산기주사위 굴리기태양, 달 & 상승궁 계산기 🌞🌙✨즉시 연금 계산기난수 선택기랜덤 생일 생성기⏱️ 시간 계산기확률 계산기연비 계산기자동차 대출 계산기무작위 문자열 생성기랜덤 시간 생성기랜덤 미국 주 생성기키 백분위수 계산기백분율 증가 계산기소수 검사기최대 공약수 계산기임신 날짜 계산기비디오 이미지 추출기호 길이 계산기ppm에서 퍼센트 변환기양육비 계산기급여 변환 계산기FPS 변환기랜덤 그룹 생성기🌬️ 체감 온도 계산기퇴직금 계산기WAR 계산기📅 날짜 계산기반지 사이즈 변환기속도 변환기초과 근무 수당 계산기암호화폐 레버리지 계산기피타고라스 정리 계산기주식 평균 계산기변화율 계산기주차 계산기취소선 텍스트 생성기ANC-계산기Hex-계산기최소공배수 계산기분수에서 소수로 계산기가위바위보 생성기다항식 인수분해 계산기임대 수익률 계산기타이어 크기 계산기임신 체중 증가 계산기출루율 계산기켈리 기준 계산기백분율 성장 계산기자전거 기어비 계산기콜라츠 추측 계산기일할 계산 월세 계산기타원 둘레 계산기퍼센트 감소 계산기야구 배팅 계산기혈당 변환기랜덤 토론 주제 생성기적분 계산기모스 부호 생성기MAC-주소-조회이닝당 적중률(WHIP) 계산기MAC 주소 생성기작은 텍스트 생성기 ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾피보나치 되돌림 계산기출산 예정일 계산기반올림 계산기연중 일수 계산기 - 오늘은 올해의 몇 번째 날인가요어린이 BMI 백분위수 계산기볼링 점수 계산기인치에서 센티미터으로 변환기빗변 계산기일일 복리 계산기자동차 감가상각 계산기퍼센트에서 PPM으로 변환기형량 감경 계산기금리 계산기체지방률 계산기거꾸로-텍스트-생성기단백질 섭취량 계산기조합 계산기IP 서브넷 계산기YouTube 채널 통계백분율 할인 계산기허리-엉덩이-비율 계산기두 날짜 사이 일수 계산기시저 암호 도구영업 마진 계산기순이익 계산기파이의 처음 n 자리중국식 성별 예측기은퇴 계산기공학용 계산기배당 수익률 계산기페이스북 사용자 ID 조회FIP 계산기자동차 리스 계산기GFR 계산기빈 줄 제거수성 역행 달력칼로리 소모 계산기요일 계산기태양 위치 계산기랜덤 영화 선택기반전 텍스트FFMI 계산기바코드 생성기이름 번호 계산기HTML에서 텍스트 변환기Z 점수 계산기⬛ 화면 비율 계산기🎰 가챠 천장 계산기무작위 날짜 생성기HEX에서 CMYK로 변환기YouTube 쇼츠 수익화 계산기병렬 저항 계산기걸음 수 거리 계산기볼트 토크 계산기TDEE 계산기스도쿠 생성기 및 풀이기속도 계산기비율 및 백분율 계산기번호 정렬헌혈 시간 계산기PSI에서 bar로 변환기예쁜 글씨 생성기중앙값 절대 편차 계산기타일 계산기랜덤 동물 생성기시그마 표기법 계산기 (합산)시차 적응 계산기계단 계산기단어 찾기 퍼즐 생성기모듈로 계산기의류 사이즈 변환기크레아티닌 청소율 계산기직각삼각형 계산기임대료 인상 계산기주식 손익 계산기십진수에서 이진수로 변환기⚔️ DPS 계산기동영상 병합시간 지속 계산기아기 성장 백분위수 계산기세제 사용량 계산기목표 심박수 계산기VO2 Max 계산기윤년은 언제입니까화성 별자리 계산기온라인 문장 부호 제거 도구중복 줄 제거직사각형 계산기연료비 계산기임신 주수 계산기신발 사이즈 변환기리스 바이아웃 계산기옥탄가 혼합 계산기2행정 오일 혼합 계산기엔진 배기량 계산기소파 문 통과 계산기장작 코드 계산기공기청정기 CADR 계산기제습기 크기 계산기천장 선풍기 크기 계산기커튼 크기 계산기러그 크기 계산기그림 거는 높이 계산기TV 설치 높이 계산기TV 크기 계산기연못 용적 및 라이너 계산기수영장 소금 계산기수영장 부피 계산기온수기 크기 계산기에폭시 레진 계산기난간동자 간격 계산기걸레받이 및 트림 계산기사이딩 계산기데크 스테인 계산기잔디 씨앗 계산기잔디 계산기아스팔트 계산기세제곱야드 계산기안테나 길이 계산기전선관 충전율 계산기직렬/병렬 커패시터 계산기유도 리액턴스 계산기방 조명 계산기럭스 루멘 계산기루멘 와트 변환기발전기 크기 계산기mAh to Wh 변환기3상 전력 계산기kVA 계산기암페어에서 와트 계산기Watts to Amps Calculator직렬 저항 계산기마찰 계산기경사면 계산기기계적 이득 계산기음속 계산기파동 속도 계산기부력 계산기종단 속도 계산기드브로이 파장 계산기광자 에너지 계산기E=mc² 계산기시간 지연 계산기케플러 제3법칙 계산기탈출 속도 계산기만유인력 계산기비어 람베르트 법칙 계산기네른스트 방정식 계산기삼투압 계산기끓는점 오름 계산기어는점 내림 계산기백분율 조성 계산기노르말 농도 계산기몰랄농도 계산기pKa Ka 변환기헨더슨 하셀바흐 계산기이론 수율 계산기한계 반응물 계산기전자 배치 계산기인터랙티브 주기율표AI 수업 지도안 생성기AI 퀴즈 생성기인용 생성기 (APA/MLA/Chicago)출석률 계산기AP 점수 계산기ACT 점수 계산기SAT 점수 계산기백분율 CGPA 변환기CGPA 백분율 변환기쉬운 채점기 (EZ Grader)자녀 양육비 계산기아기 우유 섭취량 계산기기저귀 사이즈 계산기아기 이름 생성기아기 눈 색깔 예측기자녀 키 예측기hCG 배가 시간 계산기착상 계산기ISO 8601 날짜 포맷터율리우스일 변환기낮잠 계산기Moon Phase CalculatorSunrise & Sunset Calculator세계 시계날짜 로마 숫자 변환기은퇴 카운트다운금주 계산기반 생일 계산기기념일 계산기팁 분배 계산기이메일 마케팅 ROI 계산기리드당 비용 계산기운전자본 계산기유튜브 수익 추정기무작위 RPG 캐릭터 생성기