1. Start with the regulation, not the forecast
Before interpreting a gauge, I confirm the current Michigan fishing regulations and the classification of the water I am considering. Michigan trout streams can have different seasons, tackle rules, possession rules, and special regulations. A beautifully cool reading does not make a closed or specially regulated reach fishable.
The Michigan Department of Natural Resources publishes the current fishing regulations and regulation maps. I treat those as the authority and the rest of this framework as planning information.
2. Use water temperature as context, not a magic number
For trout, temperature matters because cold water carries more oxygen and because trout are coldwater fish. But I do not reduce the decision to a universal cutoff copied from the internet. Species, acclimation, time of day, dissolved oxygen, spring influence, recent weather, and how long the water has been warm all matter.
I want to know three things: the current temperature, the daily direction, and whether the stream has been holding warm or cool over several hours or days. A single noon reading tells less than the shape of the curve.
When conditions are warm, I become more conservative. The objective is not simply to find a legal place to catch a trout. It is to avoid adding unnecessary handling stress when the river is already working against the fish.
3. Read flow and temperature together
USGS gauges are most useful when discharge, gauge height, and temperature are read as a package. Rising flow after rain can change clarity, velocity, access, insect activity, and where fish hold. Falling flow after a pulse can be a very different fishing situation even if the cubic-feet-per-second number happens to match a familiar value.
I compare today's hydrograph with the recent trend. Is the river rising sharply, flattening, or steadily falling? Is temperature moving with the flow change? That trend is usually more informative than asking whether the river is simply “high” or “low.”
4. Compare stations instead of treating a river as one place
A river system can change substantially from headwaters to lower main stem. Tributary inputs, groundwater, impoundments, sun exposure, channel width, and distance downstream all matter. On a system such as the Au Sable, a reading at one gauge should not automatically be projected onto every branch and every downstream reach.
When several useful gauges are available, I compare them. The question becomes: where is the system warming fastest, where is flow changing, and which reach is behaving differently from the others?
This is one reason Michigan Trout Report is organized around individual rivers and reaches rather than a single statewide “good fishing” number.
5. Add the weather that created the water
The stream is the accumulated result of recent weather. I look backward as well as forward: overnight lows, cloud cover, recent rainfall, humidity, wind, and the sequence of hot or cool days.
For a summer morning, a cool overnight low after several cloudy days can mean something very different than the same air temperature after a prolonged heat spell. During spring runoff, rain on saturated ground is different from a light shower after a dry week.
The weather forecast is therefore not a replacement for the gauge. It explains why the gauge may move next.
6. Put the number inside the season
Water data becomes more useful when it is combined with what the river is doing biologically. Spring warming, summer terrestrial insects, evening mayfly activity, fall spawning behavior, and seasonal angling pressure all alter the meaning of “good conditions.”
For fly fishing, I also ask whether the conditions support the insects I expect. For spinning, I think about visibility, current seams, depth, and how aggressively a fish may need to move to intercept a lure. The same flow can favor different presentations at different times of year.
7. A practical Au Sable example
Suppose I am deciding between an upper reach and a farther-downstream reach of the Au Sable system. I would first verify current DNR rules for both reaches. Then I would inspect available USGS gauges for temperature and discharge, focusing on the last day or two rather than one instant.
If the lower station is warming faster while the upper system remains cooler and stable, that tells me more than the statewide forecast. If a strong rain pulse is moving through, I look at whether the hydrograph is still climbing. If both temperature and flow are stable, I then use cloud cover, wind, time of day, and the seasonal hatch picture to choose the fishing window.
The result may be “fish the upper water early,” “wait for the river to settle,” or “skip trout today.” A useful data system has to be able to recommend not fishing.
8. The hierarchy I use
- Legal: current DNR rules for the exact water.
- Local: the nearest relevant water-temperature and flow observations.
- Trend: the shape of the last several hours and days.
- System: compare upstream, downstream, branches, and tributary influence.
- Weather: what produced the current water and what may change it.
- Season: trout behavior, insects, light, and angling pressure.
- Judgment: decide whether fishing is worth doing at all.
How the report turns a reading into a rating
The method above is a way to read a river. The software uses a narrower, inspectable process. A conditions label is the report’s interpretation of inputs; it is not a USGS assessment, a catch prediction, or a statement that every reach of a river has been measured.
1. Keep the observation separate from the interpretation
The USGS reader requests discharge, water temperature, gauge height, turbidity, and dissolved oxygen where a station supplies them. Missing values remain missing. Readings older than forty-eight hours are discarded by this implementation. That cutoff is a software freshness limit, not a guarantee that a forty-seven-hour-old reading describes the river now. Stations differ in the sensors they have and in how often those sensors report.
2. Compare flow with the same station’s daily history
The reader requests historical daily discharge percentiles and selects the current month and day. The rating uses the available median, p50, to express current flow as a percentage of that station’s median for the date. It does not compare every river against one statewide flow threshold or assume every gauge has a thirty-year record.
As a calculation example, a discharge of 240 cubic feet per second against a daily median of 200 is 120% of median. Those are hypothetical numbers, not today’s readings. They explain the comparison, not whether a particular reach is safe to wade or likely to produce fish.
3. Apply the conditions rules, then inspect what is missing
The conditions rater combines flow relative to the daily median with temperature categories to choose a label from Prime through Blown Out. Turbidity and oxygen receive separate explanatory labels when those measurements exist. The rules are visible in the code and are planning heuristics, rather than a biological model calibrated to predict catches.
Missing temperature does not necessarily suppress a rating: the current rules can label normal flow Fishing Well with unknown temperature. Missing flow can also leave a temperature-based label. Read the available observations alongside the rating; a favorable label does not establish that temperature, access, clarity, and every other condition have been checked. When the relevant sensor or historical median is unavailable, inspect the station directly and use local judgment.
4. Treat the written brief as a summary of the inputs
The brief generator passes available measurements and the software rating to an AI model. Its instructions require missing temperatures to be acknowledged and prohibit invented conditions. If generation fails, the code falls back to short descriptions built from the supplied values. Instructions and a fallback reduce some failure modes; they do not make every generated sentence a verified observation. Check the underlying values and primary sources before acting on the prose.
These code links preserve the implementation reviewed on October 8, 2026. The current repository shows later changes. This explanation is maintained by Chris Izworski, who builds the report.
Primary sources
I prefer sources that measure the water or publish the rule. These are the starting points behind the interpretation used on Michigan Trout Report:
- Michigan DNR fishing regulations — current statewide and special fishing rules.
- Michigan DNR fishing regulation maps — map-based regulatory context.
- USGS Water Data for the Nation — observed discharge, gauge height, temperature, and other station data where available.
- National Weather Service — official weather forecasts and observations.