This page explains what iksi collects when you use it, why, who else handles it, how long it is kept, and how to get it deleted. iksi is a small service run by one person, Andre de Jesus, in the Philippines. Questions go to dejesusandre0226@gmail.com.

The short version

  • You can shorten links without an account. If you sign in, iksi keeps a few details from Google or X, your links and your profile.
  • The address a short link points to is stored encrypted. Clicks are counted by country, device, browser and the site they came from. IP addresses are never stored as they are: clicks have none, and rate limits and reports keep only a keyed hash.
  • Your profile page is public, and so is everything you put on it, including payment QR codes.
  • iksi does not sell personal data, shows no ads and sets no advertising or analytics cookies.
  • Email dejesusandre0226@gmail.com to get a copy of your data, fix it or delete it.

Accounts and sign-in

You sign in with Google or with X. iksi never sees your password for either.

  • Google: iksi stores your Google account ID and your email address, and refreshes the email each time you sign in.
  • X: iksi stores your X account ID and your X username, and refreshes the username each time you sign in.
  • On your first sign-in, your name and the link to your profile picture are copied into your iksi profile. After that they are yours to change, and iksi does not refresh them.

iksi uses the access Google or X gives it once, to read those details, and does not keep it. From Google it asks for your basic profile and email address. From X it asks only to read your account (users.read, plus tweet.read, which X requires for that) and not for offline access, so X never gives it a refresh token. iksi does not read your posts or email, and never posts for you.

iksi also stores when your account was made, the handle you claim (iksi.app/@you) and when you claimed it, and your settings, such as whether custom names go under your handle.

Clicks and visits

When someone opens a short link, iksi records:

  • the time,
  • the country, as a two-letter code (iksi's host works it out from the IP address; iksi receives only the code),
  • the type of device and the browser, worked out from the browser's user agent (the user agent itself is not stored),
  • the host name of the site the visitor came from, like instagram.com, when the browser sends it,
  • whether the click came from an iksi profile page, and which one.

When someone opens a profile page, iksi records the time, the country and the referring site's host name.

No IP address, cookie or visitor ID is stored with clicks or visits, and iksi does not link them to a person. Routing rules look at the visitor's country, device, operating system, referring site and the time, but only to choose where that one request goes.

Link owners see their own click counts in the dashboard. A profile owner can choose to show click counts on their public page.

Profiles

Claiming a handle gives you a public page at www.iksi.app/@handle, and at handle.iksi.app where that is turned on. Everything on it is public: your display name, bio, avatar, background image, colors, the links you add (their titles and short links), click counts if you turn them on, and your payment methods.

The same details are available as public data at /api/@handle and in the page's share image. Profiles with a bio or at least one link are listed in iksi's sitemap so search engines can find them. If a link on your page goes to a well-known social profile (like Instagram or GitHub), that address is included in the page's data for search engines.

Uploaded images. Avatars and backgrounds you upload are converted to WebP at fixed sizes and stored in Cloudflare R2, then served from www.iksi.app/media. The original file and its metadata, such as camera or location details, are not kept. Replacing or removing an image deletes the old files.

Image links. If your avatar is a link to an image elsewhere (such as your Google or X picture, or an address you pasted), visitors' browsers load it from that site, which can see their IP address.

Payment methods

You can add up to 3 payment methods behind a Pay button on your profile. iksi does not process payments; payers pay in their own bank or wallet app.

  • Payment QR codes (like QR Ph). You upload a picture of your code. iksi reads the code and stores only the text inside it. The picture is not stored.
  • That text includes the account name and city, and a personal QR Ph code often includes your mobile number. Anyone who opens Pay on your page sees the account name and bank and gets the full QR code, which they can scan or read. Only add a code you are comfortable making public.
  • Payment links (like PayPal or Wise). iksi stores the link and shows it to anyone who opens Pay.

Reports

Anyone can report a short link at /report, without an account. The form asks for the short link, a reason, optional details (up to 1,000 characters) and an optional email address, used only to reply to you.

iksi stores those with the time and a keyed hash of your IP address (see IP addresses), not the address itself. Only iksi's operator sees reports; the link's owner is not told who reported it. Reports are kept until the reported link is deleted. There is no automatic deletion yet.

API keys and the browser extension

API keys let the iksi browser extension, or your own scripts, shorten links as you. iksi stores a SHA-256 hash of each key, never the key itself, along with its name, its first characters (like iksi_ab12), whether the extension made it, when it was made, when it was last used (to the minute) and when it was revoked. A revoked key stops working, and its record stays.

The extension sends iksi only the address you choose to shorten and your API key, and only when you shorten something. It does not send cookies, page content, your browsing history or other tabs, and it has no analytics. The page title shown in its popup stays on your device. The key is kept in Chrome's synced storage, which Chrome copies to your other browsers when Chrome sync is on. A link shortened with the extension is stored and checked like any other link.

IP addresses

Every request to iksi carries your IP address. This is what iksi does with it:

  • Country. iksi's host works out your country from it. Only the country code is stored, with clicks and profile visits.
  • Rate limits. To stop abuse, iksi counts requests per visitor for some actions: shortening a link, password and one-time link attempts (counted per link), claiming a handle, opening a Pay sheet, the public profile data and sending a report. Each counter is a database record holding the action (for password attempts, the link's name), a keyed hash (HMAC-SHA256) of the IP address, a count and when the count resets. The address itself is never stored. Counter windows last an hour at most, and a daily job deletes each counter once its window has been over for a day, so none is kept more than about two days after its window ends. Counters made before this change held the address itself; they have been deleted, and copies in backups age out within 30 days.
  • Reports. iksi stores a keyed hash (HMAC-SHA256) of the reporter's IP address instead of the address, so it can tell whether several reports came from different people.
  • Hosting. Vercel, iksi's host, sees IP addresses as part of serving every request and handles them under its own privacy policy.

Cookies and local storage

iksi sets these cookies itself:

  • user_session: keeps you signed in. Set when you sign in, lasts 30 days, removed when you sign out. It is HttpOnly, so page scripts cannot read it, and it holds your iksi user ID, an expiry time and a signature.
  • oauth_state and oauth_pkce: protect the sign-in round trip with Google or X. They last 10 minutes and are removed when you come back.
  • login_next: remembers which iksi page to return you to after signing in, for example when connecting the browser extension. HttpOnly, lasts 10 minutes, removed when you come back.

iksi also saves your light or dark theme choice in your browser's local storage, under the name theme. It never leaves your device.

iksi shows no ads and sets no advertising or analytics cookies.

Services that handle data

iksi relies on these services to run. Each handles data only as needed for its part:

  • Vercel hosts the site. The app runs in Singapore, and Vercel sees every request.
  • Supabase hosts the database, in Singapore. It holds the account, link, click, profile and report data described on this page.
  • Cloudflare stores uploaded images (R2) and nightly copies of the database, which are kept for 30 days. Visitor traffic does not go through Cloudflare.
  • GitHub runs the nightly backup job. The database copy passes through a temporary GitHub machine on its way to Cloudflare.
  • Google Safe Browsing receives link destinations to check them for malware and phishing.
  • Google and X handle sign-in.

iksi does not use an analytics or advertising service, and its fonts are served from iksi itself. iksi's operator can see stored data to run the service, handle reports and answer requests.

Your data is stored outside the Philippines, mainly in Singapore. Google, X and the other services may process it in other countries.

How long data is kept

  • Account, handle and profile: until you ask for them to be deleted.
  • Links and their settings: until they are deleted, by you, on request or by moderation. Expired links stay stored.
  • Clicks: as long as the link exists. They are deleted with it.
  • Profile visits: as long as the profile exists.
  • One-time link content: erased when the link is opened, or about a day after it expires unopened.
  • Reports: until the reported link is deleted.
  • API keys: until your account is deleted, revoked ones included.
  • Rate-limit counters: deleted by a daily job once their window has been over for a day, so within about two days.
  • Backups: 30 days. Deleted data can stay in a backup until it ages out.
  • Cookies: 30 days for the session, 10 minutes for the sign-in cookies.

Deleting your data

  • Delete a link in your dashboard: the link, its settings, its clicks, any reports about it and its row on your profile are deleted.
  • Remove a link from your profile: only the row on your page goes. The link and its clicks stay until you delete the link.
  • Remove an image or a payment method: it is deleted from your profile, and an uploaded image's files are deleted from storage.
  • Revoke an API key in your dashboard: it stops working at once.
  • Sign out: the session cookie is removed.

There is no delete-account button yet. To delete your account, email dejesusandre0226@gmail.com with your handle or the email you sign in with. You may be asked to confirm from your account. Your account, handle, profile, uploaded images, API keys and links (with their clicks) will be deleted. Copies in backups age out within 30 days.

Your rights

You can ask iksi to:

  • tell you what data it holds about you, and give you a copy,
  • correct it (most of it you can edit in your dashboard),
  • delete it,
  • stop using it for a purpose you object to.

Email dejesusandre0226@gmail.com. iksi does not sell personal data. Apart from what you make public on your profile, it shares data only with the services listed above.

iksi is run from the Philippines, so the Data Privacy Act of 2012 (Republic Act No. 10173) applies. It gives you rights that include being informed, access, correction, objection, erasure or blocking, and data portability, and you can file a complaint with the National Privacy Commission (privacy.gov.ph) if you think your data was mishandled.

Children

iksi is not meant for children under 13, and does not knowingly collect their data. If you think a child has given iksi personal data, email dejesusandre0226@gmail.com and it will be deleted.

Changes to this policy

When this policy changes, this page is updated along with the date at the top. The version on this page is the one that applies.

Contact

Andre de Jesus runs iksi. For anything about your data or this policy, email dejesusandre0226@gmail.com.