ToolDeck

ضاغط HTML

ضغط HTML بإزالة المسافات والتعليقات

جرب مثالاً

HTML المدخل

HTML المضغوط

يعمل محليًا · آمن للصق الأسرار
سيظهر HTML المضغوط هنا…

ما هو ضغط HTML؟

ضغط HTML هو عملية تقليل حجم مستند HTML دون تغيير طريقة عرضه في المتصفح. يقوم ضاغط HTML بإزالة الأحرف الموجودة فقط لتسهيل قراءة المطوّر: المسافات البيضاء بين الوسوم، والتعليقات، وعلامات الإغلاق الاختيارية، وقيم الخصائص الزائدة. الناتج مطابق وظيفياً للمصدر لكنه أصغر حجماً بالبايت، مما يعني تنزيلاً أسرع وزمن ظهور أقصر للمستخدمين.

تُحلّل المتصفحات HTML إلى شجرة DOM وتتجاهل معظم المسافات البيضاء أثناء هذه العملية. تسلسل من المسافات وفواصل الأسطر بين وسمَي div لا يؤثر بصرياً على الصفحة المعروضة. كذلك يتجاهل المحلّل التعليقاتِ. يستفيد الضغط من هذه القواعد بحذف ما سيتجاهله المحلّل على أي حال، حتى لا يُنقل عبر الشبكة أصلاً.

تتفاوت وفورات ضغط HTML حسب المستند. القوالب المشبعة بالتعليقات، والصفحات المُصيَّرة من الخادم بمسافات بادئة عميقة، ومخرجات أنظمة إدارة المحتوى ذات الأنماط المضمّنة غالباً ما ترى انخفاضاً في الحجم بنسبة 15-30% من الضغط وحده. لمستندات صغيرة تكون الوفورات المطلقة متواضعة، لكن في المواقع عالية الحركة حتى بضعة كيلوبايتات لكل طلب صفحة تتراكم لتوفير نطاق ترددي حقيقي عبر ملايين الطلبات.

لماذا تستخدم هذا الضاغط؟

الصق HTML الخاص بك واحصل على الناتج المضغوط فوراً. لا أدوات بناء للتثبيت، ولا ملفات إعداد، ولا حسابات مطلوبة.

نتائج فورية
يظهر الناتج أثناء الكتابة. الصق صفحة كاملة أو مقتطفاً واحداً وشاهد النتيجة المضغوطة دون انتظار أمر CLI أو خطوة بناء.
🔒
معالجة تحترم خصوصيتك
يتم كل الضغط في متصفحك باستخدام JavaScript. لا يغادر HTML الخاص بك جهازك أبداً. آمن للاستخدام مع الترميز الذي يحتوي على روابط داخلية أو رموز أو بيانات العملاء.
📊
تقارير الحجم
اطّلع على عدد البايتات الأصلي والمضغوط جنباً إلى جنب. اعرف بالضبط كم بايت وفّرت قبل أن تقرر نشر النسخة المضغوطة.
📋
نسخ بنقرة واحدة
انسخ الناتج المضغوط إلى الحافظة بنقرة واحدة. الصقه في خط نشرك، أو ضمّنه في قالب بريد إلكتروني، أو انشره مباشرة.

حالات استخدام ضاغط HTML

تطوير الواجهة الأمامية
اضغط قوالب HTML قبل النشر في بيئة الإنتاج. قلّل حمولة الصفحات المُصيَّرة من الخادم، أو مخرجات مولّدات المواقع الثابتة، أو صدفات تطبيقات الصفحة الواحدة.
هندسة الخادم
جرّد التعليقات والمسافات البيضاء من استجابات HTML التي تولّدها أطر العمل من جانب الخادم كـ Django وRails وLaravel قبل إرسالها للعملاء.
DevOps وخطوط CI
أضف خطوة ضغط HTML إلى خط بنائك. تحقق من أن الناتج يُعرض بشكل صحيح بعد الضغط قبل الدفع إلى بيئة التجهيز أو الإنتاج.
ضمان الجودة والاختبار
قارن ناتج ضغط بنائين للتحقق من عدم وجود تغييرات هيكلية غير متوقعة. يُوحّد الضغط المسافات البيضاء، مما يجعل الفروق الهيكلية أوضح.
تحسين قوالب البريد الإلكتروني
تفرض تطبيقات البريد الإلكتروني حدوداً للحجم على رسائل HTML (تقتطع Gmail الرسائل التي تتجاوز 102 كيلوبايت). اضغط قوالب البريد للبقاء تحت الحد مع الحفاظ على كل المحتوى.
تعلّم أداء الويب
يستطيع الطلاب لصق HTML ورؤية الأجزاء التي يحذفها الضغط. يُعلّم هذا الأحرف ذات المعنى الدلالي للمتصفحات مقارنةً بتلك الجمالية البحتة.

ما الذي يحذفه ضغط HTML؟

يُطبّق ضاغط HTML الكامل عدة تحويلات تتجاوز إزالة المسافات البيضاء. يسرد الجدول أدناه أكثر التقنيات شيوعاً، مُرتَّبة من الأكثر أماناً (بلا خسارة دائماً) إلى الأكثر عدوانية (قد يُفسد حالات حافة عند التطبيق الأعمى).

التقنيةقبلبعد
Whitespace between tags<div> <p> text </p> </div><div><p>text</p></div>
HTML comments<!-- TODO: fix later -->(removed entirely)
Redundant attribute quotesclass="main"class=main
Boolean attribute valuesdisabled="disabled"disabled
Empty attribute valuesid=""(attribute removed)
Optional closing tags</li>, </td>, </p>(removed when safe)
Type on script/styletype="text/javascript"(removed — default)
Protocol in URLshttps://cdn.example.com//cdn.example.com

الضغط النصي مقابل ضغط Gzip

يتساءل المطوّرون أحياناً هل الضغط النصي لا يزال ضرورياً عندما يُطبّق الخادم بالفعل Gzip أو Brotli. الإجابة المختصرة: نعم، وهما يعملان معاً على أفضل وجه.

الضغط النصي
يعمل على مستوى النص. يحذف الأحرف التي يتجاهلها المحلّل: التعليقات والمسافات والخصائص الزائدة. يُقلّل الحجم الخام للملف قبل تطبيق أي ضغط. يحدث مرة واحدة عند وقت البناء.
ضغط Gzip / Brotli
يعمل على مستوى البايت. يجد أنماط البايت المتكررة ويُرمّزها بمراجع أقصر. يُطبَّق على كل استجابة HTTP من خادم الويب. يفكّه المتصفح عند الاستلام.

يُقلّل الضغط النصي المدخلات التي يعالجها Gzip، فيكون الناتج المضغوط أصغر أيضاً. توصي إرشادات PageSpeed من Google بتطبيق كليهما. في صفحة نموذجية، يوفّر الضغط النصي 15-25% من الحجم الخام ويضغط Gzip النتيجة بنسبة 60-80% إضافية. مجتمعَين، قد ينخفض إجمالي حجم النقل إلى 10-20% من المستند الأصلي غير المضغوط.

أمثلة برمجية

فيما يلي أمثلة عملية لضغط HTML في أربع بيئات. كل مثال يحذف التعليقات ويطوي المسافات البيضاء.

JavaScript (html-minifier-terser)
import { minify } from 'html-minifier-terser'

const html = `
  <div class="card">
    <!-- user profile -->
    <p>  Hello, world!  </p>
  </div>
`

const result = await minify(html, {
  collapseWhitespace: true,
  removeComments: true,
  removeRedundantAttributes: true,
  removeEmptyAttributes: true,
})
// → '<div class="card"><p>Hello, world!</p></div>'
Python (htmlmin)
import htmlmin

html = """
<div class="card">
  <!-- user profile -->
  <p>  Hello, world!  </p>
</div>
"""

result = htmlmin.minify(html, remove_comments=True, remove_empty_space=True)
# → '<div class="card"><p>Hello, world!</p></div>'
Go (tdewolff/minify)
package main

import (
    "fmt"
    "github.com/tdewolff/minify/v2"
    "github.com/tdewolff/minify/v2/html"
)

func main() {
    m := minify.New()
    m.AddFunc("text/html", html.Minify)

    input := `<div class="card">
  <!-- user profile -->
  <p>  Hello, world!  </p>
</div>`

    result, _ := m.String("text/html", input)
    fmt.Println(result)
    // → <div class=card><p>Hello, world!</div>
}
CLI (html-minifier-terser)
# Install globally
npm install -g html-minifier-terser

# Minify a file
html-minifier-terser --collapse-whitespace --remove-comments input.html -o output.html

# Pipe from stdin
cat index.html | html-minifier-terser --collapse-whitespace --remove-comments

# With all common optimizations
html-minifier-terser \
  --collapse-whitespace \
  --remove-comments \
  --remove-redundant-attributes \
  --remove-empty-attributes \
  --minify-css true \
  --minify-js true \
  input.html -o output.min.html

الأسئلة الشائعة

هل يمكن أن يُفسد ضغط HTML صفحتي؟
الضغط الآمن (إزالة التعليقات وطي المسافات) لا يغيّر عرض المتصفح. الخيارات المتقدمة كإزالة علامات الإغلاق الاختيارية أو طي الخصائص المنطقية هي جزء من مواصفة HTML وتعمل في جميع المتصفحات الحديثة. المنطقة الوحيدة الجديرة بالانتباه هي محتوى pre وtextarea حيث تكون المسافات مهمة. تحافظ الضواغط الجيدة على المسافات داخل هذه العناصر.
كم يصغر HTML بعد الضغط؟
تتراوح الوفورات النموذجية بين 10% و30% من الحجم الأصلي، حسب كمية المسافات البيضاء وعدد التعليقات في المصدر. القوالب ذات المسافات البادئة الكثيفة والتعليقات الوفيرة تحقق أكبر المكاسب. HTML المضغوط مسبقاً بتنسيق ضئيل قد يتقلص بنسبة 5-8% فقط.
هل يجب ضغط HTML إذا كنت أستخدم Gzip؟
نعم. يعمل الضغط النصي والضغط الثنائي على مستويات مختلفة. الضغط النصي يحذف الأحرف النصية الزائدة؛ Gzip يجد أنماط البايت المتكررة. الضغط النصي أولاً يعني أن لدى Gzip بيانات أقل للمعالجة، مما ينتج عنه ناتج مضغوط أصغر. توصي Google بتطبيق كليهما.
هل من الآمن ضغط HTML الذي يحتوي على JavaScript مضمّن؟
الضاغط الأساسي لطي المسافات لا يُعدّل المحتوى داخل وسوم script. الضواغط ذات خيار --minify-js ستضغط أيضاً JavaScript المضمّن باستخدام ضاغط JS. إذا كانت نصوصك المضمّنة تعتمد على مسافات مهمة (نادر)، اختبر الناتج. معظم النصوص المضمّنة تعمل جيداً بعد الضغط.
ما الفرق بين ضغط HTML وتشفير HTTP لـ HTML؟
الضغط النصي هو تحويل نصي يتم وقت البناء يحذف الأحرف غير الضرورية. الضغط (Gzip، Brotli) هو ترميز ثنائي يتم وقت الخادم يُقلّص استجابة HTTP. الضغط النصي لا رجعة فيه (التعليقات تختفي)، بينما يُعكس الضغط الثنائي من قِبل المتصفح عند الاستلام.
هل يؤثر الضغط النصي على تحسين محركات البحث؟
لا. تُحلّل محركات البحث DOM تماماً كما تفعل المتصفحات. تتجاهل المسافات البيضاء والتعليقات. الضغط النصي لا يغيّر بنية DOM، لذا لا يؤثر على طريقة فهرسة محركات البحث لصفحتك. أوقات تحميل الصفحة الأسرع الناتجة عن HTML أصغر قد تُحسّن التصنيفات بشكل غير مباشر من خلال إشارات Core Web Vitals.
كيف يقارن ضغط HTML بضغط CSS أو JavaScript؟
تُعيد ضواغط CSS وJavaScript تسمية المتغيرات، وتحذف الكود الميت، وتُجري تحسينات خاصة بتلك اللغات. ضواغط HTML أبسط لأن HTML لا يحتوي على متغيرات أو منطق قابل للتنفيذ لتحسينه. يركّز ضغط HTML على المسافات البيضاء والتعليقات وبناء جملة الخصائص الزائدة.