Hur RoundCut fungerar

Tekniska detaljer om vad varje verktyg gör, var det körs och hur du kan verifiera det själv.

Det korta svaret

RoundCut använder en hybridarkitektur: de flesta verktyg körs helt i din webbläsare utan någon uppladdning, och en handfull skickar en enda nätverksförfrågan genom vår egen infrastruktur när webbläsaren inte kan matcha kvaliteten, alltid med en osynlig reservlösning på klientsidan. Vi talar om vilken väg du är på, i varje verktyg och på den här sidan.

Tabellen nedan är representativ, inte uttömmande (nya verktyg släpps regelbundet). Den visar ett exempel på varje sorts väg:

ExempelverktygVar arbetet sker
Circle Crop (endast webbläsare)100 % i din webbläsare, Canvas API. Ingen uppladdning, fungerar offline.
Komprimeringsförhandsvisning (endast webbläsare)100 % i din webbläsare, canvas.toBlob. Ingen uppladdning. Reglaget förblir omedelbart.
Slutlig komprimeringsnedladdning (serverberörande)En tur och retur till vår tjänst på api.roundcut.com.br (Fastify + sharp + libvips på en VPS i Tyskland), med en webbläsar-reservlösning.
Bakgrundsborttagning (serverberörande)En tur och retur till en Cloudflare Worker som kör BiRefNet på Cloudflares edge-GPU:er, med en WebAssembly-reservlösning i din webbläsare när molnet inte är nåbart.

Beskärning, storleksändring, formatkonvertering (utom AVIF-kodning) och komprimeringsförhandsvisningen körs alla helt i din webbläsare. Bakgrundsborttagning, komprimeringsnedladdningen, AI-uppskalning, AVIF-kodning och PDF med flera bilder skickar var och en en enda förfrågan och faller tillbaka på webbläsaren när molnet inte är nåbart.

Du kan verifiera påståendena om klientsidan på ungefär 30 sekunder: öppna DevTools → Nätverk, rensa loggen, använd sedan ett rent webbläsarverktyg som Circle Crop eller reglaget för komprimeringsförhandsvisningen, och du kommer att se att ingen förfrågan som bär bytena från din bild lämnar sidan. För de serverberörande verktygen ser du exakt en uppladdning per åtgärd, till namngivna slutpunkter.

Varför hybrid

De flesta bildverktyg på nätet sitter vid ett ytterläge: ladda-upp-allt-till-en-server (du väntar på turer och retur och operatören behåller din fil) eller allt-i-webbläsaren (du betalar med kvalitet och hastighet på kodnings- och AI-stegen). Inget ytterläge vinner överallt.

Vi valde klientsidan där webbläsare redan är utmärkta, <canvas>-elementet sköter beskärning, rotation, storleksändring och den förlustbringande förhandsvisningskodningen i JPG/WebP, och serversidan där webbläsaren fortfarande förlorar mätbart:

  • Bildkomprimering, vid den slutliga nedladdningen. Serversidans sharp + libvips 8.17 producerar filer som vid samma visuella kvalitet är byte för byte 10-15 % mindre än webbläsarkodare, och ger tillgång till finjustering av AVIF-hastighet/kroma och JPEG-XL-utdata som webbläsaren inte exponerar. Reglaget och förhandsvisningen körs fortfarande i din webbläsare så att iterationen förblir omedelbar, bara “Ladda ner”-trycket går genom vår tjänst.
  • AI-bakgrundsborttagning och AI-uppskalning, på standardvägen. Modellerna (BiRefNet för segmentering, superupplösning för uppskalning) behöver en riktig GPU för att bli klara på sekunder. Reservlösningarna i webbläsaren fungerar men är långsammare och ger ett synbart grövre resultat på hår, päls och fina kanter.
  • AVIF-kodning, vid konvertering. AVIF-kodaren i webbläsaren är långsam på vissa enheter, så AVIF-utdata skickar en förfrågan till komprimerings-Worker, med en webbläsarkodning på huvudtråden som reservlösning.

Kostnaden vi accepterar för att vara på serversidan på de vägarna är en tur och retur per åtgärd. Kostnaden vi undviker genom att stanna på klientsidan överallt annars är tur-och-retur-avgiften på de delar av arbetsflödet som itererar snabbast.

Pipelinen, steg för steg

1. Du väljer en fil

Via filväljaren, dra-och-släpp eller inklistring lämnar webbläsaren ett File-objekt till JavaScript. JavaScript läser bytena med FileReader eller Blob.arrayBuffer(). Vid ingen punkt i detta steg skickas filen över nätverket, oavsett vilket verktyg du använder.

2. Webbläsaren avkodar bilden

Moderna webbläsare avkodar JPG, PNG, WebP, GIF och AVIF inbyggt. Vi använder createImageBitmap() för att förvandla råa bytes till en bitmapp som GPU:n kan arbeta med, utanför huvudtråden. För HEIC på webbläsare som inte avkodar det inbyggt faller vi tillbaka på en WebAssembly-avkodare som körs lokalt i din webbläsare.

3. Verktyget gör sin grej, här delar vägarna sig

  • Rena webbläsarverktyg (beskärning, storleksändring, formatkonvertering till PNG/JPEG/WebP, komprimeringsförhandsvisningen). En Canvas 2D-pixeltransform eller en WebAssembly-codec omkodar bitmappen lokalt. Resultatet är klart utan någon uppladdning. Cropper.js sköter den interaktiva beskärningsramen för beskärningsverktygen, och canvas.toBlob sköter omkodningen av förhandsvisningen. Helt i din webbläsare.
  • Komprimering, nedladdning. När du trycker på “Ladda ner” skickas bilden en gång till api.roundcut.com.br (en Fastify-tjänst på en VPS i Tyskland som drivs av Hostinger, Node 24 + sharp 0.34 + libvips 8.17, samma C-bibliotek som Squoosh använder på sin servervägs). Den omkodas med samma parametrar som du ställde in i förhandsvisningen, och bytena strömmas tillbaka till din webbläsare. Tjänsten håller en tenantisolerad, innehållsadresserad cache (en hash av indatabytena + parametrar) begränsad till 500 MB, så att en ny nedladdning av samma bild med samma inställningar spelar upp de cachade bytena, cachen är inte indexerad efter dig, IP eller filnamn. Om tjänsten inte är nåbar faller verktyget tillbaka på förhandsvisningsblobben i webbläsaren.
  • Bakgrundsborttagning, standardvägen i molnet. Bilden laddas upp en gång till en Cloudflare Worker, mellanlagras i en privat R2-bucket, bearbetas av Cloudflares cf.image.segment-transformation som kör BiRefNet-modellen på Cloudflares edge-GPU:er, och utklippet strömmas tillbaka. Det mellanlagrade R2-objektet raderas inom en timme av en R2-livscykelregel, oavsett utfall. Ett typiskt foto blir klart på 1-3 sekunder. Dagliga tak per IP och en uppladdningsgräns på 5 MB håller gratisnivån hållbar.
  • Andra molnstödda verktyg (AI-uppskalning, AVIF-kodning, PDF med flera bilder) följer samma form: en förfrågan till namngiven infrastruktur (ett moln-bild-API för superupplösning, komprimerings-Worker för AVIF-kodning, vår VPS-tjänst för PDF med flera bilder), resultatet strömmas tillbaka, och en osynlig webbläsar-reservlösning om den förfrågan misslyckas.
  • WebAssembly-reservlösning. Om den aktuella molnvägen inte är nåbar (ditt nätverk faller, du är bakom en strikt brandvägg, dagskvoten är full, eller filen överstiger molngränsen) växlar verktyget sömlöst till en lokal modell eller codec som körs i din webbläsare, till exempel ISNet-modellen för bakgrundsborttagning via ONNX Runtime Web med WebAssembly. Första körningen laddar ner modellen och är långsammare, senare körningar är snabbare. Ingen uppladdning på dessa reservvägar, du kan verifiera det i DevTools.

4. Du laddar ner resultatet

Utdatabitmappen kodas till en Blob, omsluts av en object URL, och erbjuds till webbläsarens vanliga filsparningsdialog. Filen visas på din disk.

Hur du verifierar det själv

Välj det du föredrar:

Metod 1. Bevaka Nätverk-fliken

  1. Öppna RoundCut i en ny flik och öppna DevTools → Nätverk.
  2. Använd ett rent webbläsarverktyg, Circle Crop eller reglaget för komprimeringsförhandsvisningen. Du kommer att se förfrågningar enbart för HTML/CSS/JS/teckensnitt, plus de relevanta WebAssembly-modulerna vid första användningen. Ingen förfrågan kommer att bära bytena från din bild.
  3. Använd nu ett serverberörande verktyg, Komprimering → Ladda ner eller Bakgrundsborttagning. Du kommer att se exakt en POST som bär din bild, och ett svar som kommer tillbaka med resultatet. Håll muspekaren över en förfrågan för att se storlek och timing.

Kolumnen “Initiator” talar om vilket skript som utlöste varje förfrågan, och kolumnen “Type” talar om vad som skickades. Vi döljer ingendera.

Metod 2. Använd verktygen offline

  1. Ladda en valfri RoundCut-verktygssida. Använd Bakgrundsborttagning en gång på en liten bild så att ISNet-modellen i webbläsaren cachas.
  2. Öppna DevTools → Nätverk → bocka i Offline (eller stäng av wifi).
  3. Ladda om sidan, de statiska resurserna är cachade, så den laddas fortfarande.
  4. Prova verktygen:
    • Rena webbläsarverktyg (Circle Crop, storleksändring, komprimeringsförhandsvisningen) fortsätter att fungera, de behövde aldrig nätverket.
    • Komprimeringsnedladdning faller tillbaka på förhandsvisningsblobben i webbläsaren (något mindre effektiv kodning, men funktionell).
    • Bakgrundsborttagning faller tillbaka på ISNet-WebAssembly-modellen och fungerar utan någon utgående förfrågan.

Om verktygen fungerade offline (de molnstödda något försämrade, de rena webbläsarverktygen identiska) har per definition ingen server sett din bild.

Vad vi ser, och vad vi inte ser

klientsidans vägar ser vi ingenting om din bild. Det finns ingen förfrågan att titta på, ingen cache att lagra den i, ingen loggrad att söka i.

serversidans vägar:

  • Komprimerings- och PDF-tjänsten ser bildbytena under kodningens varaktighet (vanligtvis ett par hundra millisekunder), behåller en innehållsadresserad cache-post under cache-TTL, och det är allt. Cachen är inte indexerad efter användare, IP, filnamn eller någon identifierare vi skulle kunna använda för att hitta “dina” bilder. Vi loggar inte bildinnehåll. Kodningstjänsten delas av samma två tenanter som v1 betjänade före övergången, med CORS, hastighetsgränser och HMAC-signerade kanoniska URL:er per tenant.
  • Bakgrundsborttagning och de andra AI-vägarna ser bilden under mellanlagringsuppladdningen och modellanropet (vanligtvis ett par sekunder), varefter den mellanlagrade kopian raderas av en R2-livscykelregel. BiRefNet-modellen körs inuti Cloudflares egen infrastruktur, inte på ett externt API i stil med remove.bg / fal.ai / Replicate.

På varje väg registrerar vår analysleverantör (Cloudflare Web Analytics) aggregerade sidvisningsdata. URL, land, webbläsarfamilj, Core Web Vitals. Inga cookies, inga beständiga identifierare, ingenting kopplat till en person.

För verktyg som laddar ner en WebAssembly-modul vid första användningen (HEIC-avkodaren, ISNet-ONNX-modellen) ser vår värdleverantör att någon hämtade modulen, på samma sätt som den ser att de hämtar CSS-filen. Modulen själv innehåller ingen information om din bild.

Den fullständiga datainventeringen finns i vår integritetspolicy.

Teknikstacken

För de nyfikna:

  • Astro, generatorn för statiska sajter. Varje sida levereras som ren HTML med progressivt förbättrade JavaScript-”öar” endast där interaktiva verktyg finns.
  • Ren CSS med anpassade egenskaper, ingen Tailwind, ingen CSS-in-JS. Hela designsystemet är en enda tokens.css-fil.
  • canvas.toBlob / <canvas>. JPEG-, PNG-, WebP-, AVIF-kodning (webbläsarstödd) i de rena webbläsarverktygen, och allt beskärnings- och storleksändringsarbete.
  • Cropper.js, interaktionslagret för beskärningsrektangeln.
  • ONNX Runtime Web, kör ISNet-WebAssembly-reservlösningen för Bakgrundsborttagning.
  • Cloudflare Pages, är värd för den statiska builden, serverar den från edge.
  • Cloudflare Workers + R2 + cf.image.segment (BiRefNet), standardpipelinen för Bakgrundsborttagning.
  • Fastify + sharp 0.34 + libvips 8.17 på Node 24, komprimerings- och PDF-tjänsten på api.roundcut.com.br, på en Hostinger-VPS i Tyskland.
  • Cloudflare Web Analytics, aggregerade, cookielösa sidvisningsräkningar.

Webbläsarstöd

Varje verktyg fungerar på den aktuella och föregående versionen av Chrome, Firefox, Safari och Edge, dator och mobil. Sajten använder progressiv förbättring: där en webbläsare stöder ett nyare API (t.ex. showSaveFilePicker, OffscreenCanvas) använder vi det, där den inte gör det faller vi tillbaka på den äldre motsvarigheten. Det finns ingen “din webbläsare stöds inte”-vägg.

De enda hårda kraven är JavaScript (för alla verktyg) och en nätverksanslutning (endast när du använder ett molnstött verktyg på dess standardväg, de rena webbläsarverktygen körs helt offline efter den första sidladdningen).

Frågor

Något vi inte tog upp? Mejla support@roundcut.app. Tekniska frågor är välkomna.