IT
OmnvertGörsel • Belge • Ağ

HTML Biçimlendirici & Sıkıştırıcı

Beautify or minify HTML markup with configurable indentation and line wrapping — entirely in your browser.
Developer Tools →
Original
1,393 B
Output
0 B
Saved
1,393 B
Saved %
100%
Input HTML
1,393 chars
Output
100% client-side: HTML never leaves your browser.
About this tool

HTML açısı parantezlerle aldatıcı şekilde basit görünür ve şablon motoru tarafından girintilenmemiş 50KB markup okumak zorunda kaldığınız ana kadar öyle kalır. Otomatik üretilmiş HTML — özellikle CMS, sunucu tarafı şablon render, sayfa builder ve e-posta istemcilerinden gelenler — genellikle tek yoğun blok halindedir: tag'ler tek satırda sıkıştırılmış, attribute'lar wrap'lanmamış. Markup doğrudur — tarayıcılar parse eder — ama okunamaz, grep'lenemez ve incelemesi imkansızdır. Biçimlendiricinin işi bu bloğu insanların tarayabileceği şeye dönüştürmek: girintilenmiş çocuklar, yapısal tag'ler için satır başına bir element, uzun attribute'ların makul wrap'i ve korumalı blokların (<pre>, <textarea>, <script>, <style>) yazıldığı gibi bırakılması (iç boşlukları anlamlıdır).

Buradaki biçimlendirici, çoğu modern editörün 'beautify' komutunu güçlendiren js-beautify'ı kullanır. Markup ağacında yürür, hangi tag'lerin kendi satırını hak ettiğine ve hangi inline tag'lerin ebeveyniyle aynı satırda kalması gerektiğine karar verir. Yapılandırma: girinti boyutu (2/4 boşluk veya tab), wrap genişliği (40/80/120/yok) ve korumalı tag'ler. Varsayılanlar (2 boşluk, 80 sütun) en yaygın style guide'larla eşleşir.

Sıkıştırma ters işlemdir ve doğada eşit yaygındır. Production HTML pipeline'ları markup'ı sunmadan önce sıkıştırır: kaydedilen her KB indirilen, parse edilen, cache'lenen byte'tan biridir. Tasarruflar mutlak rakam olarak büyük değildir — HTML sıkıştırma tipik %10-20 azaltır — ama günde milyonlarca render eden yüksek trafikli sayfalarda birikir ve transport katmanındaki gzip/brotli ile çarpımsal olarak çalışır.

Korumalı bloklar, naif uygulamaları gafil avlayan kısımdır. <pre>, <textarea>, <script>, <style> içeriği boşluk-anlamlıdır: <pre> bloğu kodun doğru girintilenmesi için iç boşluğunu kullanır, <textarea>'nın varsayılan değeri tag'leri arasındaki literal metindir. Korumayan bir biçimlendirici onların içindeki boşluğu sıkıştırır ve sayfayı kırar. Buradaki uygulama girişi her korumalı tag'in açılış/kapanışını eşleyen regex'le böler, korumasız parçaları işler ve korumalı içeriği aynen geri ekler.

Biçimlendiricinin hayat kurtardığı yaygın durumlar: Render bug'ı debug — production'dan minify edilmiş HTML'i adım adım gezmek imkansızdır, ama biçimlendirilmişe yapıştırılınca gezilebilir hale gelir. İki versiyonu karşılaştırma — biçimlendirip diff'leyin. Erişilebilirlik veya yapısal sorunları inceleme — girinti başlık hiyerarşisini, liste iç içeliğini ve ARIA yapısını bir bakışta gösterir.

Sıkıştırıcının hayat kurtardığı durumlar: Hand-built statik site deployment'ı, e-posta render (envelope boyut limitleri için kazandırır), CMS export normalize, embedded inline style. Sıkıştırılmış çıktı semantik olarak byte-eşdeğerdir — aynı DOM ağacı, aynı render — sadece daha küçüktür.

Bilmeniz gereken edge case'ler: Embed JavaScript'inin içindeki HTML string'leri korunur (script bloğu korumalıdır). Conditional comment'ler (<!--[if IE]>) biçimlendirici tarafından korunur, sıkıştırıcı tarafından silinir. Inline SVG yapısal-farkındalık girintisiyle biçimlendirilir; SVG-spesifik optimizasyon için SVGO ayrı bir araçtır.

Gizlilik aynı: yükleme yok, log yok, tamamen tarayıcıda. HTML'iniz dahili şirket URL'leri, müşteri verisi veya ön sürüm içerik içerebilir; bunlar üçüncü taraf sunucusuna gitmez. Network sekmesi açıkken biçimlendirme sırasında dış istek görmezsiniz.

Bu araç komşu utiliti'lerle eşleşir. Markdown ↔ HTML biçimlendirilmiş HTML'den dokümantasyon Markdown'ı üretir. JSON Viewer HTML'in içine gömülü JSON-LD'yi inceler. Schema.org JSON-LD Builder JSON-LD üretir. Regex Tester toplu düzenleme akışı için faydalıdır.

Kullanım senaryoları
  • Production'dan minify HTML'i debug ve inceleme için güzelleştirin.
  • Statik sayfa deploy'undan önce elle yazılmış HTML'i sıkıştırın.
  • İki versiyonu diff'lemeden önce biçimi normalize edin.
  • Boyut bütçesine uydurmak için e-posta şablonu HTML'inden yorum/boşluk sıyırın.
  • Scraped/exported HTML'i okunabilir formda arşivleyin.
  • Doğru girinti üzerinden sayfa yapısını bir bakışta inceleyin.
  • Teknik dokümantasyon için HTML örnekleri hazırlayın.
  • Öğrencilere iyi biçimlendirilmiş HTML'in nasıl göründüğünü öğretin.
Nasıl çalışır
  1. 1HTML'inizi sola yapıştırın veya .html dosyası yükleyin.
  2. 2Mod seçin: biçimlendir (güzelleştir) veya sıkıştır.
  3. 3Girinti (2/4/tab) ve wrap (40/80/120/yok) seçin.
  4. 4Çıktı sağda güncellenir; korumalı bloklar aynen kalır.
  5. 5Byte tasarruf tile'ı sıkıştırmanın ne kazandırdığını gösterir.
  6. 6Kopyala'ya tıklayın veya .html indirin.
SSS
<pre> ve <script> bloklarıma dokunulacak mı?
Hayır. Hem biçimlendirici hem sıkıştırıcı <pre>, <textarea>, <script>, <style> bloklarını korur — iç içerikleri aynen kalır çünkü onlardaki boşluk semantik anlamlıdır.
Byte tasarrufu neden bu kadar küçük?
HTML sıkıştırma tipik %10-20 kazandırır, çok script/style içerikli belgelerde daha az (korumalıdırlar). Tam fayda için transport katmanında gzip/brotli ile birleştirin.
Sıkıştırıcı yorumları siler mi?
Evet — korumalı bloklar dışındaki yorumlar silinir. <script>/<style> içindeki yorumlar korunur. Conditional comment'ler de silinir; eski IE desteği gerekiyorsa sadece biçimlendirin.
Build-time minifier'lardan farkı ne?
Build-time minifier'lar (html-minifier, swc) bundler'ınıza entegredir. Bu araç ad-hoc tek seferlik sıkıştırma için: yapıştır, çalıştır, kopyala. Production pipeline için build-time, prototip ve debug için bu araç.
Yapıştırdığım sunucuya gidiyor mu?
Hayır. Tamamen tarayıcınızda çalışır. Network sekmesinde dış istek olmadığını görebilirsiniz.
Inline SVG'yi biçimlendirebilir miyim?
Evet, ama SVG-spesifik optimizasyon (SVGO gibi) yapmaz. Boşluk ve girinti doğrudur, diğer SVG düzeyi optimizasyonlar için ayrı araç gerekir.
Wrap ayarı ne yapar?
Uzun attribute listelerinin ne zaman çoklu satıra wrap'lanacağını kontrol eder. 80 → tag'in açılış formu 80 sütunu aşarsa attribute'ları wrap'le. 'Yok' → asla wrap'leme. Çocukların yapısal girintisi bu ayardan bağımsızdır.
JSX veya şablon sözdizimini biçimlendirir mi?
JSX (.jsx/.tsx içinde) JavaScript sözdizimidir; [JS Formatter](/developer-tools/js-formatter) kullanın. Sunucu tarafı şablonlar (Handlebars, ERB, Liquid, Twig) HTML+ekstradır; biçimlendirici HTML kısımlarını işler ama şablon token'larının etrafında karışık çıktı verebilir.