예시
입력 (HTML)
<h1>yutils</h1> <p>A <strong>simple</strong> tool — converts <em>HTML</em> to <a href="https://yutils.dev">Markdown</a>.</p> <ul> <li>Headings</li> <li>Lists (nested OK)</li> </ul>
출력 (Markdown)
# yutils A **simple** tool — converts *HTML* to [Markdown](https://yutils.dev). - Headings - Lists (nested OK)
참고
DOMParser 로 정확한 HTML 트리 파싱 → 재귀 변환. attribute(class·style)·script·style 태그는 의도적으로 무시. 짝 도구 Markdown Preview 로 결과 검증 가능.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- 웹페이지·이메일 HTML → README·블로그용 Markdown 변환
- CMS export HTML → 노션·옵시디언 등 Markdown 환경으로 이동
- AI 가 생성한 HTML 응답을 Markdown 으로 정리
- 오래된 HTML 문서를 모던 Markdown 파이프라인으로 마이그레이션
- Markdown Preview (짝 도구) 와 양방향 워크플로
자주 묻는 질문
- Q.어떤 HTML 요소가 지원되나요?
- A.헤딩(h1~h6) · 단락 · bold/italic/strikethrough · 코드(inline + block) · 링크 · 이미지 · 리스트(ul/ol nested) · 인용(blockquote) · 수평선 · 표 · 줄바꿈. div/span 등 wrapper 는 내부 콘텐츠만 추출.
- Q.class 나 style 같은 attribute 는?
- A.Markdown 에 1:1 매핑이 안 되는 attribute(class · style · id 등) 는 의도적으로 무시. 의미가 보존되는 href · src · alt · title 만 유지.
- Q.<script> 태그는 어떻게 처리되나요?
- A.DOMParser 가 파싱 단계에서 실행하지 않으므로 안전합니다. 변환 결과에서 script · style 태그 콘텐츠는 제외되어 XSS 위험 0.
재미있는 사실
Markdown 은 John Gruber 가 2004 년 만든 단순 텍스트 → HTML 변환 문법입니다. 그의 design goal: 'Markdown is intended to be as easy-to-read and easy-to-write as is feasible.' 사양이 느슨해서 dialect 가 여러 생겼고, 2014 년 CommonMark 가 일관 사양을 다시 정의했습니다.
Daring Fireball — MarkdownHTML → Markdown 변환은 항상 lossy 입니다 — Markdown 의 표현력이 HTML 의 부분집합. inline style, class, nested table, custom data 속성은 표현할 수 없거나 raw HTML 로 그대로 보존됩니다. '깔끔한 MD' 와 '원본 충실' 사이 trade-off.
CommonMark가장 널리 쓰이는 HTML → MD 라이브러리 turndown 은 Mixmark Studios 가 만들고 2017 년부터 활발 — yutils 도 turndown 을 사용합니다. heading 을 `#` 으로 할지 `====` 로 할지 같은 dialect 차이를 옵션으로 다룹니다.
turndown on GitHub
관련 도구
- JSON 포매터 / 검증기
JSON 문자열을 포맷팅·검증·압축합니다. 들여쓰기 조정과 키 정렬 옵션이 있으며, 브라우저에서 즉시 실행됩니다.
- 문자열 케이스 변환
문자열을 camelCase·PascalCase·snake_case·kebab-case·CONSTANT_CASE·Title Case 6개 형태로 동시에 변환해 보여줍니다.
- 정규식 테스터
JavaScript 정규식을 실시간으로 테스트합니다. g/i/m/s/u/y 플래그와 캡처 그룹을 지원합니다.
- Markdown 프리뷰
Markdown을 HTML로 렌더링하여 좌·우로 비교 표시합니다. CommonMark + GFM(테이블·코드 펜스·태스크 리스트) 지원.
- YAML ↔ JSON 변환
YAML과 JSON을 양방향 변환합니다. YAML 측의 주석·멀티라인 문자열을 허용합니다.
- 텍스트 비교
두 텍스트를 줄·단어·문자 단위로 비교하고 추가/삭제를 강조합니다.
- JSON 비교
두 JSON을 정렬·정규화 후 비교, 변경점을 강조합니다. 잘못된 JSON 에러 안내 포함.
- CSV ↔ JSON
CSV와 JSON을 상호 변환합니다. 쿼팅·구분자·헤더 행을 지원합니다.
- SQL 포매터
SQL 쿼리를 들여쓰기·키워드 케이스에 맞게 포매팅합니다. PostgreSQL/MySQL/SQLite/Standard 지원.
- XML 포매터
XML을 보기 좋게 포매팅하거나 압축합니다. SOAP·sitemap·설정 파일에 적합.
- XML ↔ JSON
XML과 JSON을 상호 변환합니다. 속성과 요소 표기를 모두 지원합니다.
- 스마트 붙여넣기
어떤 텍스트든 붙여넣으면 적합한 도구를 추천합니다 — JSON·JWT·Base64·URL·UUID·Cron 등 15종 자동 감지.
- 로렘 입숨 생성기
더미 텍스트를 단어·문장·문단 단위로 생성합니다. 정통 Lorem Ipsum 또는 랜덤.
- JSON Path 추출기
JSONPath 표현식($.store.book[*].author 등)으로 JSON에서 값을 추출합니다.
- JSON Schema 검증기
JSON 데이터를 JSON Schema(Draft 2020-12)로 검증합니다. Ajv + format 검증 지원.
- JSON Schema 생성기
샘플 JSON에서 JSON Schema(Draft 2020-12)를 자동 생성합니다. 타입·필수 필드·중첩 구조 추론.
- HTML 포매터
HTML을 보기 좋게 들여쓰기·압축·속성 정렬합니다.
- CSS 포매터
CSS를 들여쓰기·압축합니다. 셀렉터·속성 스타일 옵션.
- JavaScript 포매터
JavaScript를 들여쓰기·압축합니다. 중괄호 스타일/들여쓰기 옵션.
- TOML ↔ JSON
TOML과 JSON을 상호 변환합니다. Cargo.toml, pyproject.toml 등 설정 파일에 자주 사용.
- INI ↔ JSON
INI 설정 파일을 JSON으로 변환합니다. [section]·주석(;/#)·key=value 지원.
- JSON → TypeScript
JSON 샘플로 TypeScript interface를 생성합니다. 중첩 객체는 별도 interface로 분리.
- JS Object → JSON
JavaScript 객체 리터럴(따옴표 없는 키, 작은따옴표, trailing comma, 주석)을 표준 JSON 으로 변환합니다. 관대한 파서, 엄격한 출력.
- Slug 생성기
텍스트를 URL-safe slug으로 변환합니다. 구분자/대소문자/악센트 제거 옵션.
- ASCII 트리
들여쓰기 또는 경로 목록을 box-drawing 트리(├── │ └──)로 변환합니다.
- Diff 패치
두 텍스트로부터 unified diff(-u) 패치를 생성합니다. `git apply` / `patch -p0` 호환.
- Mock 데이터 생성기
이름·이메일·UUID·날짜 등 가짜 JSON 레코드를 생성합니다. 외부 의존 없음.
- MongoDB Extended JSON
MongoDB Extended JSON(EJSON)을 Canonical ↔ Relaxed 양방향 변환하거나, BSON wrapper를 제거해 일반 JSON으로 만듭니다. 16종 wrapper 인식 ($oid/$date/$numberLong/$numberDecimal/$binary/…).