Privacy
Privacy policy
Last updated 19 August 2026. This describes IdentifyPhoto at identifyphoto.com as it works today — not features we might add later.
Who we are
IdentifyPhoto is the site at identifyphoto.com. We do not list a separate company name or postal address here. For privacy requests, contact IdentifyPhoto through the website (this page and the footer).
What the service does
You can upload a photo to get a visual identification for general photos, household bugs, coins, or antiques. Identification is optional and anonymous. Accounts are optional except when you pay (Featured Ads, homepage or results ads). Results are a hypothesis, not medical, legal, or appraisal advice.
What we collect and why
Identify uploads
When you identify a photo we receive the image, the category you chose (bugs, coins, antiques, or photos), and any keywords you typed. We compress the image in memory, send that JPEG to a vision provider, and return a structured guess. We do not keep the identify photo on disk after the request. We keep a SHA-256 hash of the processed JPEG in an in-memory cache for about 12 hours so the same photo is not billed against the daily cap twice.
Vision providers, in the order the site tries them when API keys are configured: Google Gemini, Anthropic (Claude), OpenAI. Production typically uses Gemini. We do not send identify photos to all three unless earlier providers fail and another key exists.
Legal basis: contract (providing the identification you asked for) and legitimate interest (running the tool, caching, abuse control).
Daily free cap
The published default is 3 identifications per UTC day for visitors who are not signed in. Signed-in accounts get 20 per UTC day (configurable on the server). Anonymous counts use both a visitor cookie (identify_uid) and your IP address, and use the higher of the two. Signed-in counts use your account user id only — not the visitor cookie or IP. Cache hits and local fixture mode do not consume a slot. Counts for the current UTC day are stored in a quota file on the server; that file is rewritten for the current day and older days are dropped.
Legal basis: legitimate interest (fair use and abuse prevention).
Identify logs
Each identify request appends a JSON line: time, IP, category, keywords, image hash, JPEG byte size, success or error, provider and model names, latency, and a short result summary (status, top name, confidence). Not the photo pixels. Logs rotate across 50 files of 2,000 lines each (about 100,000 submissions), then the oldest file is overwritten. There is no separate 90-day delete job.
Legal basis: legitimate interest (debugging, abuse, keeping the service running).
Accounts
Optional sign-in uses self-hosted Supabase GoTrue (Google sign-in and email/password). We receive your email, a user id, and session cookies. Passwords are handled by GoTrue, not stored by IdentifyPhoto as plain text. Google SSO means Google sees that you signed in to this app.
Marketing email is opt-in only. If you tick the box when you create an account, we store marketing_emails: true in your Supabase user metadata. We do not add you to a marketing list if you leave it unchecked. There is no marketing checkbox on sign-in — only on sign-up.
Legal basis: contract (your account) and, for Google sign-in, the steps you take with Google.
Paid features (Stripe)
Featured Ads, homepage left/right ads, identify-results ads, optional solver bounties (Request Community Help Identifying Photo only), and optional hand-crafted ad images are paid through Stripe Checkout. We send Stripe your account email and ids needed to create a customer and a Checkout session. Card details are entered on Stripe’s pages, not on ours. If you set a bounty on a community photo help request, payouts use Stripe Connect Express for the solver. We store Stripe session, customer, and payment-intent ids with the booking.
Legal basis: contract (the purchase) and legal obligation (payment records Stripe holds).
Featured Ads and ads on our server
Paid week photos, captions (what you are looking for, location, hints), guesses (text, display name, account id, email), and ad creatives (image, destination URL, alt text, size, dates, optional craft brief) are stored in server data/ directories. They stay until we delete the files. Runs expire in the product, but the code does not auto-delete the files on a calendar.
Legal basis: contract (showing what you paid to publish) and legitimate interest (operating the feature).
Analytics (optional)
If the operator sets NUXT_PUBLIC_GA_ID, Google Analytics can run — only after you Accept analytics cookies. Reject keeps the site working. We do not load other marketing pixels.
Legal basis: consent.
Fonts and outbound links
The site loads fonts from Google Fonts (a request to Google’s servers; we do not set a font cookie). Identify results may offer Google Images or Google Lens links you can click; we do not send your photo to Google for those unless you choose to.
Processors
- Google (Gemini vision when configured; Google sign-in; Fonts; Analytics only with consent).
- Anthropic and OpenAI — vision fallbacks only if those API keys are set.
- Stripe — Checkout, customers, refunds, Connect payouts.
- Self-hosted Supabase GoTrue — accounts and sessions (cookie prefix
sb-identifyphoto).
We do not use a separate ad network. Homepage and results ads are bookings on this site.
EU/EEA transfers
Vision (Google, and Anthropic or OpenAI if used), Google Fonts/Analytics/sign-in, and Stripe are organisations that typically process data in the United States or other countries outside the EEA. If you identify a photo or pay, that data may leave the EEA. We rely on the processors’ own transfer mechanisms (for example Standard Contractual Clauses they publish) rather than inventing a local-only pipeline that the code does not implement.
How long we keep data
- Identify photos: not stored on our disk after the request; the vision provider has its own retention.
- Identify memory cache: about 12 hours.
- Quota file: the current UTC day.
- Identify logs: until files rotate (see above), not a fixed 90-day policy.
- Accounts: until you ask us to delete them (there is no self-serve delete button in the product yet) or the account is removed on the auth host.
- Week/ad files and JSON indexes: until we delete them from the server.
- Stripe: as long as Stripe keeps payment records.
Your rights
If GDPR or similar law applies, you can ask for access, correction, deletion, restriction, or a copy of personal data we hold, and you can object to legitimate-interest processing. You can withdraw analytics consent any time (Reject, or Cookie settings in the footer). You can complain to your EU/EEA supervisory authority. Contact IdentifyPhoto via this website. We will delete or export what we can identify as yours (account, stored week/ad bookings). Identify logs keyed mainly by IP and image hash may not always map cleanly to a person.
Cookies
Necessary cookies run the site. Analytics cookies wait for Accept. Stripe may set its own cookies on stripe.com when you check out — that is Stripe’s page, not a pixel we load here.
| Name | Purpose | Duration | Type |
|---|---|---|---|
| ip_cookie_consent | Remembers Accept or Reject | 12 months | Necessary |
| identify_uid | Anonymous visitor id for the daily identify cap | 400 days | Necessary |
| sb-identifyphoto | Signed-in session (may be split as .0, .1; PKCE may add -code-verifier) | 8 hours (module default) | Necessary |
| sb-identifyphoto-redirect-path | Where to send you after sign-in (Supabase module) | 8 hours | Necessary |
| sb-redirect-path | Where to send you after Google sign-in (set by our login form) | Session | Necessary |
| _ga, _ga_*, _gid | Google Analytics, only if an analytics id is configured and you Accept | Up to ~2 years (_ga); shorter for _gid | Analytics (optional) |
Cookie settings
Necessary cookies stay on. Analytics cookies load only if you Accept.
Current choice: not set yet.
See also our Terms of service.