Hoe RoundCut werkt

Technische details over wat elke tool doet, waar hij draait en hoe u dat zelf kunt verifiëren.

Het korte antwoord

RoundCut gebruikt een hybride architectuur: de meeste tools draaien volledig in je browser zonder enige upload, en een handvol stuurt een enkel netwerkverzoek door onze eigen infrastructuur wanneer de browser de kwaliteit niet kan evenaren, altijd met een onzichtbare fallback aan de clientkant. We vertellen je op welk pad je zit, in elke tool en op deze pagina.

De tabel hieronder is representatief, niet uitputtend (er komen regelmatig nieuwe tools bij). Hij toont één voorbeeld van elk soort pad:

VoorbeeldtoolWaar het werk gebeurt
Circle Crop (alleen browser)100 % in je browser, Canvas API. Geen upload, werkt offline.
Compressievoorbeeld (alleen browser)100 % in je browser, canvas.toBlob. Geen upload. De schuif blijft direct.
Uiteindelijke compressiedownload (serverrakend)Eén heen-en-weer naar onze dienst op api.roundcut.com.br (Fastify + sharp + libvips op een VPS in Duitsland), met een browser-fallback.
Achtergrond verwijderen (serverrakend)Eén heen-en-weer naar een Cloudflare Worker die BiRefNet draait op de edge-GPU’s van Cloudflare, met een WebAssembly-fallback in je browser wanneer de cloud onbereikbaar is.

Bijsnijden, formaat aanpassen, formaatconversie (behalve AVIF-codering) en het compressievoorbeeld draaien allemaal volledig in je browser. Achtergrond verwijderen, de compressiedownload, AI-vergroten, AVIF-codering en PDF met meerdere afbeeldingen sturen elk een enkel verzoek door en vallen terug op de browser wanneer de cloud onbereikbaar is.

Je kunt de clientzijdige claims in ongeveer 30 seconden controleren: open DevTools → Netwerk, wis het logboek, gebruik dan een browser-only tool zoals Circle Crop of de schuif van het compressievoorbeeld, en je zult zien dat er geen verzoek met de bytes van je afbeelding de pagina verlaat. Bij de serverrakende tools zie je precies één upload per handeling, naar benoemde eindpunten.

Waarom hybride

De meeste online beeldtools zitten op één uiterste: alles-uploaden-naar-een-server (je wacht op heen-en-weers en de beheerder bewaart je bestand) of alles-in-de-browser (je betaalt met kwaliteit en snelheid bij de codeer- en AI-stappen). Geen van beide uitersten wint overal.

We kozen voor de clientkant waar browsers al uitstekend zijn, het <canvas>-element verzorgt bijsnijden, draaien, formaat aanpassen en de lossy voorbeeldcodering in JPG/WebP, en voor de serverkant waar de browser nog meetbaar verliest:

  • Beeldcompressie, bij de uiteindelijke download. Serverzijdig sharp + libvips 8.17 produceert bestanden die bij dezelfde visuele kwaliteit byte voor byte 10-15 % kleiner zijn dan browser-encoders, en geeft toegang tot AVIF-snelheids-/chroma-afstemming en JPEG-XL-uitvoer die de browser niet blootlegt. De schuif en het voorbeeld draaien nog steeds in je browser zodat het uitproberen direct blijft, alleen de “Download”-tik gaat door onze dienst.
  • AI-achtergrondverwijdering en AI-vergroten, op het standaardpad. De modellen (BiRefNet voor segmentatie, superresolutie voor vergroten) hebben een echte GPU nodig om binnen seconden klaar te zijn. De browser-fallbacks werken, maar zijn trager en leveren bij haar, vacht en fijne randen een zichtbaar grover resultaat.
  • AVIF-codering, bij conversie. De AVIF-encoder in de browser is traag op sommige apparaten, dus AVIF-uitvoer stuurt één verzoek naar de compressie-Worker, met een browsercodering op de hoofdthread als fallback.

De kosten die we aanvaarden om serverzijdig te zijn op die paden is één heen-en-weer per handeling. De kosten die we vermijden door overal elders aan de clientkant te blijven is het heen-en-weer-tarief op de delen van de workflow die het snelst itereren.

De pijplijn, stap voor stap

1. Je selecteert een bestand

Via de bestandskiezer, slepen-en-neerzetten of plakken, geeft de browser JavaScript een File-object. JavaScript leest de bytes met FileReader of Blob.arrayBuffer(). Op geen enkel moment in deze stap wordt het bestand over het netwerk verzonden, ongeacht welke tool je gebruikt.

2. De browser decodeert de afbeelding

Moderne browsers decoderen JPG, PNG, WebP, GIF en AVIF van nature. We gebruiken createImageBitmap() om de ruwe bytes om te zetten in een bitmap waar de GPU mee kan werken, buiten de hoofdthread. Voor HEIC op browsers die het niet van nature decoderen, vallen we terug op een WebAssembly-decoder die lokaal in je browser draait.

3. De tool doet zijn ding, hier splitsen de paden

  • Browser-only tools (bijsnijden, formaat aanpassen, formaatconversie naar PNG/JPEG/WebP, het compressievoorbeeld). Een Canvas 2D-pixeltransformatie of een WebAssembly-codec hercodeert de bitmap lokaal. Het resultaat is klaar zonder enige upload. Cropper.js verzorgt het interactieve bijsnijkader voor de bijsnijdtools, en canvas.toBlob verzorgt de hercodering van het voorbeeld. Volledig in je browser.
  • Compressie, download. Wanneer je op “Download” tikt, wordt de afbeelding eenmaal verzonden naar api.roundcut.com.br (een Fastify-dienst op een door Hostinger beheerde VPS in Duitsland, Node 24 + sharp 0.34 + libvips 8.17, dezelfde C-bibliotheken die Squoosh op zijn serverpad gebruikt). Hij wordt hergecodeerd met dezelfde parameters die je in het voorbeeld instelde, en de bytes worden teruggestreamd naar je browser. De dienst houdt een tenant-geïsoleerde, inhoudsgeadresseerde cache (een hash van de invoerbytes + parameters) met een limiet van 500 MB, zodat het opnieuw downloaden van dezelfde afbeelding met dezelfde instellingen de gecachte bytes afspeelt, de cache is niet geïndexeerd op jou, IP of bestandsnaam. Als de dienst onbereikbaar is, valt de tool terug op de voorbeeld-blob in de browser.
  • Achtergrond verwijderen, standaard cloudpad. De afbeelding wordt eenmaal geüpload naar een Cloudflare Worker, tijdelijk opgeslagen in een privé R2-bucket, verwerkt door Cloudflares cf.image.segment-transformatie die het BiRefNet-model op de edge-GPU’s van Cloudflare draait, en de uitsnede wordt teruggestreamd. Het tijdelijke R2-object wordt binnen een uur verwijderd door een R2-levenscyclusregel, ongeacht de uitkomst. Een typische foto is in 1-3 seconden klaar. Dagelijkse limieten per IP en een uploadlimiet van 5 MB houden de gratis laag houdbaar.
  • Andere cloud-ondersteunde tools (AI-vergroten, AVIF-codering, PDF met meerdere afbeeldingen) volgen dezelfde vorm: één verzoek naar benoemde infrastructuur (een cloud-beeld-API voor superresolutie, de compressie-Worker voor AVIF-codering, onze VPS-dienst voor PDF met meerdere afbeeldingen), resultaat teruggestreamd, en een onzichtbare browser-fallback als dat verzoek mislukt.
  • WebAssembly-fallback. Als het betreffende cloudpad onbereikbaar is (je netwerk valt weg, je zit achter een strikte firewall, het dagquotum is vol, of het bestand overschrijdt de cloudlimiet), schakelt de tool naadloos over naar een lokaal model of een codec die in je browser draait, bijvoorbeeld het ISNet-achtergrondverwijderingsmodel via ONNX Runtime Web met WebAssembly. De eerste keer wordt het model gedownload en is trager, latere keren zijn sneller. Geen upload op deze fallback-paden, je kunt het in de DevTools controleren.

4. Je downloadt het resultaat

De uitvoer-bitmap wordt gecodeerd in een Blob, verpakt in een object URL, en aangeboden aan het standaard bestand-opslaan-venster van je browser. Het bestand verschijnt op je schijf.

Hoe je het zelf controleert

Kies wat je verkiest:

Methode 1. Bekijk het Netwerk-tabblad

  1. Open RoundCut in een verse tab en open DevTools → Netwerk.
  2. Gebruik een browser-only tool, Circle Crop of de schuif van het compressievoorbeeld. Je ziet verzoeken voor alleen HTML/CSS/JS/lettertypen, plus de relevante WebAssembly-modules bij het eerste gebruik. Geen enkel verzoek draagt de bytes van je afbeelding.
  3. Gebruik nu een serverrakende tool, Compressie → Download of Achtergrond verwijderen. Je ziet precies één POST die je afbeelding draagt, en één respons die met het resultaat terugkomt. Beweeg over een verzoek om grootte en timing te zien.

De kolom “Initiator” vertelt je welk script elk verzoek heeft geactiveerd, en de kolom “Type” vertelt je wat er verzonden is. We verbergen geen van beide.

Methode 2. Gebruik de tools offline

  1. Laad een willekeurige RoundCut-toolpagina. Gebruik Achtergrond verwijderen eenmaal op een kleine afbeelding zodat het ISNet-model in de browser wordt gecachet.
  2. Open DevTools → Netwerk → vink Offline aan (of zet wifi uit).
  3. Herlaad de pagina, de statische bestanden zijn gecachet, dus hij laadt nog steeds.
  4. Probeer de tools:
    • Browser-only tools (Circle Crop, formaat aanpassen, het compressievoorbeeld) blijven werken, ze hadden het netwerk nooit nodig.
    • Compressiedownload valt terug op de voorbeeld-blob in de browser (iets minder efficiënte codering, maar functioneel).
    • Achtergrond verwijderen valt terug op het ISNet-WebAssembly-model en werkt zonder enig uitgaand verzoek.

Als de tools offline werkten (de cloud-ondersteunde licht verzwakt, de browser-only identiek), heeft per definitie geen server je afbeelding gezien.

Wat we wel en niet zien

Op de clientzijdige paden zien we niets over je afbeelding. Er is geen verzoek om te bekijken, geen cache om hem in op te slaan, geen logregel om te doorzoeken.

Op de serverzijdige paden:

  • De compressie- en PDF-dienst ziet de afbeeldingsbytes voor de duur van de codering (meestal een paar honderd milliseconden), houdt een inhoudsgeadresseerde cache-vermelding voor de cache-TTL, en dat is het. De cache is niet geïndexeerd op gebruiker, IP, bestandsnaam of enige identificator die we zouden kunnen gebruiken om “jouw” afbeeldingen te vinden. We loggen geen afbeeldingsinhoud. De codeerdienst wordt gedeeld door dezelfde twee tenants die v1 voor de overstap bediende, met CORS, snelheidslimieten en HMAC-ondertekende canonieke URL’s per tenant.
  • Achtergrond verwijderen en de andere AI-paden zien de afbeelding voor de duur van de tijdelijke upload en de modelaanroep (meestal een paar seconden), waarna de tijdelijke kopie wordt verwijderd door een R2-levenscyclusregel. Het BiRefNet-model draait binnen Cloudflares eigen infrastructuur, niet op een externe API in de stijl van remove.bg / fal.ai / Replicate.

Op elk pad registreert onze analyseprovider (Cloudflare Web Analytics) geaggregeerde paginaweergavegegevens. URL, land, browserfamilie, Core Web Vitals. Geen cookies, geen blijvende identificatoren, niets dat aan een persoon is gekoppeld.

Voor tools die bij het eerste gebruik een WebAssembly-module downloaden (de HEIC-decoder, het ISNet-ONNX-model), ziet onze hostingprovider dat iemand de module heeft opgehaald, op dezelfde manier als hij ziet dat ze het CSS-bestand ophalen. De module zelf bevat geen informatie over je afbeelding.

De volledige gegevensinventaris staat in ons privacybeleid.

De technologiestack

Voor de nieuwsgierigen:

  • Astro, de generator voor statische sites. Elke pagina wordt geleverd als gewone HTML met progressief verbeterde JavaScript-”eilanden” alleen daar waar interactieve tools leven.
  • Vanilla CSS met aangepaste eigenschappen, geen Tailwind, geen CSS-in-JS. Het volledige ontwerpsysteem is één enkel tokens.css-bestand.
  • canvas.toBlob / <canvas>. JPEG-, PNG-, WebP-, AVIF-codering (browser-ondersteund) in de browser-only tools, en al het bijsnij- en formaat-aanpaswerk.
  • Cropper.js, de interactielaag voor de bijsnijrechthoek.
  • ONNX Runtime Web, draait de ISNet-WebAssembly-fallback voor Achtergrond verwijderen.
  • Cloudflare Pages, host de statische build, serveert hem vanaf de edge.
  • Cloudflare Workers + R2 + cf.image.segment (BiRefNet), de standaardpijplijn voor Achtergrond verwijderen.
  • Fastify + sharp 0.34 + libvips 8.17 op Node 24, de compressie- en PDF-dienst op api.roundcut.com.br, op een Hostinger-VPS in Duitsland.
  • Cloudflare Web Analytics, geaggregeerde, cookieloze paginaweergavetellingen.

Browserondersteuning

Elke tool werkt op de huidige en de vorige versie van Chrome, Firefox, Safari en Edge, desktop en mobiel. De site gebruikt progressieve verbetering: waar een browser een nieuwere API ondersteunt (bijv. showSaveFilePicker, OffscreenCanvas), gebruiken we die, waar niet, vallen we terug op het oudere equivalent. Er is geen “je browser wordt niet ondersteund”-muur.

De enige harde vereisten zijn JavaScript (voor elke tool) en een netwerkverbinding (alleen bij het gebruik van een cloud-ondersteunde tool op zijn standaardpad, de browser-only tools draaien volledig offline na het eerste laden van de pagina).

Vragen

Iets dat we niet hebben behandeld? Mail naar support@roundcut.app. Technische vragen zijn welkom.