Hoe Araluma werkt

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

Het korte antwoord

Araluma gebruikt een hybride architectuur: de meeste tools draaien volledig in je browser zonder enige upload, en een handvol stuurt één netwerkverzoek via onze eigen infrastructuur wanneer de browser de kwaliteit niet kan evenaren, altijd met een onzichtbaar terugvalpad 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 (de catalogus blijft groeien). Hij toont één voorbeeld van elk soort pad:

VoorbeeldtoolWaar het werk gebeurt
Cirkelbeschnijding (alleen browser)100 % in je browser, Canvas-API. Geen upload, werkt offline.
Compressievoorbeeld (alleen browser)100 % in je browser, canvas.toBlob. Geen upload. De schuifregelaar blijft direct.
Compressiedownload (raakt de server)Eén heen-en-weer naar onze dienst op api.araluma.com (sharp plus libvips op een VPS in Duitsland), met een browserterugval.
Achtergrond verwijderen (raakt de server)Eén heen-en-weer naar een Cloudflare Worker die BiRefNet draait op edge-GPU’s, met een WebAssembly-terugval in je browser.

De tools voor bijsnijden, schalen, PDF en formaatconversie (behalve het pad met AVIF-uitvoer) zitten aan de kant die alleen de browser gebruikt. Compressiedownload, achtergrondverwijdering, AI-vergroting en conversies met AVIF-uitvoer zitten aan de kant die de server raakt, elk met een lokaal terugvalpad.

De claims voor alleen de browser kun je in zo’n 30 seconden controleren: open de DevTools, ga naar het Netwerk-tabblad, wis het logboek en gebruik dan een willekeurige tool die alleen de browser gebruikt. Je zult zien dat er geen enkel verzoek met je afbeeldingsbytes de pagina verlaat. Bij de tools die de server raken zie je precies één upload per bewerking, naar de hierboven genoemde eindpunten.

Waarom hybride

De meeste online beeldtools zitten op één uiterste: alles-naar-een-server-uploaden (je wacht op heen-en-weerverkeer 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 overal waar browsers al uitstekend zijn. Het <canvas>-element verzorgt het bijsnijden, draaien, schalen en de codering van het voorbeeld met kwaliteitsverlies in JPG of WebP, en moderne browsers decoderen elk gangbaar formaat native. We kozen voor de serverkant alleen bij de paar stappen waar de browser nog meetbaar verliest:

  • Compressie, bij de uiteindelijke download. sharp plus libvips aan de serverkant levert bestanden op die 10 tot 15 % kleiner zijn, byte voor byte, dan browsercoderingen bij dezelfde zichtbare kwaliteit, en biedt afstemming van AVIF-snelheid en chroma die de browser niet heeft. De schuifregelaar en het voorbeeld draaien nog steeds in je browser zodat het uitproberen direct blijft. Alleen het tikken op “Download” gaat via onze dienst.
  • AI-achtergrondverwijdering, op het standaardpad. Het BiRefNet-model dat de beeldsegmentatie van Cloudflare draait (dezelfde architectuur als remove.bg) heeft een echte GPU nodig om in een seconde of twee klaar te zijn. De terugval in de browser (ISNet via ONNX Runtime plus WebAssembly) werkt, maar duurt veel langer en levert een zichtbaar ruwere uitsnede op bij haar, vacht en fijne randen.
  • AI-vergroting, op het standaardpad. Superresolutie in de cloud herstelt detail dat een herbemonstering in de browser niet kan, met een browserterugval wanneer de dienst niet bereikbaar is.

De kostprijs die we accepteren voor de serverkant op die paden is één heen-en-weer per bewerking. De kostprijs die we vermijden door overal elders aan de clientkant te blijven is diezelfde heffing 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 overhandigt 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, welke tool je ook gebruikt.

2. De browser decodeert de afbeelding

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

3. De tool doet zijn ding, waar de paden uiteenlopen

  • Tools die alleen de browser gebruiken (bijsnijden, schalen, het compressievoorbeeld en de schuifregelaar, PDF-samenstelling en de meeste formaatconversies). Deze draaien als Canvas-pixeltransformaties en canvas.toBlob-hercoderingen rechtstreeks op je apparaat. Het interactieve bijsnijdkader gebruikt Cropper.js. Niets verlaat de pagina.
  • Compressiedownload. Wanneer je op “Download” tikt, gaat de afbeelding één keer naar api.araluma.com (een Fastify-dienst op een Hostinger-VPS in Duitsland, Node plus sharp en libvips, dezelfde C-bibliotheken die Squoosh op zijn serverpad gebruikt). Hij wordt opnieuw gecodeerd met de parameters die je in het voorbeeld hebt ingesteld, en de bytes stromen terug. De dienst houdt een per-tenant geïsoleerde, op inhoud geadresseerde cache (een hash van de invoerbytes plus parameters) zodat het opnieuw downloaden van dezelfde afbeelding met dezelfde instellingen de gecachete bytes opnieuw afspeelt. Die cache is niet geïndexeerd op jou, je IP of bestandsnaam. Als de dienst onbereikbaar is, valt de tool terug op de voorbeeldblob in de browser.
  • Achtergrondverwijdering, standaard cloudpad. De afbeelding wordt één keer geüpload naar een Cloudflare Worker, tijdelijk geplaatst in een privé R2-bucket, verwerkt door de beeldsegmentatie van Cloudflare met het BiRefNet-model op edge-GPU’s, en de uitsnede stroomt terug. Het tijdelijke object wordt binnen een uur verwijderd door een R2-levenscyclusregel, ongeacht de uitkomst. Een typische foto is in een seconde of twee klaar. Dagelijkse grenzen per IP en per uploadgrootte houden het gratis abonnement houdbaar.
  • Achtergrondverwijdering, WebAssembly-terugval. Als de Worker onbereikbaar is (je netwerk valt weg, een strenge firewall blokkeert hem, het dagelijkse quotum is vol, of het bestand is te groot voor de cloudgrens), schakelt de tool stil over op het ISNet-model dat lokaal draait via ONNX Runtime Web en WebAssembly. De eerste keer wordt het model gedownload en duurt het langer, latere keren gaan sneller. Geen upload op dit pad, controleerbaar in de DevTools.
  • AI-vergroting. Het standaardpad stuurt de afbeelding één keer naar een clouddienst voor superresolutie en streamt het vergrote resultaat terug, met een terugval in de browser als de dienst niet bereikbaar is.

4. Je downloadt het resultaat

De uitvoerbitmap wordt gecodeerd tot een Blob, verpakt in een object-URL en overhandigd aan het standaard opslaandialoogvenster van je browser. Het bestand belandt op je schijf.

Hoe je het zelf controleert

Kies wat je het liefst doet:

Methode 1. Het Netwerk-tabblad bekijken

  1. Open Araluma in een nieuw tabblad en open de DevTools, dan het Netwerk-tabblad.
  2. Gebruik een tool die alleen de browser gebruikt zoals Cirkelbeschnijding of de compressievoorbeeld-schuifregelaar. Je ziet alleen verzoeken voor HTML, CSS, JS en lettertypen, plus de bijbehorende WebAssembly-modules bij eerste gebruik. Geen enkel verzoek draagt je afbeeldingsbytes.
  3. Gebruik nu een tool die de server raakt zoals Compressiedownload of Achtergrond verwijderen. Je ziet precies één POST die je afbeelding naar het genoemde eindpunt draagt, en één antwoord dat met het resultaat terugkomt. Beweeg over een verzoek om de grootte en timing te lezen.

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

Methode 2. De tools offline gebruiken

  1. Laad een willekeurige Araluma-toolpagina. Voer Achtergrond verwijderen één keer uit op een kleine afbeelding zodat het ISNet-model in de browser is gecachet.
  2. Open de DevTools, ga naar het Netwerk-tabblad en vink Offline aan (of zet de wifi uit).
  3. Herlaad de pagina. De statische bestanden zijn gecachet, dus hij laadt nog steeds.
  4. Probeer de tools:
    • Tools die alleen de browser gebruiken blijven werken. Ze hadden het netwerk nooit nodig.
    • Compressiedownload valt terug op de voorbeeldblob in de browser (een iets minder efficiënte codering, maar functioneel).
    • Achtergrond verwijderen valt terug op het ISNet-WebAssembly-model en werkt zonder enig uitgaand verzoek.

Als die tools offline werkten (sommige afgezwakt, die alleen de browser gebruiken identiek), dan heeft per definitie geen enkele server je afbeelding gezien.

Wat we wel en niet zien

Op de paden die alleen de browser gebruiken zien we niets over je afbeelding. Er is geen verzoek om naar te kijken, geen cache om hem in op te slaan, geen logregel om te doorzoeken.

Op de paden die de server raken:

  • Compressiedownload ziet de afbeeldingsbytes voor de duur van de codering (meestal een paar honderd milliseconden), houdt een op inhoud geadresseerde cache-invoer voor de TTL ervan, en dat is het. De cache is niet geïndexeerd op gebruiker, IP, bestandsnaam of enige aanduiding waarmee we “jouw” afbeeldingen zouden kunnen vinden. We loggen geen afbeeldingsinhoud. De codeerdienst wordt gedeeld over dezelfde tenants die v1 vóór de overstap bediende, met CORS per tenant, snelheidsgrenzen en met HMAC ondertekende canonieke URL’s.
  • Achtergrond verwijderen ziet de afbeelding voor de duur van de tijdelijke upload en de segmentatieaanroep (doorgaans een seconde of twee), waarna de tijdelijke kopie wordt verwijderd door de R2-levenscyclusregel. We geven je bytes nooit door aan een modelaanbieder van derden. Het BiRefNet-model draait binnen de eigen infrastructuur van Cloudflare, niet op een externe API in de stijl van remove.bg, fal.ai of Replicate.
  • AI-vergroting ziet de afbeelding voor de duur van de superresolutieaanroep, geeft het resultaat terug en bewaart niets dat aan jou is gekoppeld.

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

Voor tools die bij eerste gebruik een WebAssembly-module downloaden (de HEIC-decoder, het ISNet-ONNX-model) ziet onze hostingaanbieder dat iemand de module heeft opgehaald, op dezelfde manier waarop hij ziet dat een CSS-bestand wordt opgehaald. De module zelf draagt 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 uitgeleverd als gewone HTML met progressief verbeterde JavaScript-”eilanden” alleen daar waar interactieve tools leven.
  • Pure CSS met aangepaste eigenschappen, geen Tailwind, geen CSS-in-JS. Het hele ontwerpsysteem is één enkel tokens.css-bestand.
  • canvas.toBlob en <canvas>, de JPEG-, PNG-, WebP- en AVIF-codering voor de tools en voorbeelden aan de browserkant.
  • Cropper.js, de interactielaag voor de bijsnijdrechthoek.
  • ONNX Runtime Web, dat de ISNet-WebAssembly-terugval voor Achtergrond verwijderen draait.
  • Cloudflare host de statische build en levert hem vanaf de edge, en draait de Workers, R2 en de beeldsegmentatie-pijplijn (BiRefNet) achter het standaardpad van Achtergrond verwijderen.
  • Fastify met sharp en libvips op Node, de compressiedownloaddienst op api.araluma.com, 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, op desktop en mobiel. De site gebruikt progressieve verbetering: waar een browser een nieuwere API ondersteunt (bijvoorbeeld showSaveFilePicker of OffscreenCanvas) gebruiken we die, en waar dat niet zo is, 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 pad dat de server raakt, de tools die alleen de browser gebruiken draaien volledig offline na het eerste laden van de pagina).

Vragen

Iets wat we niet hebben behandeld? Mail naar support@araluma.com. Technische vragen zijn welkom.