Wideo i nagrania
Jak zrobić GIF z filmu, który nie waży kilkudziesięciu MB
GIF z kilkunastu sekund filmu potrafi ważyć wielokrotnie więcej niż sam film. Poniżej: skąd się to bierze, które ustawienie zmniejsza plik najbardziej i kiedy lepiej zrezygnować z GIF-a.
- Redakcja HNarzędzi
- Publikacja:
Na naszym syntetycznym pliku testowym (film 1280×720, 15 s, 8,4 MB w MP4) GIF z ustawieniami 15 s, 15 kl./s i 720 px (maksymalna długość i szerokość w narzędziu) waży 25,1 MB. To trzy razy więcej niż film, z którego powstał. Ten sam materiał skrócony do 5 s, z 10 kl./s i szerokością 480 px zmieścił się w 2,3 MB.
Dlaczego GIF jest ciężki
Film w MP4 czy WebM zapisuje głównie zmiany między klatkami i potrafi pominąć to, co się nie poruszyło. W GIF-ie narzędzie zapisuje każdą klatkę w całości, jako osobny obraz skompresowany algorytmem LZW. Przy 10 kl./s i 5 s to 50 pełnych obrazów, a przy 15 kl./s i 15 s już 225.
Drugi powód to kolory. Obraz w GIF-ie rysuje się z tablicy kolorów, a specyfikacja formatu pozwala na najwyżej 256 pozycji (GIF89a, W3C, sprawdzone w październiku 2026). Narzędzie buduje jedną wspólną paletę 256 kolorów z maksymalnie 8 klatek rozłożonych równomiernie po wybranym fragmencie. Dzięki temu kolory nie „migoczą” między klatkami, ale gładkie przejścia tonalne (niebo, gradient, skóra) mogą wyjść pasmowe lub ziarniste. W klatce naszego pliku testowego naliczyłem w Node 25 519 różnych kolorów, a w klatce GIF-a o szerokości 480 px 225.
Z tego wynika, na co masz wpływ: na liczbę klatek i liczbę pikseli w każdej z nich. Palety w narzędziu nie ustawiasz.
Co zmniejsza GIF i w jakiej kolejności po to sięgać
Narzędzie Wideo na GIF ma trzy ustawienia. Każde ma granice, które wynikają z kodu. Do tego GIF nie jest szerszy od filmu źródłowego.
| Ustawienie | Zakres | Domyślnie | Wpływ na wagę |
|---|---|---|---|
| Zaznaczony fragment | od 0,2 do 15 s | pierwsze 5 s | Waga rośnie mniej więcej liniowo z długością |
| Klatki na sekundę | 5-20 | 10 | Waga rośnie z liczbą klatek |
| Szerokość | 240-720 px, krok 20 px | 480 px | Waga klatki rośnie z liczbą pikseli, a wysokość dopasowuje się do proporcji filmu |
Kolejność, którą polecam: najpierw skróć fragment, bo to nie zmienia wyglądu żadnej klatki. Potem obniż liczbę klatek, jeśli ruch jest powolny. Szerokość zmniejszaj na końcu, bo jej spadek widać od razu, zwłaszcza gdy w kadrze jest tekst.
Zanim klikniesz „Utwórz GIF”, narzędzie pokazuje długość fragmentu, liczbę klatek i wymiary GIF-a. Dzięki temu możesz policzyć, ile pikseli trzeba będzie zakodować: liczba klatek × szerokość × wysokość. Powyżej 60 milionów pikseli narzędzie ostrzega, że GIF będzie duży.
Przykład: od 25,1 MB do 1,1 MB
Plik testowy: syntetyczny klip 1280×720, 15 s, 30 kl./s, H.264 bez dźwięku, 8,4 MB (8 436 363 bajtów). To przesuwający się gradient, biały kwadrat i wyraźne ziarno, podobne do szumu kamery przy słabym świetle. Nie jest to nagranie z aparatu ani ekranu. Skrypt, który go tworzy, to scripts/guide-fixtures/make-gif-from-video.mjs. Poniżej wagi odczytane z narzędzia po wygenerowaniu GIF-a w przeglądarce.
| Krok | Ustawienia | Klatek | Wymiary | Waga GIF-a |
|---|---|---|---|---|
| Start | 15 s, 15 kl./s, 720 px | 225 | 720×405 | 25,1 MB |
| 1. Krótszy fragment | 5 s, 15 kl./s, 720 px | 75 | 720×405 | 8,5 MB |
| 2. Mniej klatek | 5 s, 10 kl./s, 720 px | 50 | 720×405 | 5,7 MB |
| 3. Węższy obraz | 5 s, 10 kl./s, 480 px | 50 | 480×270 | 2,3 MB |
| 4. Jeszcze węższy | 5 s, 10 kl./s, 320 px | 50 | 320×180 | 1,1 MB |

Co z tego widać:
- Długość działa liniowo. Przy 10 kl./s i 480 px fragmenty 3, 5, 10 i 15 s dały kolejno 1,4 MB, 2,3 MB, 4,5 MB i 7 MB.
- Waga jednej klatki zależy od liczby pikseli. Po podzieleniu wagi pliku (pomiar w Node, nie z narzędzia) przez liczbę klatek wychodzi około 113 000 bajtów na klatkę przy 720 px, 47 000 przy 480 px i 21 000 przy 320 px. Liczba pikseli maleje przy tych szerokościach do 44% i 20% wartości z 720 px, a waga klatki do 42% i 19%.
- Spadek klatek z 15 do 10 na sekundę zmniejszył plik o jedną trzecią, a z 10 do 8 przy 480 px (40 klatek) dał 1,9 MB zamiast 2,3 MB.
Liczby z tej tabeli przenosisz na swój film tylko jako proporcje. Waga zależy też od treści. Ten sam klip bez mocnego ziarna (lekki szum, film 15 s ma 689,8 KB) przy ustawieniach z kroku 3 dał GIF o wadze 944,4 KB zamiast 2,3 MB. W przeliczeniu na piksel to około 0,14 bajta w gładkim klipie i około 0,36 w ziarnistym. Ziarno i szum kompresują się w GIF-ie najgorzej, a jednolite tło najlepiej.
Kiedy lepszy będzie MP4 albo WebM
Jeśli miejsce, do którego wysyłasz animację, przyjmuje wideo, krótki MP4 zwykle wygra z GIF-em wagą i jakością. Te same pierwsze 5 s naszego ziarnistego pliku:
| Wersja | Wymiary | Klatki | Waga |
|---|---|---|---|
| GIF z narzędzia Wideo na GIF | 480×270 | 10 kl./s | 2,3 MB |
| MP4 po Przytnij wideo | 1280×720 | 30 kl./s | 2,9 MB |
| MP4 po Kompresor wideo, limit 480p, poziom zrównoważony | 854×480 | 30 kl./s | 458,4 KB |
Skompresowany MP4 ma około pięć razy mniej bajtów niż GIF, a obraz ma więcej pikseli i trzy razy więcej klatek na sekundę. Pomiar dotyczy jednego pliku testowego, więc traktuj go jako ilustrację, a nie obietnicę.
Kompresor ustawia bitrate według poziomu i rozdzielczości (tu 738 kb/s wideo), a nie według treści. Dlatego przy gładkim klipie, który po przycięciu ważył 202,6 KB, ten sam krok dał plik 451,2 KB i narzędzie napisało, że jest większy od oryginału. Gdy film jest już lekki, zostaw wynik z przycinania.
Na własnej stronie wstawisz taki film jako zapętlony obraz:
<video src="animacja.mp4" autoplay loop muted playsinline></video>
Przeglądarki blokują autoodtwarzanie filmów z dźwiękiem, ale nie dotyczy to filmów bez ścieżki audio lub z wyciszoną (MDN: Autoplay guide, sprawdzone w październiku 2026). Ścieżkę dźwiękową usuniesz w narzędziu Usuń dźwięk z filmu.
GIF zostaje dobrym wyborem, gdy docelowe miejsce przyjmuje obrazy, a wideo nie, albo gdy animacja ma ruszać bez odtwarzacza. Wtedy trzymaj się kilku sekund i szerokości, przy której wszystko jest jeszcze czytelne.
Drobiazgi, które warto znać
- GIF zapisuje czas klatki w setnych sekundy, a narzędzie zaokrągla go do 10 ms. Przy 10 kl./s klatka trwa dokładnie 100 ms. Przy 15 kl./s zapisuje się 70 ms (w pliku testowym zmierzone w Node), czyli 14,3 kl./s, więc 5 s materiału odtwarza się przez 5,25 s. Przy 8 kl./s klatka trwa 130 ms. Jeśli liczy się dokładne tempo, wybierz 10 kl./s albo 20 kl./s (50 ms).
- GIF nie ma dźwięku i w tym narzędziu zapętla się bez końca.
- Fragment może mieć najwyżej 15 s. Dłuższy materiał skróć w zaznaczeniu albo zostań przy wideo.
- Jeśli plik filmu się nie wczytuje, przeglądarka prawdopodobnie nie umie odczytać jego kodeka. Narzędzie wyświetli wtedy komunikat o odczycie pliku.
- Film przetwarza się w przeglądarce na Twoim urządzeniu i nie jest wysyłany na serwer. Czas zależy od liczby klatek i wydajności komputera.