Перейти к содержимому

Минифицировать CSS

Удалите комментарии и пробелы и сократите значения. А если минификатор не может обработать что-то в вашем файле, он так и скажет — вместо того чтобы молча вернуть таблицу стилей без части правил.

  • Не сохраняется
  • Без очереди и ожидания
  • Без регистрации и водяных знаков
Минифицировано

Здесь появится минифицированный CSS.

Как это работает

1

Вставьте CSS

Или перетащите файл. Ничего не сохраняется.

2

Посмотрите на результат

Вы получите минифицированную таблицу стилей и узнаете, насколько она уменьшилась, — или объяснение, что обработать не удалось.

3

Скопируйте или скачайте

Готово к добавлению в вашу сборку.

Где на самом деле экономятся байты

Основная экономия — пробелы и комментарии, а в написанной вручную таблице стилей их очень много: отступы, пустые строки между правилами и заголовки разделов, по которым удобно ориентироваться в большом файле, при отдаче сайта — чистый балласт. Кроме того, значения сокращаются так, что их смысл не меняется: цвет #ffffff превращается в #fff, 0px — в 0, ведь нулю не нужна единица, ведущий ноль в 0.5em убирается, а margin: 10px 10px 10px 10px сворачивается в margin: 10px.

Намеренно не делается то, что рискованно. Объединение правил с одинаковыми объявлениями или их перестановка меняют каскад — а каскад — это та часть CSS, где из двух правил с равной специфичностью побеждает последнее. Минификатор, который агрессивно переставляет правила, выдаст файл поменьше, а на большой таблице стилей — слегка другую страницу. Повторяющиеся объявления тоже часто оставлены намеренно — как запасной вариант для старых браузеров, которые игнорируют второе.

Вложенные правила и современный синтаксис диапазонов в медиазапросах не минифицируются — такой файл отклоняется, и причину стоит назвать, потому что большинство инструментов поступает наоборот. Парсер, на котором это построено, старше обеих возможностей, и, встретив то, чего не понимает, он не выдаёт ошибку, а молча удаляет это: вложенный блок просто исчезает из результата, и страница теряет стили, о чём никто не сообщил. Честный ответ — отказаться. Если в ваших стилях есть нативная вложенность или @media (400px <= width <= 700px), воспользуйтесь одним из инструментов ниже.

Как и с разметкой, оценивайте результат после сжатия. Таблицы стилей отдаются в gzip или brotli, а эти алгоритмы и так отлично справляются с повторяющимися пробелами, поэтому файл, который после минификации уменьшился на 30 процентов, при передаче может сократиться всего на 5. Экономия реальна, но меньше, чем цифра в заголовке.

Если нужно другое

Для современных таблиц стилей правильный инструмент — Lightning CSS: он понимает вложенность, диапазоны в медиазапросах, цветовые функции и всё остальное, что появилось за последние годы, сжимает сильнее любого более старого инструмента и заодно может транспилировать новый синтаксис для старых браузеров. esbuild --minify style.css почти так же хорош и очень быстр. Обоим место в сборке, а не во вкладке браузера.

Куда больший выигрыш обычно даёт удаление неиспользуемых правил. Сайт на утилитарном фреймворке или библиотеке компонентов часто отдаёт стили, большая часть которых ни к чему на странице не применяется, — и PurgeCSS или сборка самого фреймворка сократят их на порядок. Минификация неиспользуемого CSS делает неиспользуемый CSS меньше; настоящее решение — его удалить.

Частые вопросы

Мой CSS где-нибудь сохраняется?

Нет, и для исходного кода в этом весь смысл. Ничего не сохраняется, и ни один сервер его не видит. Вставить закрытый исходный код в онлайн-минификатор, который куда-то его отправляет, — это раскрытие информации, что бы сайт ни писал о сроках хранения. И это как раз то, что делают в спешке, не задумываясь.

Почему мой файл отклонён?

Потому что при минификации потерялись бы правила. Минификатор на этой странице выпущен в 2022 году и не знает о двух вещах, которые сейчас стали обычным CSS. Встретив нативную вложенность — правило, записанное внутри другого правила, с "&" или без, — он возвращает внешнее правило и МОЛЧА ОТБРАСЫВАЕТ вложенное. Встретив современный медиазапрос с диапазоном, например @media (width >= 400px), он возвращает пустую таблицу стилей. Ни в одном из случаев ошибки нет. Мы проверили оба случая на той самой версии, которую используем, и решили, что вернуть таблицу стилей с недостающими стилями хуже, чем отказаться, поэтому эти два случая распознаются и отклоняются. Кроме того, в качестве общей проверки правила подсчитываются до и после — на случай, если существует третий случай, который пока никто не нашёл.

Как тогда минифицировать вложенный CSS?

Сначала уберите вложенность компиляцией. Любой инструмент сборки, поддерживающий вложенность, — Sass, PostCSS, Lightning CSS или ваш сборщик — разворачивает её при сборке, и развёрнутый результат минифицируется здесь без проблем. Если вы пишете вложенность вручную и отдаёте её как есть, вы полагаетесь на возможность, которую современные браузеры поддерживают, а экосистема минификаторов ещё не до конца освоила.

Что именно он делает?

Удаляет комментарии и пробелы, сокращает цвета (#ffffff становится #fff, #ff0000 — red), убирает ненужные единицы и точки с запятой и объединяет то, что можно безопасно объединить. Правила, которые кажутся неиспользуемыми, он не удаляет: для этого нужно знать ваш HTML, а ошибочная догадка удалит нужные вам стили.

Насколько меньше станет файл?

Для написанного вручную CSS — обычно на 15–30%. Уже скомпилированный инструментом сборки результат часто почти минимален и почти не изменится. Gzip на вашем сервере даёт больше, чем минификация; эффекты складываются.

Безопасно ли минифицировать здесь боевую таблицу стилей?

Да. Ничего не сохраняется, а два случая, которые инструмент не умеет обрабатывать, отклоняются, а не ломаются молча, поэтому в ответ вы получите либо корректный результат, либо объяснение, почему файл отклонён.

Полезно знать: Вложенные правила и современный синтаксис диапазонов в медиазапросах не минифицируются — такой файл отклоняется. Минификатор построен на парсере, который старше обеих возможностей, и вместо ошибки он молча удаляет то, чего не понимает: вложенный блок просто исчезает из результата. Пока этот парсер не догонит стандарт, честный ответ — отказаться обрабатывать файл.

Разместите этот инструмент на своём сайте

Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.