I originally designed the firefly dashboard for myself, not really expecting anyone but my friends and family to find it all that interesting. Happily, it has generated a lot more interest than I originally expected, and I have received a few inquiries about how it works. This page is supposed to tell you how to navigate and use the dashboard to maximize your firefly viewing experience.

How to Choose a Station

The dashboard fetches data from NOAA weather stations, specifically the National Centers for Environmental Information daily temperature summaries. When you find a place you’d like to observe, select the listed weather station that is closest to your observation point, both in proximity and altitude. Altitude is arguably more important, since within a reasonable geographic area it will have a greater effect on the temperature than the latitude.

The first section of the dashboard gives you an overview of the data which is available for the station that you have selected. The available daily summary data from the stations usually lags behind the current date by 2-7 days. The data coverage is the percentage of days from March 1st to the current day which have data available. Due to the lag, it is typically around 90-95% at best. The data should have been processed within the last 24 hours regardless of the last available datapoint from the station. If something has gone wrong with the automated data retrieval or processing, there should be a red or yellow banner at the top with more information. If data for a particular station is unavailable on a certain day, the webpage will attempt to display a cached version of the data from the last successful fetch. Under the data statistics is the mGDD information.

Sidenote – What is mGDD?

mGDD is an acronym for modified Growing Degree Day. I like to think of the mGDD as the total heat energy accumulated thus far in the year. We use this number in agriculture to keep track of crop growth across different climates and growing zones. Corn grown in New England will naturally reach harvestable size later in the season than corn grown in the Ohio River Valley. If you want to compare the two crops while accounting for the differences in climate, you can use a cumulative temperature unit such as mGDD. Like crop growth, the development of fireflies into their adult phase is mediated, in part, by the ambient temperature. This is why Elkmont’s peak display period for Photinus carolinus tends to be a few weeks after Knoxville’s. The higher elevation results in a slower climb of mGDD value, and thus the firefly emergence.

Before we talk about calculating the modified growing degree day, we should probably cover what the normal growing degree day is. Don’t worry if you are not mathematically inclined, the calculation is very simple and the logic behind it is very intuitive. You start with the maximum and minimum temperature for the day and a reference value (usually 50 degrees). Let’s say that the high for the day was 60 degrees and the low was 45 degrees. To calculate the GDD, we would take the average of the high and low, then subtract the reference value. For our hypothetical day, this would be yield 2.5 growing degree days. We would then add this result to the sum all of the days since March 1 of the current year to get our cumulative GDD value.

(Daily Low+Daily High)2Reference Temp.=GDD\frac{(Daily \ Low +Daily \ High)}{2}-Reference \ Temp. = GDD
(45+60)250=2.5 GDD\frac{(45+60)}{2}-50 = 2.5 \ GDD

What’s the deal with the reference temperature and the March 1st start date? The point of the GDD is to model how biological development is linked to temperature. The assumption is that the amount of development taking place before March 1st or when the temperature is under 50 degrees is negligible, so we don’t count any temperature accumulation under 50 degrees toward our total. This is a nice starting point, but the modified growing degree day takes this a bit further.

Calculating mGDD is also very simple. You start with the maximum and minimum temperature for the day as before, but now with two reference values. The minimum reference is usually 50 degrees and the maximum reference is usually 86 degrees. We do the same calculation as before, taking the average and subtracting the minimum reference. But this time, we clip the daily low and daily high to the maximum and minimum reference values.

Max(Daily Low,Refmin)+Min(Daily High,Refmax)2Refmin=mGDD\frac{Max(Daily \ Low, Ref_{min}) +Min(Daily \ High, Ref_{max})}{2}-Ref_{min} = mGDD
(50+60)250=5 mGDD\frac{(50+60)}{2}-50 = 5 \ mGDD

The maximum reference is used because higher temperatures can also negatively affect biological development, so anything above 86 degrees doesn’t add to the total. Since the fireflies develop in the soil and leaf litter, short nightly dips below 50 degrees will be somewhat buffered by the ambient thermal mass, so the mGDD clips any daily lows below the minimum reference.

I initially thought that this should mean the maximum possible daily mGDD value is 18, the result of 50 and 86 as your daily low and high. This led to a few minutes frantically searching for bugs in my code when I noticed the occasional >18 mGDD daily total. However, as you can see from the result space diagram, higher values (up to 36) are possible if the daily low is higher than 50.

Now that you know more than you ever wanted to about corn’s seasonal growing habits, let’s get back to the dashboard. As I was saying, under the data statistics is the mGDD information for your selected station. There are two values displayed in this section. The total confirmed mGDD is the cumulative mGDD calculated from all datapoints received. You may recall that this datapoint tends to lag behind the current date by 3-6 days. To compensate, the data analysis software will fit a second degree polynomial to the confirmed data and estimate the actual mGDD in that location for the current date. If the polynomial fit results in negative curvature, a linear fit is performed instead. Either way, projecting a few days into the future usually gets you pretty close to the current value. To relate the current and predicted mGDDs to dates for fireflies, we turn to the research literature. In the excellent guidebook “Fireflies, Glow Worms, and Lightning Bugs” by Lynn Frierson Faust, mGDD ranges are provided for the display periods of each species of firefly. We use these below to convert our past and future mGDD predictions into dates for each species.

Reading the Forecast

After selecting your station, you should see a number of pastel-colored cards (25, to be exact), each corresponding to a different species of firefly found in Tennessee. The colors of the card correspond to the predicted status of that firefly species today. Grey cards mean the program doesn’t have enough data to make a prediction yet, or the prediction ended up being sometime outside the current year.

Yellow cards indicate the software predicts that the emergence for the species is sometime in the future. It could be one day or four months from now – anytime in the future will show up as a yellow card. The cards have the common names on top in bold, and the latin names for each species in grey italics underneath. There is also a small information icon next to the common name. This isn’t currently used for anything, but in the future I am hoping to include some additional information about the display here (time of night, ideal habitat, flash appearance, etc).

Below the species information are the date ranges, both in terms of mGDD and when the software predicts the selected station will reach that mGDD value. As indicated, this is only an estimation and, depending on how far into the season the target dates are, it can be off by a significant margin. The predictions usually stabilize to within ±7 days of the actual date by 1-2 months before it happens, depending on the species. Check out the more detailed analysis at the bottom of this guide if you are interested in the specifics.

Green cards, as you have likely guessed, indicate that the estimated actual mGDD for the selected station is currently within one of the species’ ranges. Most of the species, like Photinus macdermotti, are single ranges and sometimes a known peak. However, a few have early and late broods which have been listed separately. If these broods don’t overlap, as is the case with Phausis reticulata, you may see that the card goes back to yellow between broods.

At the bottom of the card is a small bar graph which visually shows where you are in the season relative to the predicted ranges. You may notice the bar graphs have two cursors inside. The dotted grey cursor represents the current confirmed mGDD, the dashed black represents the estimated actual mGDD. As I mentioned earlier, the color of the cards is linked to the estimated mGDD, which at this range (<7 days) is a reliable estimate and much closer to the real value than the confirmed values.

Once the estimated mGDD has passed the upper limit for all ranges, the card turns orange. Cards are automatically sorted first by status, then by genus. Any currently active cards will always be at the top of the page, followed by upcoming cards and ending with any past cards. The cards within each section are sorted by genus (Phausis, Photinus, Photuris, and Pyractomena).

Statistics for Nerds

Below the cards are a couple of graphs, mostly because I like to have a visual sanity check that everything is behaving roughly as I would expect it to. 2026 has been an especially odd year, with the early season estimates showing most locations were nearly a month ahead of where they would typically be, even with a reasonable margin for error.

I wanted to see if this was an error in the logic which creates the estimates or a real effect, so I made a graph which plots some statistical references generated by looking at the last 20 years of temperature data. The dashed blue line is the historical median, the dark blue area represents the interquartile range, and the light blue area is the 95% interpercentile range. The solid red line is the the observed mGDD, the dashed red line is the predicted mGDD.

As you can see, the data shows pretty clearly that we have had a genuinely hotter spring than usual, with the observed values falling reasonably far outside even the upper bound of the 95% IPR.

There is a small slider on the upper left corner of the graph that will switch to an older version of the plot, which has no historical reference data plotted. Instead, it has the daily mGDD plotted as a bar chart on the left y-axis and the cumulative confirmed/predicted mGDD on the right y-axis. I like this graph for it’s cleaner look and simplicity, but I also enjoy the historical comparisons provided by the new chart. Hence, the decision to provide them both in an easily switchable fashion.

That’s it! Now you know everything I know about reading the firefly dashboard. I will try to update this page when I add or change major features, but I am anticipating that the core functionality I’ve addressed here will be a part of all future revisions of the dashboard.

In writing this guide, I initially wrote some generalizations about the performance of the dashboard based on my anecdotal observations from a handful of locations and dates. As I was writing through, I decided to do some light data analysis to evaluate the performance in a slightly more quantitative way.

Well, you’ve made it this far down in the page, so you might be just the right kind of crazy to enjoy this too. Join me, won’t you?

So, How Accurate are These Predictions?

That’s a great question! The short answer is I don’t know. I made this program in 2025, mid-way through the firefly season. 2026 will be my first full year of observations. However, we can use the same NOAA weather stations to take a look at how accurate the software’s predictions would have been throughout a past year. I am taking the mGDD ranges listed in the book as perfectly accurate, and evaluating just the accuracy of the program to predict the correct date for a particular mGDD target. For instance, this is the error graph for the start date of the peak display period for Photinus pyralis fireflies using the TYS Airport weather station.

Yikes! At first glance, that’s not what I would hope to see from a “prediction” software. Nonetheless, all data is good data, and this does show some interesting (though slightly disappointing) trends. Firstly, the entire month of March yields nothing of value, with errors ranging from -82 to +104 days. However, after the first 30 days, the error drops sharply, before stabilizing at a more acceptable (but still poor) +20 to + 30 day error for half of April. It then drops again to +7 days of error until the start of May, at which point we have about 1.5 months of low error (±1 day) predictions to enjoy before the actual date which reaches the target mGDD.

Photinus pyralis is a pretty late species, though. How does the program fair with something earlier, like Phausis reticulata?

Interesting, and encouraging! While it is still pretty far off, the errors follow much the same timeline as before, but with lower amplitude. Here, we have a mere -47 to +27 error range. In the month leading up to the actual date, the error peaks at +9 days until about 15 days out, at which point it gradually decreases to +2 days for the remainder of the prediction window. What about an even earlier species, like Pyractomena borealis? Let’s push it even earlier and take a look at a cooler area, like Elkmont in Great Smokey Mountains National Park.

There’s that pattern again! And, again, the magnitude of the errors is lower than before (a range of -33 to +10 days) and the error decreases to +1 by the first few days of April. All of this made me wonder if this pattern could be consistent between seasons. If it is, then I may be able use it to adjust the fit of the polynomial and get a more accurate prediction. Let’s take a look at 10 years of data for Photinus pyralis at Elkmont.

Unfortunately, you can see that the error patterns are very inconsistent between different years. This isn’t entirely unexpected; since the mGDD is most sensitive to small changes earlier in the year, the trajectory of the polynomial we use to predict the target dates will also be most sensitive to these changes. And, of course, these small changes will vary from year to year. We can also see from this graph that 2024 (Mustard Yellow) was actually a pretty good year for accuracy, at least in terms of how long it took to get to lower error (±5 days). 2020 (Light Purple) seems to have been an especially bad year, so I wanted to take a closer look.

Holy error bars! The early season errors are higher than 2024, but there are also 5 prediction errors missing in mid-march. Interestingly, these missing bars aren’t due to missing data. The script that generates these graphs just ignores the result if it is in a different year, so I believe that the error in these missing areas is >300 days. Even more concerning to me than these early swings is the very persistent high magnitude error in May and June. Even the week before the target mGDD, the error is +4 days, which is unusually high. I decided to look at the station data for 2020 compared to the historical statistics from the last 20 years.

As it turns out, we probably didn’t even need the historical statistics – the problem is evident from the 2020 mGDD (Red) plot alone. Around the 2nd week of April, the mGDD started to increase at a slower rate than the start of the year. In the 2nd week of May, the mGDD hardly increased, which introduced a dogleg into the data. The prediction software then tries to fit a second degree polynomial to this data, and the computer gets a better overall fit to the data from March to May than the data from mid-May onward. This means that all the predictions are going to be skewed towards a large positive error until there are enough datapoints after the anomaly to balance the fit for the computer. This is exactly what we see in the prediction error data above. These two anomalies were spaced such that they amplified each other’s effects, making 2020 a particularly bad year for prediction accuracy.

So, how accurate are these predictions? It varies considerably from year to year and species to species, but, based on the bold blue average line in the 10-year error plots, it seems that the predictions become (on average) reliable to within a few days around when they become ~2-4 weeks ahead of the current date. In most cases, the early season prediction errors are smaller in overall magnitude, and the late season predictions appear to overestimate more often than underestimate. I would say that, overall, the system is great for those attempting to determine the most likely species for an observation session in the next few days, but limited utility to those who are trying to plan a trip months in advance. For reference, I’ve included the 10-year error plots for Photinus Carolinus and Phausis reticulata below.

That’s all the performance analysis I’ve done so far. I’ll come back and add more if I get some interesting results. Thank you for coming along for the ride, and I hope you enjoy the dashboard. Happy observing!

Return to Dashboard