Privacy Policy
Last updated 25 October 2026.
Happy Light Development ("we", "us") builds cozy little browser tools. This page explains what we collect, why, and what we don't. If a word here is unclear, use our contact form and we'll sort it out with you directly.
Who we are
Happy Light Development, trading as Happy Light Development, Elizabethstraat 8a, 8913 CP Leeuwarden. See our Imprint for full business details.
Your account
Creating an account (at portal.happylight.io) stores your email address and name, and a password, a Google sign-in connection, or both if you link Google to an account you made with a password. If you turn on two-factor authentication, we store the TOTP secret needed to check your codes. We also keep session records (things like device and sign-in time) so we can keep your account secure and sign you in correctly.
Google sign-in and Google Drive
Happy Light uses Google in two optional places. You never need either one: you can make an account with a password, and every app works without Drive.
Signing in with Google
When you choose "Continue with Google" on portal.happylight.io, we ask Google for the openid, email and profile permissions. From Google's answer we keep three things in our account database: your name, your email address (and whether Google has verified it), and your Google account ID, which is how we recognise you the next time you sign in. We use them only to create your account, sign you in and show your name in the apps. We don't store your Google profile picture, and we don't keep any Google access or refresh token: once we have checked who you are, the rest of Google's answer is thrown away. We can't read your Gmail, contacts, calendar or files.
Saving to Google Drive
For subscribers, Journal, Video Maker and Pixel Studio can save your work to your own Google Drive and open it again. When you connect Drive, the app asks Google for the drive.file permission. That only covers files the app itself created in your Drive, in its own folder; it can't see, open or change anything else you keep there. The permission is granted to the app in your browser, the access token stays in your browser's memory and is never saved or sent to us, and your files travel directly between your browser and Google. Our servers only tell the app whether Drive is offered to your account; they never see your files or the token.
What we don't do with Google data
We don't sell it, share it, or transfer it to anyone else. We don't use it for advertising, and we don't use it to train AI models. Nobody at Happy Light reads it, except when you ask us to (for example in a support request), when it's needed for security or to investigate abuse, or when the law requires it.
Happy Light's use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Keeping, deleting and revoking
We keep your account details for as long as you have an account. To delete your account and the Google details stored with it, ask us through our contact form. You can withdraw Happy Light's access at any time on your Google account's permissions page: after that, Google sign-in and Drive stop working for us until you allow them again. Files already saved to your Drive stay yours there.
The contact form
When you message us, we store what you write and a hashed version of your IP address (an HMAC, not the raw address) so we can spot abuse without keeping a readable log of where messages came from. Messages are delivered to us by email through Resend, our transactional email provider.
Payments
Paid plans are handled by Stripe, our payment processor. When you subscribe or manage your plan, you're sent to a checkout or billing page hosted by Stripe, and Stripe collects your card and billing details there — they never pass through our servers, and we never see your full card number. Stripe sends us back what we need to run your plan: your Stripe customer and subscription IDs, which plan you picked, whether it's active, and when it renews or ends. We give Stripe your email address so receipts reach you. Stripe's own handling of your data is described in the Stripe Privacy Policy.
Cookies and local storage
We only use cookies that the site needs to work: to keep you signed in, to protect forms, and to remember a choice you made. There are no advertising, analytics or tracking cookies, and no third-party cookies — every cookie below is set by our own portal at portal.happylight.io. The visit counts described below don't use cookies either. Because none of them track you, we don't show a cookie banner.
Set by the portal, for the portal only
sid— your sign-in session. Up to 30 days, or until you sign out. Can't be read by page scripts.pending— holds a half-finished sign-in while you enter your two-factor code. 5 minutes. Can't be read by page scripts.csrf— a random value that proves a form was sent from our own pages. Deleted when you close your browser. Can't be read by page scripts.theme— the light or dark theme you picked. One year, and only if you pick one. Readable by page scripts; it holds nothing but that choice.fsid— your session on forum.happylight.io, which only that site can see. 14 days, or until you sign out. Can't be read by page scripts.
Shared with every Happy Light site
Our apps live on their own addresses (journal.happylight.io, sandbox.happylight.io and so on), so three small cookies are set on the whole happylight.io domain. Each lasts 12 hours and is removed when you sign out.
hl_gate— tells search.happylight.io that you're signed in and which account its daily search allowance belongs to. It holds your account ID and an expiry time, and nothing else. Can't be read by page scripts.hl_signed_in— the value1, so the apps' menus can say you're signed in instead of offering "Sign in". It identifies nobody.hl_name— your display name (at most 40 characters, never your email address), so the apps can show "Signed in as …". It's readable by Happy Light pages on any happylight.io address, which is exactly what it's for. If your account has no name, this cookie isn't set.
hl_signed_in and hl_name only change what a menu says; they never grant access to anything. Every link in that menu goes back to the portal, which checks your real session.
In your browser's own storage
This site remembers your theme choice under hl-theme in your browser's local storage, and the apps keep your work and settings there too (see below). That data stays on your device and is never sent to us. You can clear cookies at any time in your browser's settings; you'll be signed out and your theme resets. Clearing local storage as well also deletes any work the apps kept only in this browser, so export or sync anything you want to keep first.
What stays in your browser
Journal, Pixel Studio, Sandbox and Triggers are built to work without an account. Your notes, sprites, tests and gesture setups are stored locally in your browser (localStorage or IndexedDB) and are never sent to our servers. If you choose to connect an optional storage provider such as Nextcloud or Google Drive from within an app, that app then talks to the provider you picked directly — we don't see that data either. How Google Drive works in particular is described above.
What we count
There are no ads, no ad networks and no third-party analytics on this site or in the apps. We do keep a few numbers ourselves, so we know which tools and games people actually use:
- Visits. Like most web servers, ours writes a line for every request: the address that was asked for, the time, your IP address, your browser's user agent and the page that linked you here. That log stays on our own server and is cut back to its last 1,000 lines every night. An internal dashboard that only our admins can open turns it into totals per site: page views, which pages, which sites sent people, and roughly which country and city visits come from (looked up on our own server, not sent anywhere). To count unique visitors without knowing who they are, it combines the IP address and user agent with a random value that changes every day and keeps only the result; that value and the day's results are deleted once the day is counted. The dashboard keeps daily totals for 400 days and hourly totals for a year. It never stores your IP address.
- Games played. The Arcade counts how many rounds of each game have been started: one number per game, not tied to anyone. If you're signed in, your best score per game is saved to your account so it can show on the leaderboards.
None of this uses cookies, none of it is sold or shared, and none of it is used for advertising.
Other services some apps load
A few apps load things from other companies' servers. Like any website, those servers then see your IP address:
- The Arcade and Pixel Studio load their fonts from Google Fonts.
- Maps in Data Analytics are drawn with tiles from OpenStreetMap.
- Search sends your query from our server to the search engines it asks.
Where things run
Happy Light is self-hosted on infrastructure we operate ourselves, with regular backups. The counting above happens on that same infrastructure; we don't hand your data to an analytics or ad platform.
Your rights
Under the GDPR, you can ask us to access, correct, export or delete your personal data, or object to how we use it. Reach us through our contact form and we'll act on it as quickly as we can. Deleting your account removes your account data; anything already stored only in your own browser is yours to clear whenever you like.
Children
Happy Light isn't directed at children under 16, and we don't knowingly collect personal data from them.
Changes to this policy
If this policy changes in a way that matters, we'll update the date above and, for significant changes, let account holders know directly.