Het korte antwoord
Araluma gebruikt een hybride architectuur: twee tools draaien volledig in uw browser zonder enige upload, en twee tools sturen één netwerkverzoek via onze eigen infrastructuur wanneer de browser de gewenste kwaliteit niet kan evenaren. Wij vertellen u op elk moment welk pad u bewandelt — in elke tool en op deze pagina.
| Tool | Waar het werk plaatsvindt |
|---|---|
| Circle Crop | 100% in uw browser, Canvas API. Geen upload, werkt offline. |
| Compress-voorvertoning (schuifregelaar + formaatsvergelijking) | 100% in uw browser, canvas.toBlob. Geen upload. |
| Compress definitieve download | Één heen-en-terugreis naar onze service op api.araluma.com (Fastify + sharp + libvips op een VPS in Duitsland). |
| Achtergrond verwijderen | Één heen-en-terugreis naar een Cloudflare Worker die BiRefNet uitvoert op Cloudflare’s edge-GPU’s, met een WebAssembly-fallback in uw browser wanneer de cloud niet bereikbaar is. |
U kunt de client-side beweringen in ongeveer 30 seconden verifiëren: open DevTools → Network, leeg het log en gebruik vervolgens Circle Crop of de Compress-schuifregelaar — u zult zien dat er geen enkel verzoek uw afbeeldingsbytes de pagina verlaat. Voor de twee tools die wél de server aanraken, ziet u precies één upload per bewerking, naar de hierboven genoemde eindpunten.
Waarom hybride
De meeste online beeldbewerkingstools bevinden zich aan één van de twee uitersten: alles uploaden naar een server (u wacht op heen-en-terugreizen en de beheerder bewaart uw bestand), of alles in de browser afhandelen (u betaalt in kwaliteit en snelheid bij de codeer- en AI-stappen). Geen van beide uitersten wint overal.
Wij kozen voor client-side waar browsers al uitstekend presteren — het <canvas>-element
verwerkt bijsnijden, roteren en de lossy voorvertoning in JPG/WebP — en voor server-side
waar de browser aantoonbaar tekortschiet:
- Afbeeldingscompressie, bij de definitieve download. Server-side
sharp+libvips 8.17produceert bestanden die 10–15% kleiner zijn byte-voor-byte dan browserencoders bij dezelfde visuele kwaliteit, en biedt toegang tot AVIF-snelheid/chroma-afstemming en JPEG XL-uitvoer die de browser niet blootstelt. De schuifregelaar/voorvertoning draait nog steeds in uw browser zodat het itereren razendsnel blijft; alleen de “Download”-tik gaat via onze service. - AI-achtergrondverwijdering, op het standaardpad. Het BiRefNet-model dat Cloudflare’s
cf.image.segmentuitvoert (dezelfde architectuur als remove.bg) heeft een echte GPU nodig om in 1–3 seconden te voltooien. De in-browser-fallback (ISNet via ONNX Runtime + WebAssembly) werkt, duurt 20–40 seconden bij de eerste uitvoering en 2–10 seconden daarna, en produceert een zichtbaar grover uitsnijsel bij haar, bont en fijne randen.
De prijs die wij betalen voor server-side verwerking op die twee paden is één heen-en-terugreis per bewerking. De prijs die wij vermijden door overal anders client-side te blijven (Circle Crop, de Compress-voorvertoning) is de heen-en-terugrijkosten op de onderdelen van de workflow die het snelst itereren.
De pipeline, stap voor stap
1. U selecteert een bestand
Via de bestandskiezer, slepen en neerzetten of plakken geeft de browser JavaScript een
File-object door. JavaScript leest de bytes via FileReader of
Blob.arrayBuffer(). Op geen enkel moment in deze stap wordt het bestand via het
netwerk verzonden, ongeacht welke tool u gebruikt.
2. De browser decodeert de afbeelding
Moderne browsers decoderen JPG, PNG, WebP, GIF en AVIF van nature. Wij gebruiken
createImageBitmap() om de ruwe bytes buiten de hoofdthread om te zetten in een bitmap
waarmee de GPU kan werken. Voor HEIC op browsers die dit niet native decoderen, vallen
wij terug op een WebAssembly-decoder die lokaal in uw browser draait.
3. Het gereedschap doet zijn werk — hier splitsen de paden zich
- Circle Crop. Een Canvas 2D-pixeltransformatie met een cirkelvormig clip-pad. De bitmap wordt getekend in een
<canvas>bij de gekozen rotatie en zoom, het cirkelvormige clip wordt toegepast, en het binnenste van de cirkel wordt teruggelezen alsImageData. Cropper.js verwerkt het interactieve bijsnijdkader. Volledig in uw browser. - Compress — voorvertoning en schuifregelaar. Hercodeer JPG, PNG, WebP of AVIF met
canvas.toBlobzodat de naast-elkaar-voorvertoning bijwerkt terwijl u de kwaliteitsschuifregelaar verplaatst. Volledig in uw browser. Nog geen upload. - Compress — Download. Wanneer u op “Download” tikt, wordt de afbeelding eenmalig verstuurd naar
api.araluma.com(een Fastify-service die draait op een VPS in Duitsland beheerd door Hostinger, Node 24 +sharp 0.34+libvips 8.17, dezelfde C-bibliotheken die Squoosh op zijn serverpad gebruikt). De afbeelding wordt hercodeerd met dezelfde parameters die u in de voorvertoning hebt ingesteld, en de bytes worden gestreamd terug naar uw browser. De service bewaart een tenant-geïsoleerde, content-geadresseerde cache (een hash van de invoerbytes + parameters) met een limiet van 500 MB, zodat het opnieuw downloaden van dezelfde afbeelding met dezelfde instellingen de gecachede bytes afspeelt — de cache is niet geïndexeerd op u, IP-adres of bestandsnaam. Als de service niet bereikbaar is, valt de tool terug op de in-browser-voorvertoning-blob. - Achtergrond verwijderen — standaard cloudpad. De afbeelding wordt eenmalig geüpload naar een Cloudflare Worker (
araluma-bg-remover), tijdelijk opgeslagen in een private R2-bucket (araluma-bg-temp), verwerkt door Cloudflare’scf.image.segment-transformatie die het BiRefNet-model uitvoert op Cloudflare’s edge-GPU’s, en het uitsnijsel wordt gestreamd terug. Het tijdelijke R2-object wordt binnen één uur verwijderd door een R2-levenscyclusregel, ongeacht de uitkomst. Een gemiddelde foto wordt afgerond in 1–3 seconden. Dagelijkse limieten per IP en een uploadlimiet van 5 MB houden de gratis laag houdbaar. - Achtergrond verwijderen — WebAssembly-fallback. Als de Worker niet bereikbaar is (uw netwerk valt weg, u bevindt zich achter een strenge firewall, het dagelijkse quotum is bereikt of het bestand overschrijdt de cloudlimiet van 5 MB), schakelt de tool transparant over naar het ISNet-model dat lokaal in uw browser wordt uitgevoerd via ONNX Runtime Web met WebAssembly. Bij de eerste uitvoering wordt het model van ~80 MB gedownload, wat 20–40 seconden duurt; volgende uitvoeringen duren 2–10 seconden. Geen upload op dit pad — u kunt dit verifiëren in DevTools.
4. U downloadt het resultaat
De uitvoerbitmap wordt gecodeerd in een Blob, ingepakt in een object URL en aangeboden
aan het standaard bestand-opslaan-dialoogvenster van uw browser. Het bestand verschijnt op
uw schijf.
Hoe u het zelf kunt verifiëren
Kies de methode die u verkiest:
Methode 1 — Bekijk het Network-tabblad
- Open Araluma in een nieuw tabblad en open DevTools → Network.
- Gebruik Circle Crop of de Compress-voorvertoning-schuifregelaar. U ziet verzoeken voor HTML/CSS/JS/lettertypen en de relevante WebAssembly-modules bij eerste gebruik. Geen enkel verzoek zal uw afbeeldingsbytes bevatten.
- Gebruik nu Compress → Download of Achtergrond verwijderen. U ziet precies één
POSTnaarapi.araluma.com(Compress) of naar de Worker voor achtergrondverwijdering, met uw afbeelding — en één antwoord met het resultaat. Zweef over een verzoek om de grootte en timing te zien.
De kolom “Initiator” vertelt u welk script elk verzoek heeft geactiveerd, en de kolom “Type” vertelt u wat er is verzonden. Wij verbergen geen van beide.
Methode 2 — Gebruik de tools offline
- Laad een willekeurige Araluma-toolpagina. Gebruik Achtergrond verwijderen eenmalig op een kleine afbeelding zodat het in-browser ISNet-model gecached is.
- Open DevTools → Network → vink Offline aan (of zet Wi-Fi uit).
- Herlaad de pagina; de statische assets zijn gecached, dus deze laadt nog steeds.
- Probeer elke tool:
- Circle Crop en de Compress-voorvertoning blijven werken — zij hadden het netwerk nooit nodig.
- Compress Download valt terug op de in-browser-voorvertoning-blob (iets minder efficiënte codering, maar functioneel).
- Achtergrond verwijderen valt terug op het ISNet WebAssembly-model en werkt zonder enig uitgaand verzoek.
Als de vier tools offline werkten (één enigszins verslechterd, drie identiek), heeft per definitie geen server uw afbeelding gezien.
Wat wij wel — en niet — zien
Op de client-side paden zien wij niets over uw afbeelding. Er is geen verzoek om naar te kijken, geen cache om het in op te slaan, geen logregel om te doorzoeken.
Op de server-side paden:
- Compress Download ziet de afbeeldingsbytes voor de duur van de codering (doorgaans enkele honderden milliseconden), bewaart een content-geadresseerde cache-invoer voor de cache-TTL, en dat is het. De cache is niet geïndexeerd op gebruiker, IP-adres, bestandsnaam of enige andere identificator waarmee wij “uw” afbeeldingen zouden kunnen terugvinden. Wij loggen geen afbeeldingsinhoud. De coderingservice wordt gedeeld tussen dezelfde twee tenants die v1 voor de cutover bediende, met per-tenant CORS, snelheidslimieten en HMAC-ondertekende canonieke URL’s.
- Achtergrond verwijderen ziet de afbeelding voor de duur van de tijdelijke upload en de segmentatie-aanroep (doorgaans 1–3 seconden totaal), waarna de tijdelijke kopie wordt verwijderd door de R2-levenscyclusregel. Wij sturen uw bytes nooit naar een externe modelaanbieder — het BiRefNet-model draait binnen Cloudflare’s eigen infrastructuur, niet via een externe API zoals remove.bg, fal.ai of Replicate.
Op elk pad registreert onze analytics-provider (Cloudflare Web Analytics) geaggregeerde paginaweergavegegevens — URL, land, browserfamilie, Core Web Vitals. Geen cookies, geen persistente identificatoren, niets gekoppeld aan een persoon.
Voor tools die bij 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 iemand het CSS-bestand ophaalt. De module zelf bevat geen informatie over uw afbeelding.
De volledige gegevensinventaris staat in ons privacybeleid.
De technologiestack
Voor de nieuwsgierigen:
- Astro — de static site generator. Elke pagina wordt verzonden als gewone HTML met progressief verbeterde JavaScript-”islands” alleen waar interactieve tools leven.
- Vanilla CSS met custom properties — geen Tailwind, geen CSS-in-JS. Het volledige ontwerpsysteem is een enkel
tokens.css-bestand. canvas.toBlob/<canvas>— codering van JPEG, PNG, WebP en AVIF (browserondersteund) in de Compress-voorvertoning, en alle functies van Circle Crop.- Cropper.js — de interactielaag van het bijsnijdrechthoek.
- ONNX Runtime Web — voert de ISNet WebAssembly-fallback uit voor Achtergrond verwijderen.
- Cloudflare Pages — host de statische build en levert deze vanaf de edge.
- Cloudflare Workers + R2 +
cf.image.segment(BiRefNet) — de standaard pipeline voor achtergrondverwijdering. - Fastify +
sharp 0.34+libvips 8.17op Node 24 — de Compress-downloadservice opapi.araluma.com, op een Hostinger-VPS in Duitsland. - Cloudflare Web Analytics — geaggregeerde, cookievrije paginaweergavetelling.
Browserondersteuning
Alle tools werken op de huidige en vorige versie van Chrome, Firefox, Safari en Edge —
desktop en mobiel. De site gebruikt progressive enhancement: waar een browser een nieuwere
API ondersteunt (bijv. showSaveFilePicker, OffscreenCanvas), gebruiken wij die; waar
niet, vallen wij terug op het oudere equivalent. Er is geen “uw browser wordt niet
ondersteund”-muur.
De enige harde vereisten zijn JavaScript (voor elke tool) en een netwerkverbinding (alleen bij gebruik van Compress Download of het standaard Achtergrond verwijderen-pad — de andere paden draaien volledig offline na de eerste paginaweergave).
Vragen
Iets wat wij niet hebben behandeld? Stuur een e-mail naar support@araluma.com. Technische vragen zijn van harte welkom.