~/privacy · nothing is uploaded

Your image stays in your browser

Semaphore is a static image to ASCII converter, built and operated by bobochang. There is no upload endpoint, account system, analytics script or telemetry pipeline behind it.

[ what_happens_to_your_data ]

01 image bytes stay local

Your browser decodes the selected image and draws it to a local canvas. Conversion, previews and exports happen in the tab. The image is never sent to Semaphore or Cloudflare.

02 no tracking state

There are no cookies, tracking pixels, browser analytics or accounts. Preferences that stay on the device: CRT or paper theme, and the last-used tool charset and color mode in localStorage. None of those keys ever hold image bytes.

03 exports are explicit

Text reaches your clipboard only when you choose copy. Files and share cards are created locally and downloaded only when you ask. Closing the tab discards the working image.

[ trust_but_verify ]

The browser policy enforces the promise

inspect content-security-policy – □ ✕

Production pages send connect-src 'none'. That blocks page scripts from opening fetch, XHR or WebSocket connections, including analytics beacons.

what Cloudflare can see

Loading any website requires ordinary HTTP requests for its static HTML, scripts, styles, fonts and sample image. Cloudflare may process standard request metadata and provide the operator with aggregate edge request counts. Those requests do not contain your selected image or converted output, and Semaphore runs no second in-page reporting request.

inspect the implementation

Semaphore is open source. You can inspect the client code and production headers in the GitHub repository, or open your browser's network panel while converting. If anything you observe contradicts this page, open an issue — that is the contact path, and the fix ships in public.

Last updated: September 12, 2026.

Convert locally