WhatFishIsThis identifies fish from photos. Your photo is used only to identify the fish, and we do not store your photos. To identify it, the photo is sent to an AI provider (see below). To give everyone 5 free scans a day, we count scans by a keyed hash of your IP address and delete those counts after 2 days. The fish you save to your collection stay only in your browser.
Identifying a fish means an AI model has to look at the photo, so each photo is sent to one of these providers, which process it under their own policies:
Only the photo and a fixed question ("which fish is this?") are sent. Your IP address, scan count and collection are not.
Next to each match we show a reference photo of that fish and a short intro, so you can compare them with your photo.
Under a result we link to the official fishing rules of your US state. To pick the state:
Coordinates stay on your device: they are not sent to us or to anyone else, and they are not stored. To look up the state, your browser downloads a map of state outlines from our site; it sends nothing about where you are. If you picked a state or used "Use my location", your browser remembers only the two-letter state code (for example "NC") in its local storage, so the next photo shows your state's rules. A state read from a photo is not remembered.
When you click a rules link, Google Analytics receives the state code, whether it was the freshwater or saltwater link, and how the state was found (from the photo, your device, the list, or remembered). It never receives the coordinates.
Each visitor gets 5 free scans a day (by UTC day), and up to 20 tries in all. To enforce this without accounts, our server stores:
Counts older than 2 days are deleted automatically, and the one-time codes are deleted after they expire. The hash cannot be turned back into your IP address without our secret key, and we do not combine it with anything else.
When you tap "Save to my collection", the fish's name and a small thumbnail of your photo are stored in your browser's own storage (IndexedDB) on this device. Your collection stays in your browser: it is not uploaded, and we cannot see it. Clearing your browser data, or removing a fish on the collection page, deletes it.
Like any website, the hosting provider that serves this site (Vercel) may automatically record standard request information such as IP address, browser type, the page requested and the time of the request. These logs keep the site running and secure, and are handled under the hosting provider's own privacy policy.
We use Google Analytics to understand how the site is used. It records page views, your approximate location (country or city), browser, operating system and the site that referred you. When you use the tool, it also records counts, such as how many candidates a scan returned, how confident the top one was, whether a second opinion was asked for and how many fish are in your collection. The species found, your photos and file names are never sent.
Google Analytics is provided by Google and processes this data under the Google Privacy Policy. You can see how Google uses data from sites that use its services, and you can opt out with the Google Analytics Opt-out Browser Add-on.
Visitors from the European Economic Area, the United Kingdom and Switzerland are not given analytics cookies by default; only cookieless, anonymous measurements are sent.
Google Analytics sets first-party cookies (named _ga and _ga_*) to tell new visits from returning ones. They contain a random identifier, not your name or photos. You can block or delete them in your browser settings; the site works the same without them. We do not use cookies for advertising.
This site is not directed at children under 13 and does not knowingly collect information from them.
If this policy changes, the updated version will be posted on this page with a new date.
Questions about this policy or your privacy: hello@whatfishisthis.com.
Species confirmation, catch date, water, time zone, measured length and already-kept count are processed locally. The checker does not save or send those inputs. Analytics records only the state code and whether a check returned insufficient information, a release reason or a conditional result.