DEV Community

utilvo
utilvo

Posted on

Privacy-Preserving Client-Side Processing: Rethinking Where Web Applications Handle User Data

Privacy-Preserving Client-Side Processing: Rethinking Where Web Applications Handle User Data

Modern web applications have made it remarkably easy to upload a document, image, dataset, or other file and have a remote service process it.

That architecture is convenient, but it introduces an important question:

Does the user's data actually need to leave the device to perform the requested computation?

For many workloads, the answer is not necessarily.

Modern browsers are no longer limited to displaying HTML and executing small JavaScript interactions. They provide increasingly capable execution environments through JavaScript, Web Workers, WebAssembly, browser-native cryptographic APIs, typed binary data structures, and local storage mechanisms.

This creates an alternative architectural model:

Move suitable computation to the client and keep raw input data local whenever the task does not require centralized processing.

I recently explored this model in a research preprint titled:

Privacy-Preserving Client-Side Information Processing: A Browser-Based Architecture for Local Data Analysis and Secure File Handling

The complete research record is available through Zenodo:

DOI: https://doi.org/10.5281/zenodo.22975427


1. The traditional web processing model

A typical online file-processing application follows a relatively simple architecture:

User
  │
  │ Upload file
  ▼
Remote Server
  │
  │ Process file
  ▼
Processed result
  │
  │ Download
  ▼
User
Enter fullscreen mode Exit fullscreen mode

This architecture makes sense when the application requires:

  • centralized databases
  • large server-side computation
  • collaboration
  • synchronization
  • server-managed state
  • specialized infrastructure
  • centralized machine learning models

But it also means the raw input has crossed a trust boundary.

Once a sensitive file is uploaded, the application operator becomes part of the data-processing environment.

Depending on the service, the data may also interact with:

  • server logs
  • temporary storage
  • backups
  • monitoring systems
  • third-party services
  • analytics infrastructure
  • processing queues
  • authentication systems

Even when an organization has strong privacy policies, the fundamental architectural fact remains:

the data was transmitted to another system.


2. What if the browser does the computation?

Consider a different architecture:

User
 │
 │ Select local file
 ▼
Browser
 │
 ├── JavaScript
 ├── Web Worker
 ├── WebAssembly
 ├── Web Cryptography
 └── Local memory
 │
 ▼
Processed result
 │
 ▼
User
Enter fullscreen mode Exit fullscreen mode

The remote server may still deliver:

  • HTML
  • JavaScript
  • CSS
  • WebAssembly modules
  • application assets

But the actual user-provided payload does not necessarily need to be sent to the server.

This distinction is important.

The goal is not:

"The browser is automatically secure."

The goal is:

Design the data flow so that unnecessary transmission of raw user data does not occur.


3. The browser has become a computing environment

Several web platform technologies make this architecture practical.

JavaScript

JavaScript provides the application layer and can directly interact with browser APIs, files, memory buffers, workers, and cryptographic interfaces.

For many workloads, JavaScript alone is sufficient.


Web Workers

Heavy computation can be moved away from the browser's main UI thread using Web Workers.

Conceptually:

Main Thread
     │
     │ task
     ▼
Web Worker
     │
     ├── Parse
     ├── Transform
     ├── Analyze
     └── Generate result
     │
     ▼
Main Thread
Enter fullscreen mode Exit fullscreen mode

This is particularly useful for workloads such as:

  • large document processing
  • image manipulation
  • parsing
  • compression
  • hashing
  • data transformation

The important architectural property is that the worker still executes inside the user's browser environment.


4. WebAssembly changes the computational boundary

WebAssembly makes it possible to execute compiled code inside modern browsers.

This is useful when an application requires computational workloads that are difficult or inefficient to implement purely in JavaScript.

A simplified architecture looks like:

Browser
│
├── JavaScript
│
├── Web Worker
│      │
│      └── WebAssembly
│             │
│             ├── Parsing
│             ├── Transformation
│             └── Computation
│
└── Local result
Enter fullscreen mode Exit fullscreen mode

WebAssembly is particularly interesting for privacy-oriented applications because computation can take place inside the browser rather than automatically requiring a remote processing service.

However, WebAssembly itself is not a privacy guarantee.

The surrounding JavaScript application still controls how data enters and leaves the application.


5. Privacy is a data-flow property

One of the most important conclusions from this architectural model is that privacy should not be reduced to a checkbox saying:

"We don't store your files."

There is a fundamental difference between:

Upload
   ↓
Server
   ↓
Process
   ↓
Delete
Enter fullscreen mode Exit fullscreen mode

and:

File
 ↓
Browser memory
 ↓
Process
 ↓
Result
Enter fullscreen mode Exit fullscreen mode

The first architecture still requires the raw file to cross the network.

The second can avoid that transfer entirely for suitable operations.

Therefore, a more useful question is:

Where does the data physically move during processing?

This leads naturally to the concept of data-flow minimization.


6. A proposed client-side architecture

The research explores an architecture combining several browser-native technologies:

                  USER DEVICE
┌───────────────────────────────────────────────┐
│                                               │
│  ┌─────────────────┐                          │
│  │   Browser UI    │                          │
│  └────────┬────────┘                          │
│           │                                   │
│           ▼                                   │
│  ┌─────────────────┐                          │
│  │  Local File API │                          │
│  └────────┬────────┘                          │
│           │                                   │
│           ▼                                   │
│  ┌─────────────────┐                          │
│  │   Web Worker    │                          │
│  └────────┬────────┘                          │
│           │                                   │
│           ▼                                   │
│  ┌─────────────────┐                          │
│  │   WebAssembly   │                          │
│  │    Processing   │                          │
│  └────────┬────────┘                          │
│           │                                   │
│           ├───────────────┐                   │
│           ▼               ▼                   │
│      Local Result    Web Crypto               │
│                                               │
└───────────────────────────────────────────────┘

                 Network
────────────────────────────────────────────────
          No raw payload required
          for the local-processing path
Enter fullscreen mode Exit fullscreen mode

The architecture can be summarized by four principles.

1. Local execution

Process the input in the browser whenever the workload permits it.

2. Isolated computation

Move computationally intensive tasks into Web Workers.

3. Efficient execution

Use WebAssembly where it provides a meaningful computational advantage.

4. Explicit data-flow boundaries

Treat network transmission as an architectural decision rather than an automatic requirement.


7. Security requires a threat model

There is an important caveat.

Client-side processing does not mean that a browser application is automatically secure.

A realistic threat model still needs to consider:

  • compromised browser environments
  • malicious browser extensions
  • compromised dependencies
  • supply-chain attacks
  • malicious application code
  • operating-system compromise
  • memory disclosure
  • browser vulnerabilities
  • third-party scripts
  • analytics
  • telemetry
  • authentication services
  • synchronization APIs

For example, an application could process a file locally but still send metadata or application events to an analytics endpoint.

Therefore:

Local processing
        ≠
Automatic privacy
Enter fullscreen mode Exit fullscreen mode

A stronger statement is:

Local processing
        +
Controlled network behavior
        +
Auditable code
        +
Appropriate threat model
        =
Stronger privacy architecture
Enter fullscreen mode Exit fullscreen mode

8. Performance: the network can become part of the computation

A major reason to investigate client-side processing is not only privacy.

Network transfer itself introduces latency.

Consider a simplified remote pipeline:

Upload
  +
Server processing
  +
Download
Enter fullscreen mode Exit fullscreen mode

versus:

Local processing
Enter fullscreen mode Exit fullscreen mode

For large files, the transfer component can become significant.

However, performance comparisons must be handled carefully.

The benchmark included with this research models a client-side workflow against a client-to-server-to-client workflow, including an upload/network component.

The benchmark is therefore intended to study the architectural effect of network transfer.

It is not a universal benchmark of all cloud services.

The repository includes the benchmark implementation:

GitHub repository:
https://github.com/utilvo-platform/privacy-preserving-client-side-processing


9. Benchmark results should be interpreted carefully

The research repository currently contains modeled workload comparisons for several file sizes.

The original benchmark table reports substantial latency differences between the modeled remote workflow and the local-processing workflow.

However, these numbers should not be interpreted as:

"Browser processing is always X times faster than cloud processing."

That conclusion would be too broad.

Actual performance depends on:

  • CPU
  • RAM
  • browser
  • WebAssembly engine
  • workload
  • file format
  • network bandwidth
  • network latency
  • server hardware
  • server workload
  • browser memory limits

A better interpretation is:

When a workload can be performed locally, eliminating the network transfer component can materially change the latency characteristics of the application.

This distinction is important for reproducible research.


10. Local processing also has limitations

Client-side computation is not a universal replacement for server-side processing.

Large workloads can encounter:

Memory limits

A browser tab cannot necessarily process arbitrarily large datasets.

CPU limitations

A server may have considerably more computational resources than a user's laptop or mobile device.

Battery consumption

Heavy local computation can consume significant power on mobile devices.

Browser compatibility

Different browsers and devices may expose different performance characteristics.

Application complexity

Some workloads require centralized state or coordination.

Security of delivered code

If the browser receives malicious JavaScript, local processing alone does not protect the user.

These constraints should be part of the architecture rather than hidden behind the phrase "privacy-first."


11. The local-first connection

Client-side processing also connects to a broader software architecture known as local-first software.

Local-first architectures emphasize keeping user data available locally and reducing unnecessary dependence on remote services.

The concept has been discussed in academic software-engineering research, including:

Local-First Software: You Own Your Data, in Spite of the Cloud

Kleppmann et al., 2019.

Research paper:

https://doi.org/10.1145/3359591.3359737

The important distinction is that local-first software and client-side processing are related but not identical concepts.

A local-first application may still synchronize data with remote systems.

Client-side processing specifically concerns where computation or data transformation occurs.


12. The research behind this architecture

The complete research paper associated with this article is:

Privacy-Preserving Client-Side Information Processing: A Browser-Based Architecture for Local Data Analysis and Secure File Handling

Author: Islam Ayoub
Year: 2026
Publication status: Preprint

Zenodo

https://doi.org/10.5281/zenodo.22975427

The Zenodo record describes the work as a preprint and explicitly states that it had not been published in a peer-reviewed journal or conference at the time of deposit.

GitHub — Research implementation

https://github.com/utilvo-platform/privacy-preserving-client-side-processing

The repository contains the research PDF, benchmark implementation, interactive demonstration, and citation metadata.

Figshare

The same research work is also archived on Figshare:

https://doi.org/10.6084/m9.figshare.34003734

Utilvo Research Documentation

https://utilvo.com/research/privacy-preserving-client-side-information-processing


13. Why this architecture matters

The interesting question is not whether browsers can execute computation.

They obviously can.

The more important architectural question is:

Which computations should remain local by default?

For certain applications, sending raw data to a remote server may be an unnecessary architectural choice rather than a technical necessity.

Examples include:

  • PDF manipulation
  • image transformations
  • document parsing
  • hashing
  • local data analysis
  • format conversion
  • metadata extraction
  • some cryptographic operations
  • certain machine-learning workloads

This does not mean that all of these workloads should always be client-side.

Instead, it suggests an architectural decision framework:

Does the task require centralized data?

        │
   ┌────┴────┐
   │         │
  YES        NO
   │         │
Server     Consider
processing  local processing
             │
             ▼
       Evaluate CPU,
       memory, browser,
       security and UX
Enter fullscreen mode Exit fullscreen mode

14. A more precise definition of "privacy-preserving"

One lesson from this research is that privacy claims should describe observable system behavior.

Instead of:

"Your data is 100% private."

A technically meaningful claim would be:

"The application performs the specified processing locally and does not transmit the raw input payload as part of that processing path."

The second statement can potentially be tested.

A developer can inspect:

  • source code
  • browser network requests
  • service workers
  • third-party resources
  • Web Worker communication
  • application APIs

This turns privacy from a marketing statement into something closer to an architectural property that can be investigated.


15. What I am exploring next

The next stage of this research includes several areas:

  • reproducible cross-browser benchmarks
  • mobile-device evaluation
  • memory consumption measurements
  • WebAssembly versus JavaScript performance
  • larger document workloads
  • offline execution
  • dependency and supply-chain analysis
  • network-behavior verification
  • stronger threat modeling
  • reproducible security evaluation

The goal is not to claim that client-side processing solves every privacy problem.

The goal is to better understand when moving computation to the user's device provides a meaningful architectural advantage.


Conclusion

The web application architecture has traditionally been centered around a simple model:

Browser → Server → Browser
Enter fullscreen mode Exit fullscreen mode

Modern browser capabilities make another model increasingly practical:

Browser
   ↓
Local computation
   ↓
Local result
Enter fullscreen mode Exit fullscreen mode

For appropriate workloads, this can reduce unnecessary data transmission, eliminate network transfer from the critical processing path, and give users more direct control over where their data is processed.

But the architecture must be evaluated honestly.

Client-side processing is not synonymous with security.

WebAssembly is not synonymous with privacy.

And "no file upload" is not sufficient evidence that an entire application makes no network requests.

The meaningful engineering objective is more precise:

Minimize unnecessary data movement, make processing boundaries explicit, and verify the resulting data flow against a defined threat model.

That is the architectural direction investigated in this research.


Research & References

Research preprint:
Privacy-Preserving Client-Side Information Processing: A Browser-Based Architecture for Local Data Analysis and Secure File Handling
https://doi.org/10.5281/zenodo.22975427

Research implementation and benchmark:
https://github.com/utilvo-platform/privacy-preserving-client-side-processing

Figshare record:
https://doi.org/10.6084/m9.figshare.34003734

Local-First Software — ACM:
https://doi.org/10.1145/3359591.3359737

WebAssembly specification — W3C:
https://www.w3.org/TR/wasm-core/

Web Workers API — MDN:
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API

Web Cryptography API — W3C:
https://www.w3.org/TR/WebCryptoAPI/

About the author

Islam Ayoub is an independent computer systems researcher and software architect focusing on browser-based computing, WebAssembly, privacy-preserving architectures, and local data processing.

Research presentations and technical slides:

https://speakerdeck.com/islamayoub

Top comments (0)