ToolDeck

فرمت‌کننده HTML

HTML را با تورفتگی مناسب فرمت و زیباسازی کنید

یک مثال امتحان کنید

ورودی HTML

HTML فرمت‌شده

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است
HTML فرمت‌شده اینجا نمایش داده می‌شود…

فرمت‌دهی HTML چیست؟

فرمت‌کننده HTML ابزاری است که عمل فرمت‌دهی HTML (که به آن زیباسازی یا چاپ زیبا نیز می‌گویند) را انجام می‌دهد: تورفتگی یکدست، شکست خط و فاصله‌گذاری به نشانه‌گذاری HTML اضافه می‌کند تا ساختار تودرتوی آن نمایان شود. مرورگرها هنگام رندر HTML فضای خالی را نادیده می‌گیرند، بنابراین سندی که در یک خط نوشته شده همان خروجی سندی با تورفتگی دقیق را تولید می‌کند. این تفاوت فقط برای انسان‌هاست: خواندن، رفع اشکال و نگهداری HTML فرمت‌شده آسان‌تر است.

مشخصات HTML (که توسط WHATWG به عنوان HTML Living Standard نگهداری می‌شود) بیش از ۱۱۰ عنصر تعریف می‌کند که هرکدام مدل محتوای خاص خود را دارند. عناصر سطح بلوک مانند <div>، <section> و <article> معمولاً در یک خط جدید شروع می‌شوند و فرزندانشان را تورفته می‌کنند. عناصر خالی مانند <br>، <img> و <input> تگ بستن و فرزندی برای تورفتگی ندارند. یک فرمت‌کننده خوب این تمایزات را درک می‌کند و قوانین تورفتگی را بر اساس آن اعمال می‌کند، نه اینکه کورکورانه بعد از هر تگ فضای خالی اضافه کند.

فرمت‌دهی بیشترین اهمیت را در طول توسعه دارد. HTML فشرده یا ماشین‌ساخته، خروجی پلتفرم‌های CMS، و نشانه‌گذاری کپی‌شده از DevTools مرورگر اغلب به صورت یک خط متراکم می‌رسند. بدون تورفتگی مناسب، پیدا کردن یک تگ بستن گمشده یا ردیابی یک ساختار با تودرتویی عمیق خیلی بیشتر طول می‌کشد. یک فرمت‌کننده HTML آن دیوار متن را در یک مرحله به یک درخت با تورفتگی مناسب و خوانا تبدیل می‌کند.

چرا از این فرمت‌کننده HTML استفاده کنیم؟

هر HTML را الصاق کنید و فوراً خروجی با تورفتگی مناسب دریافت کنید. بدون نصب افزونه، بدون نوشتن فایل‌های پیکربندی، بدون ایجاد حساب کاربری.

فرمت‌دهی فوری
خروجی همزمان با تایپ شما به‌روز می‌شود. HTML فشرده از هر منبعی را الصاق کنید و نتیجه تورفته را بدون انتظار برای مرحله build یا دستور CLI مشاهده کنید.
🔒
پردازش با اولویت حریم خصوصی
تمام فرمت‌دهی در مرورگر شما با استفاده از JavaScript اجرا می‌شود. HTML شما هرگز از دستگاه شما خارج نمی‌شود، بنابراین الصاق نشانه‌گذاری حاوی کلیدهای API، توکن‌ها یا URLهای داخلی ایمن است.
🎯
تورفتگی قابل تنظیم
با یک کلیک بین تورفتگی ۲ فاصله و ۴ فاصله جابجا شوید. فرمت‌کننده انتخاب شما را به طور یکدست در هر سطح تودرتو اعمال می‌کند.
📋
کپی با یک کلیک
خروجی فرمت‌شده را با یک دکمه در کلیپ‌بورد کپی کنید. مستقیماً در ویرایشگر، بازبینی PR یا مستندات خود الصاق کنید.

موارد استفاده از فرمت‌کننده HTML

توسعه فرانت‌اند
قالب‌های HTML را قبل از commit کردن به سیستم کنترل نسخه فرمت دهید. تورفتگی یکدست نویز diff در pull requestها را کاهش می‌دهد و بازبینی کد را سریع‌تر می‌کند.
اشکال‌زدایی قالب‌های بک‌اند
HTML رندرشده توسط سرور از فریمورک‌هایی مانند Django، Rails یا PHP اغلب نشانه‌گذاری بدون تورفتگی خروجی می‌دهد. خروجی رندرشده را اینجا الصاق کنید تا تودرتویی را تأیید و تگ‌های بسته‌نشده را پیدا کنید.
DevOps و پایپ‌لاین‌های CI
تأیید کنید که ابزارهای build HTML با ساختار مناسب تولید می‌کنند. خروجی static site generatorها یا HTML email builderها را قبل از بازبینی بصری فرمت دهید.
تضمین کیفیت و آزمایش
اسنپ‌شات‌های فرمت‌شده از خروجی HTML را بین اجراهای آزمون مقایسه کنید. تورفتگی مناسب تفاوت‌های ساختاری را هنگام مقایسه دو نسخه از یک صفحه آشکار می‌کند.
مهندسی داده
پایپ‌لاین‌های وب‌اسکرپینگ HTML خام تولید می‌کنند که نیاز به بررسی دارد. صفحات استخراج‌شده را فرمت دهید تا ساختار DOM آن‌ها را قبل از نوشتن سلکتورهای استخراج درک کنید.
یادگیری HTML
دانشجویان می‌توانند کد منبع هر وب‌سایتی را الصاق کنند و ببینند چگونه عناصر درون یکدیگر قرار می‌گیرند. نمای درختی فرمت‌شده روابط والد-فرزند بین تگ‌ها را روشن می‌کند.

قوانین تورفتگی HTML

نحوه رفتار یک فرمت‌کننده HTML با هر نوع عنصر به مدل محتوای آن بستگی دارد. جدول زیر عناصر رایج و نحوه تورفتگی آن‌ها با تنظیمات ۲ فاصله و ۴ فاصله را نشان می‌دهد. هر دو رندر یکسانی در مرورگر تولید می‌کنند؛ تفاوت در خوانایی است.

تگنوع عنصرتورفتگی ۲ فاصلهتورفتگی ۴ فاصله
<div>Block elementNew line, indent childrenNew line, indent children
<span>Inline elementNew line, indent childrenInline with parent text
<br>Void elementNew line, same levelNew line, same level
<img>Void elementNew line, same levelNew line, same level
<!-- -->CommentNew line, same levelNew line, same level
<!DOCTYPE>Document typeFirst line, no indentFirst line, no indent
<script>Script blockNew line, preserve innerNew line, preserve inner
<pre>PreformattedNew line, preserve innerNew line, preserve inner

فرمت‌کننده در مقابل Minifier در مقابل Linter

این سه ابزار روی HTML کار می‌کنند اما اهداف متفاوتی دارند. فرمت‌دهی و فشرده‌سازی تبدیل‌های متضاد هستند؛ linting بدون تغییر فضای خالی، خطاها را بررسی می‌کند.

فرمت‌کننده (این ابزار)
تورفتگی و شکست خط اضافه می‌کند تا HTML خوانا شود. ساختار DOM را تغییر نمی‌دهد و هیچ محتوایی را حذف نمی‌کند. خروجی در مرورگر با ورودی یکسان رندر می‌شود.
Minifier
فضای خالی، کامنت‌ها و تگ‌های بستن اختیاری را برای کاهش حجم فایل حذف می‌کند. عکس فرمت‌دهی است. از آن برای buildهای production استفاده کنید، نه برای خواندن یا ویرایش.
Linter (HTMLHint / W3C)
HTML را برای خطاهایی مانند ویژگی‌های alt گمشده، IDهای تکراری یا تگ‌های منسوخ‌شده بررسی می‌کند. مشکلات را گزارش می‌دهد اما تورفتگی یا فرمت‌بندی را تغییر نمی‌دهد.

نمونه‌های کد

نحوه فرمت‌دهی HTML به‌صورت برنامه‌نویسی در زبان‌ها و ابزارهای محبوب:

JavaScript (js-beautify)
import { html as beautify } from 'js-beautify'

const ugly = '<div><p>Hello</p><ul><li>One</li><li>Two</li></ul></div>'

const formatted = beautify(ugly, {
  indent_size: 2,
  indent_char: ' ',
  wrap_line_length: 80,
  preserve_newlines: false,
})
// → <div>
// →   <p>Hello</p>
// →   <ul>
// →     <li>One</li>
// →     <li>Two</li>
// →   </ul>
// → </div>
Python (BeautifulSoup)
from bs4 import BeautifulSoup

ugly = '<div><p>Hello</p><ul><li>One</li><li>Two</li></ul></div>'

soup = BeautifulSoup(ugly, 'html.parser')
print(soup.prettify(formatter='minimal'))
# → <div>
# →  <p>
# →   Hello
# →  </p>
# →  <ul>
# →   <li>One</li>
# →   <li>Two</li>
# →  </ul>
# → </div>
Go (goquery + x/net/html)
package main

import (
    "bytes"
    "fmt"
    "golang.org/x/net/html"
    "strings"
)

func main() {
    ugly := "<div><p>Hello</p></div>"
    doc, _ := html.Parse(strings.NewReader(ugly))

    var buf bytes.Buffer
    html.Render(&buf, doc)
    fmt.Println(buf.String())
    // renders normalized HTML — pair with indent logic for pretty output
}
CLI (Prettier)
# Format a single file in place
npx prettier --write index.html

# Format and print to stdout (pipe-friendly)
npx prettier --parser html index.html

# Format with 4-space indentation
npx prettier --tab-width 4 --parser html index.html

# Format HTML from stdin
echo '<div><p>Hello</p></div>' | npx prettier --parser html

سوالات متداول

تفاوت فرمت‌دهی HTML و اعتبارسنجی HTML چیست؟
فرمت‌دهی تورفتگی و شکست خط اضافه می‌کند تا نشانه‌گذاری خوانا شود. اعتبارسنجی بررسی می‌کند که آیا نشانه‌گذاری با استاندارد HTML مطابقت دارد یا نه، و خطاهایی مانند ویژگی‌های الزامی گمشده یا عناصر نادرست تودرتو را گزارش می‌دهد. یک فرمت‌کننده خطاها را برطرف نمی‌کند؛ یک اعتبارسنج فضای خالی را تغییر نمی‌دهد.
آیا فرمت‌دهی HTML نحوه رندر صفحه را تغییر می‌دهد؟
در اکثر موارد خیر. مرورگرها هنگام رندر، توالی‌های فضای خالی را به یک فاصله تبدیل می‌کنند. استثناها عناصری هستند که دارای white-space: pre یا قوانین مشابه CSS باشند، و عناصر <pre> و <textarea> که فضای خالی در آن‌ها معنادار است. یک فرمت‌کننده خوب محتوای این عناصر را دقیقاً همان‌طور که هست حفظ می‌کند.
چند فاصله باید برای تورفتگی HTML استفاده کنم؟
دو فاصله و چهار فاصله هر دو رایج هستند. HTML/CSS Style Guide گوگل ۲ فاصله را توصیه می‌کند. فرمت‌کننده Prettier هم به طور پیش‌فرض از ۲ فاصله استفاده می‌کند. چهار فاصله با قرارداد PEP 8 پایتون مطابقت دارد و برخی تیم‌ها برای یکپارچگی در زبان‌ها آن را ترجیح می‌دهند. یکی را انتخاب کنید و با فرمت‌کننده یا تنظیمات ویرایشگر آن را اعمال کنید.
آیا می‌توانم HTML حاوی JavaScript یا CSS تعبیه‌شده را فرمت دهم؟
این ابزار ساختار HTML (تگ‌ها و ویژگی‌ها) را فرمت می‌دهد. بلوک‌های <script> و <style> درون‌خطی همان‌طور که هستند حفظ می‌شوند. برای فرمت‌دهی JavaScript و CSS تعبیه‌شده، از یک فرمت‌کننده اختصاصی مانند Prettier استفاده کنید که می‌تواند هر سه زبان را در یک پاس تجزیه و فرمت دهد.
آیا tab در مقابل فاصله هنوز موضوع بحث برای HTML است؟
اکثر راهنماهای سبک HTML و فرمت‌کننده‌ها به طور پیش‌فرض از فاصله استفاده می‌کنند. نظرسنجی توسعه‌دهندگان Stack Overflow در سال ۲۰۲۳ نشان می‌دهد که حدود ۵۵ درصد از پاسخ‌دهندگان برای توسعه وب از فاصله استفاده می‌کنند. tab مزیت دسترسی‌پذیری دارد که به هر توسعه‌دهنده اجازه می‌دهد عرض بصری دلخواه خود را تنظیم کند. هر دو کار می‌کنند؛ یکپارچگی در یک پروژه از خود انتخاب مهم‌تر است.
چرا HTML من بعد از فرمت‌دهی متفاوت به نظر می‌رسد؟
فرمت‌کننده کاراکترهای فضای خالی (فاصله و خطوط جدید) اضافه می‌کند که در نشانه‌گذاری اصلی نبودند. این ظاهر کد منبع را تغییر می‌دهد اما خروجی رندرشده را نه. اگر تفاوت بصری در مرورگر می‌بینید، احتمالاً ناشی از عناصر درون‌خطی است که فضای خالی اضافه‌شده یک کاراکتر فاصله اضافی بین تگ‌ها ایجاد می‌کند، که می‌توان با CSS آن را برطرف کرد (font-size: 0 روی والد، یا flexbox).
چطور می‌توانم فرمت‌دهی یکدست HTML را در یک تیم اجرا کنم؟
از یک فرمت‌کننده خودکار در پایپ‌لاین CI خود استفاده کنید. Prettier از HTML پشتیبانی می‌کند و می‌توان آن را به عنوان یک pre-commit hook از طریق Husky یا lint-staged اجرا کرد. یک فایل پیکربندی .prettierrc به مخزن خود اضافه کنید که tabWidth، printWidth و htmlWhitespaceSensitivity را مشخص کند. سپس هر commit از همان قوانین فرمت‌دهی پیروی خواهد کرد، صرف نظر از تنظیمات ویرایشگر هر توسعه‌دهنده.
تفاوت بین فرمت‌کننده HTML و زیباساز HTML چیست؟
هر دو یک عملیات هستند. 'فرمت‌کننده' و 'زیباساز' هر دو به افزودن تورفتگی و شکست خط به نشانه‌گذاری HTML اشاره دارند. برخی ابزارها از 'beautify' (js-beautify) استفاده می‌کنند، برخی دیگر از 'format' (Prettier). خروجی یکسان است: HTML با تورفتگی مناسب و قابل خواندن توسط انسان. 'چاپ زیبا' اصطلاح مترادف دیگری است که معمولاً در مستندات و جست‌وجوها استفاده می‌شود.