Every fishing site says its data is accurate. This is the page where that claim is testable. It lists each figure that failed verification, what it was checked against, what the error would have cost the reader, and when it was fixed. It includes the mistakes that were ours, because a log that only contains other people’s errors is marketing.
Why this page exists
Most of what is published about fishing conditions cannot be checked by the person reading it. You are told a river is running at a certain level and fishing well, and you have no way to know whether anyone looked. So the useful thing a site can offer is not a promise of accuracy: it is a record of what happened when accuracy was tested.
Two rules govern everything below. A reading is never assumed from an identifier — a gauge number is queried and the name it returns is read before it is attached to a water. And a figure with no readable source is not published at all, which is why 3 states have no licence page.
The count
Found in review and fixed, with what each would have cost the reader.
Figures that are incorrect in the compiled data most sites copy.
Where a figure could not be verified, nothing was published.
Each matched by reading the site name the USGS API returns.
Checked against the NOAA CO-OPS metadata API before attaching.
Licence fees taken from the agency that sells the licence.
The log
Newest first. Each entry names the document or endpoint that was read.
Twelve states publish limits without a season, and this site says so rather than inferring one
- Checked against
- The statewide tables of TWRA, KDFWR, MDWFP, AGFC, ODWC, KDWP, SD GFP, ODNR, WVDNR and others
- What was found
- A large group of states regulate fishing entirely through creel and length limits, with no season column at all for the species people search for. The absence of a date in a table is not the same as a published statement that a fishery is open all year.
- What it would have cost the reader
- Painting those months green would claim something the agency has not said. Painting them red would be worse.
- What was done
- Those states are published with their real limits and the calendar band left empty, labelled "not published" rather than open or closed. Where an agency does state a year-round season in words — Wyoming, Nevada, Utah, North Dakota, Colorado — the band is filled and the sentence is quoted.
Massachusetts was withheld for lack of a readable table, then published once it was read properly
- Checked against
- MassWildlife freshwater fishing regulations page and the Division of Marine Fisheries table, first by automated request and then in a real browser
- What was found
- Both agency pages refuse automated requests and the published digest edition returned only navigation, so on the first pass there was nothing to publish. Read the way a person reads them, both tables came out in full — the freshwater season table and the DMF marine table, the latter carrying an explicit rule that any date not listed is closed.
- What it would have cost the reader
- Publishing from the fragments available on the first pass would have produced a table that looked as authoritative as the states read properly. Leaving it withheld permanently would have been wrong in the other direction: the block was on the fetch, not on the data.
- What was done
- Massachusetts stayed unpublished and named in the hub until the source could actually be read, and was then published in full from both agency pages. The lesson recorded: an agency blocking a request is not the same as an agency not publishing, and the two need separating before anything is declared unavailable.
Minnesota’s agency site cannot be read, so the dates came from the statute instead
- Checked against
- Minnesota Statutes 97C.395 against the DNR pages, which return 403 to any automated request
- What was found
- The DNR site is unreadable to us, but the statute itself sets the season: walleye, sauger, northern pike and muskellunge run from "the Saturday two weeks prior to the Saturday of Memorial Day weekend through the last Sunday in February", and for bass "the open season is continuous".
- What it would have cost the reader
- Taking the date from a third-hand summary would have repeated the mistake that put South Carolina’s opener a week late.
- What was done
- Minnesota is sourced to the statute, which is the law that sets the date rather than a page describing it. The computed opener reproduces May 10 in 2025 and May 9 in 2026.
A compiled summary put South Carolina’s shrimp baiting opener on the wrong day
- Checked against
- SCDNR Sea Science shrimp page, which quotes the statute: the season “is set by law to last 60 days and opens at noon on the last Friday on or before September 15”
- What was found
- The summary we were offered gave Friday, September 18, 2026 as the 2026 opening. That cannot be right on its own terms: September 18 is after September 15, so it is not a Friday on or before the 15th. Applying the statute gives Friday, September 11, 2026.
- What it would have cost the reader
- A week late to a 60-day season, and the error was self-evidently wrong to anyone who read the rule it claimed to be quoting.
- What was done
- The opening date is now computed from the statute for whatever year the page is viewed in, instead of being copied. Verified against 2025 as well, which the rule puts on September 12.
A published Michigan season table was showing last year’s dates
- Checked against
- Michigan DNR newsroom release of April 23, 2026 against the season table in the official guide edition
- What was found
- The table gave April 26, May 24, June 7 and June 21 as the openers. Those are the 2025 dates. Michigan writes its openers as weekdays — the last Saturday in April, the Saturday before Memorial Day, the first and third Saturdays in June — so in 2026 they fall on April 25, May 23, June 6 and June 20, which is what the DNR’s own release says.
- What it would have cost the reader
- A day out on the opener, every year, for anyone reading the stale edition. On an opening day that is the whole trip.
- What was done
- Michigan dates are computed from the rule rather than stored. The calculation was checked against both 2025 and 2026 and reproduces each year’s published dates exactly.
Three fisheries have no season date to publish, so none is shown
- Checked against
- WDFW crab seasons page, LDWF shrimp and oyster season pages, SCDNR blue crab rules
- What was found
- Washington sets Puget Sound crab dates each year by marine area and announces them around June and September. Louisiana sets shrimp and public oyster seasons by commission vote. South Carolina regulates recreational crabbing with sizes, pot numbers and bushel limits, and publishes no closed season we could find.
- What it would have cost the reader
- Any fixed window we invented for these would read as authoritative and be wrong, which on a closed fishery means fishing illegally.
- What was done
- The calendar band is left empty for all three and the page says explicitly that the agency has not published dates. Empty is not the same as closed, and the legend distinguishes them.
Hawaii’s page implied a licence is needed for saltwater fishing
- Checked against
- Hawaii DAR licence scope
- What was found
- The page header read “all waters”. Hawaii licences freshwater fishing only and does not licence recreational saltwater fishing at all, which is what almost every visitor is asking about.
- What it would have cost the reader
- Readers would have believed they needed a licence that does not exist.
- What was done
- Header corrected to freshwater and the page now opens by saying salt water needs no licence.
Three states have no page because their fees could not be read
- Checked against
- New Jersey DEP, Mississippi DWFP, Massachusetts
- What was found
- New Jersey blocks automated access and no published source carries its freshwater schedule. Mississippi’s resident table does not load from either source. For Massachusetts only the $10.00 marine permit could be confirmed.
- What it would have cost the reader
- Together these are about 50,000 searches a month we are choosing not to answer.
- What was done
- No page is published for any of the three. The comparison table names them and says why.
Six candidate USGS gauges returned a different river
- Checked against
- USGS Water Services instantaneous-values API, site name field
- What was found
- Gauge 03187500, chosen for the Williams River, reports the Cranberry. 03289000, chosen for Elkhorn Creek, is South Elkhorn, a tributary. 01031500, chosen for Chesuncook Lake, is the Piscataquis. 15302000 is the Nuyakuk, not the Naknek. 01021470 is Libby Brook, not East Grand Lake. 01054200 is the Wild River, not Umbagog.
- What it would have cost the reader
- Each would have shown a live flow from the wrong drainage on a page about a named river, which is worse than showing nothing.
- What was done
- Replaced with the correct gauge where one exists, left with no gauge where it does not.
The same fishery was published twice under two names
- Checked against
- Manual review of the Wyoming water list
- What was found
- Grey Reef and North Platte River (Grey Reef) are the same tailwater, 23 km apart in the data. Different names and a distance over the threshold, so neither the name guard nor the proximity guard saw it.
- What it would have cost the reader
- Two pages competing for the same searches, splitting their own authority.
- What was done
- Merged into the older, indexed slug with a 301 from the other. Sixteen further duplicates found in two earlier audits and redirected the same way.
Three states are listed wrongly in the compiled sources most sites copy
- Checked against
- Each state’s own fee schedule
- What was found
- Oklahoma’s resident annual is listed at $25.00 in compiled sources and search summaries; the ODWC schedule says $31.00. Montana’s non-resident season is listed at $86.00; the FWP 2026 schedule says $100.00 plus two compulsory items, $117.50 in total. Indiana’s resident annual is listed at $17.00; the DNR table says $23.00.
- What it would have cost the reader
- A visitor budgeting for Montana would have been out by more than thirty dollars.
- What was done
- All three taken from the agency schedule. Search summaries are no longer used as a source for any figure.
The licence calculator was showing everybody the over-70 rate
- Checked against
- Washington fee table against what the calculator returned
- What was found
- The calculator picked the cheapest licence matching the filters, so Washington opened at $9.59: the senior resident rate for anglers 70 and over. An adult visitor saw a price they could not buy.
- What it would have cost the reader
- A headline price four times lower than what the user would actually pay.
- What was done
- Concessionary rates are now listed explicitly per state and shown separately as “cheaper if you qualify”. All 46 states re-checked against their standard adult rate.
White text on a white panel in dark mode
- Checked against
- Computed colour of every CSS custom property in both themes
- What was found
- The --paper token was defined only in the light palette, so in dark mode it rendered near-white behind near-white text. It affected thirteen rules already live, including the mobile menu, the AI assistant and the methodology page.
- What it would have cost the reader
- Content invisible to anyone using dark mode.
- What was done
- Token defined for dark; contrast went from unreadable to 12.6:1. Both palettes are now diffed for missing tokens before any CSS ships.
Kaunakakai was carrying a tide station from another island
- Checked against
- NOAA CO-OPS metadata API, station 1615680
- What was found
- Station 1615680 is Kahului, on Maui. It had been attached to Kaunakakai, on Molokai, and labelled as if it were the Molokai station. The real Kaunakakai Harbour station is 1613198.
- What it would have cost the reader
- Tide times off by enough to matter to anyone planning a flats session on the Molokai reef.
- What was done
- Corrected to 1613198 and verified against the metadata API. Every other Hawaii station re-checked the same way.
Four waters were written up about the wrong place
- Checked against
- Water record state and county against the text of each entry
- What was found
- Nelson Lake was written as the Wisconsin flowage when the record is the North Dakota cooling reservoir. Verdigris River was framed as Oklahoma when the record is Kansas. Ouachita River as Arkansas when the record is Louisiana. Broad River as Columbia when the record is Union County.
- What it would have cost the reader
- Four pages describing a different body of water than the one named.
- What was done
- All four rewritten. A state-and-county check against the text is now part of every batch.
Alaska rivers were listing species that do not occur in Alaska
- Checked against
- Species profile assignment against state fisheries distribution
- What was found
- Six Alaska rivers carried profiles that surfaced brown trout, smallmouth bass, rockfish and surfperch. None of those occur in Alaskan rivers. The Kenai and the Russian River had carried it since an early batch.
- What it would have cost the reader
- An angler planning an Alaska trip would have read that the Kenai holds brown trout.
- What was done
- New alaska_river profile built (chinook, rainbow, steelhead) and applied to all six.
The Madison River was serving the Gallatin’s gauge
- Checked against
- USGS gauge 06052500 against 06041000
- What was found
- The Madison page was reading 06052500, which is on the Gallatin. The correct gauge for the Ennis reach is 06041000.
- What it would have cost the reader
- Flow shown for one of the best-known trout rivers in the country was a different river’s flow.
- What was done
- Corrected, and the water’s coordinate moved from Three Forks to the Ennis reach it describes.
Squaw Creek Reservoir had a gauge 60 km away in another drainage
- Checked against
- USGS site metadata
- What was found
- The attached gauge was on Aquilla Creek, a separate drainage about 60 km away.
- What it would have cost the reader
- A plausible-looking live reading with no relationship to the water.
- What was done
- Gauge removed. The page runs without one rather than showing a wrong one.
Twelve western lakes were showing northern pike
- Checked against
- Profile assignment against state fisheries records
- What was found
- Twelve California and Idaho lakes carried a profile listing northern pike, a species absent from those waters.
- What it would have cost the reader
- A target species that is not there.
- What was done
- Moved to a western_two_story profile that matches what those lakes actually hold.
Walker Lake, Nevada, dropped rather than described wrongly
- Checked against
- Nevada Department of Wildlife species records
- What was found
- Its only sport fish is Lahontan cutthroat, which the species system does not model.
- What it would have cost the reader
- Publishing it would have meant assigning a profile that named the wrong fish.
- What was done
- The water was dropped from the site.
How each instrument is checked
| Instrument | Endpoint queried | How identity is confirmed |
|---|---|---|
| USGS Water Services River flow, stage and water temperature | waterservices.usgs.gov/nwis/iv | Every gauge is matched to its water by reading the site name the API returns, never by assuming the number is right. |
| NOAA CO-OPS Tide predictions for coastal waters | api.tidesandcurrents.noaa.gov/api/prod/datagetter | Station identity is confirmed against the CO-OPS metadata API before a station is attached to a water. |
| Open-Meteo Weather, pressure trend, sunrise and sunset | api.open-meteo.com/v1/forecast | Pressure over the previous hours is what drives the frontal read in the report, not the instantaneous value. |
| Solunar calculation Moon phase, transit and the four daily feeding windows | lib/solunar.js | Solunar influence is real but modest, and the report ranks it last of the four inputs rather than leading with it. |
Full detail of the readings and how they become a report is on the methodology page.
Found something wrong?
Tell us and it goes in this log with the date. Write to hola@prqdigital.com with the page and what you believe is wrong. Corrections that change a figure are logged here whether the error was ours or the source’s: the point of the page is that it does not get quietly tidied.
