Hoppa till innehållet

Så fungerar oCompress

Vad som händer när du släpper en fil, hur du kan kontrollera att inget laddas upp och vad förlustfri och destruktiv komprimering egentligen betyder.

Den korta versionen

När du öppnar en verktygssida laddar webbläsaren ner sidan och ett litet program, komprimeraren. När du lägger till en fil läser webbläsaren den, komprimeraren bearbetar den på din egen processor och resultatet lämnas tillbaka till dig som en nedladdning. Filen skickas aldrig över nätverket. Hela processen ser ut så här:

  1. Ladda. Sidan och verktygets gränssnitt laddas först. Motorn för en filtyp (bilder, video och ljud eller dokument) hämtas först när du lägger till en matchande fil, så du laddar aldrig ner kod som du inte använder.
  2. Läsa. Webbläsaren ger sidan åtkomst till exakt de filer du valde, inget annat på din enhet.
  3. Komprimera. Arbetet körs i en Web Worker, en bakgrundstråd i webbläsaren, så att sidan förblir responsiv och du kan avbryta när som helst.
  4. Spara. Den komprimerade filen skapas i minnet (stora videor i webbläsarens privata lagring) och sparas via webbläsarens vanliga nedladdning, en och en eller som en ZIP-fil.

Vad som körs i din webbläsare

Moderna webbläsare kan köra kompilerad kod i nästan inbyggd hastighet via WebAssembly, och de ger webbsidor åtkomst till enhetens hårdvarubaserade videokodare via ett gränssnitt som heter WebCodecs. oCompress använder båda:

  • Bilder: MozJPEG för JPEG, OxiPNG och en palettkvantiserare för PNG, WebP-kodaren från Googles libwebp, libavif för AVIF, SVGO för SVG samt särskilda avkodare och kodare för GIF och TIFF. Kodekarna för JPEG, PNG, WebP och AVIF är kompilerade till WebAssembly.
  • Video och ljud: WebCodecs med biblioteket Mediabunny för att läsa och skriva behållare som MP4 och WebM. Kodningen använder hårdvarukodaren i ditt grafikchip när den finns, och därför kan den gå snabbt även i en webbläsare. MP3-filer skrivs av LAME-kodaren och FLAC-filer av libFLAC, båda kompilerade till WebAssembly och laddade bara när de behövs.
  • Dokument: vår egen kod, byggd på PDF- och ZIP-bibliotek med öppen källkod, öppnar PDF- och Office-filer, komprimerar om bilderna inuti med bildkodekarna och skriver en ny fil.

Alla bibliotek vi levererar har öppen källkod: de flesta under tillåtande licenser som MIT, BSD och Apache 2.0, Mediabunny under MPL 2.0 och MP3-kodaren LAME under LGPL som en separat, utbytbar fil. Se listan över bibliotek med versioner och licenser.

Så kan du kontrollera att inget laddas upp

Du behöver inte ta oss på orden. Två enkla tester:

  • Gå offline. Öppna en verktygssida, komprimera en fil så att motorn laddas, stäng sedan av wifi eller mobildata och komprimera en annan fil av samma typ. Det fungerar, eftersom inget behöver nätverket.
  • Håll koll på nätverket. Tryck F12 i Chrome, Edge eller Firefox, öppna fliken Nätverk och komprimera en fil. Du ser hur komprimerarens kod laddas från vår webbplats och förfrågningar från statistik och annonser, men ingen förfrågan som innehåller din fil. Ett foto på 10 MB skulle synas som en uppladdning på 10 MB; någon sådan finns inte.

Sidan skickar anonyma användningshändelser till Google Analytics, till exempel ”en JPG på några megabyte komprimerades”. Händelserna innehåller verktyget, filtypen samt storlek, besparing och bearbetningstid i grova intervall, aldrig filnamnet eller innehållet.

Förlustfri komprimering: samma innehåll, färre byte

Förlustfri komprimering hittar redundans, sådant som lagras mer än en gång eller som går att förutsäga, och skriver det mer kompakt. Avkodningen vänder processen exakt. Tre idéer återkommer i nästan alla förlustfria format:

  • Prediktion. Angränsande pixlar i en bild eller på varandra följande samplingar i ljud är oftast lika. Att lagra den lilla skillnaden mot en förutsägelse i stället för hela värdet ger tal som mestadels ligger nära noll. PNG-filter och FLAC:s linjära prediktor fungerar så.
  • Upprepning. Upprepade sekvenser ersätts med en kort hänvisning till den tidigare kopian. Det är LZ77-delen av DEFLATE, som används i ZIP-, PNG- och Office-filer.
  • Entropikodning. Vanliga värden får korta koder och sällsynta värden långa (Huffman- eller aritmetisk kodning).

Förlustfri komprimering har en naturlig gräns: slumpmässigt brus går inte att förutsäga, så ett kornigt foto eller en brusig inspelning krymper aldrig särskilt mycket utan förluster. Det är också därför det nästan inte sparar något att komprimera en fil som redan är komprimerad, till exempel en JPEG i en ZIP.

Destruktiv komprimering: att ta bort det du inte saknar

Destruktiva kodekar går längre genom att kasta bort information som mänskliga ögon och öron knappt uppfattar. JPEG och WebP lagrar färg med lägre upplösning än ljusstyrka och avrundar bort fina högfrekventa detaljer. MP3, AAC och Opus tar bort ljud som maskeras av starkare ljud. Videokodekar som H.264 lagrar en hel bild då och då och däremellan mest rörelser och förändringar.

Inställningen för kvalitet eller bithastighet avgör hur mycket som kastas bort. Med måttliga inställningar är förlusten mycket svår att märka; går du för långt uppstår typiska artefakter: block och glorior i bilder, ett metalliskt ljud eller undervattensljud i ljudfiler, utsmetning i snabba videoscener.

Vad verktygen lovar och inte lovar

  • Du får aldrig en större fil. Om resultatet inte blir mindre lämnar verktyget tillbaka originalet och talar om att det redan är optimalt.
  • Dokument och ljudfiler ger identiska byte för samma fil och inställningar; hårdvarubaserade videokodare kan skilja sig med några byte mellan körningar.
  • Text i dokument förblir text; sidor görs aldrig om till bilder.
  • Bildmetadata som GPS-position tas bort som standard, medan färgprofilen och rotationen behålls. Videometadata som plats, enhet och datum tas också bort som standard; ljud behåller sina taggar och sin omslagsbild om du inte stänger av det.

Det vi inte kan lova är en viss procentsats. Besparingen beror helt på hur filen skapades: ett mobilfoto eller en skannad PDF har oftast gott om utrymme, en fil som redan har optimerats har lite. Verktyget visar den exakta storleken före och efter för varje fil.

Gränser för komprimering i webbläsaren

En webbläsarflik är en sandlåda med begränsat minne, och det sätter gränserna för vad som är praktiskt möjligt. Verktyget tar emot bilder upp till 200 MB och 100 megapixel, PDF- och Office-filer upp till 300 MB och video och ljud upp till 4 GB på en dator (1 GB på mobiler), även om långa 4K-videor fortfarande kan vara för stora för en fliks minne. Hastigheten beror på din hårdvara: i våra tester på en snabb Windows-dator i Chrome tog en minut 1080p-video ungefär 20 sekunder och ett foto på 24 megapixel ungefär 2,5 sekunder; mobiler kan vara mycket långsammare. Video och de flesta ljudkonverteringar kräver WebCodecs, som finns i aktuella Chrome, Edge och Opera, Firefox 130+ och Safari 26+; WAV och AIFF kan bli MP3, FLAC eller WAV även utan det.

Några format saknar helt avkodare i webbläsare, till exempel WMA, AVI och WMV, och gamla binära Office-filer kan inte skrivas om på ett säkert sätt. För dem förklarar verktyget alternativen i stället för att skapa en fil som kan vara skadad. När ett jobb är för stort för en webbläsare är ett datorprogram som HandBrake för video eller LibreOffice för dokument den ärliga rekommendationen.