Skip to content
RovePort My Trip

How we score

A trip page with scores rates its month from 1 to 10 in each aspect, where 10 is best for the visitor. Every score is a fixed formula over official, dated measurements. This page states every formula, band and weight, and the site computes the scores from these same values each time it is built.

Principles

The comfort band (70–86 °F), the deduction slopes, the overall weights, the point values, the crowd bands, the 3-year window, the Good-day rules for air and the 25-mile radius are our own rule, chosen by us. They are not measured data.

The arithmetic

round(x) = ⌊x + 0.5⌋ (round half up)
clamp: to the range 1–10
score = clamp(round(x))

Scores are whole numbers. Workings show each value to two decimals (a ratio or a share to three), or more where fewer would hide which way it rounds; each aspect score is computed from the unrounded values. The overall is computed from the whole-number aspect scores shown on the page, so you can recompute it from the page.

Weather

Inputs: each month's mean daily high temperature and mean monthly precipitation, from one official set of climate normals (long-term averages). We use the national weather service's most recent standard normals where they exist, such as NOAA's 1991–2020 normals for US stations, and otherwise the World Meteorological Organization's World Weather Information Service, which republishes a national service's normals. The normals period must end in 1990 or later, and the page names the station and the period. A trip page uses one station for its weather facts and its score.

T_pen = max(0, (70 − tmax_f) / 4) + max(0, (tmax_f − 86) / 2), at most 6
R_pen = min(4, precip_mm / 50)
weather = clamp(round(10 − T_pen − R_pen))
Weather: mean daily high
Mean daily highDeduction
Below 70 °F1 point per 4 °F below 70 °F
70–86 °F (the comfort band)None
Above 86 °F1 point per 2 °F above 86 °F
Largest deduction6 points
Weather: monthly precipitation
Monthly precipitationDeduction
Each 50 mm (about 2 inches)1 point
Largest deduction4 points

Why precipitation and not rain days: official sources count a rain day at different thresholds, and some publish none, so the counts aren't comparable. Millimetres of precipitation mean the same thing in every source.

Not scored: sunshine and humidity, which sources publish unevenly (where a source publishes them, the page shows them as facts), and hurricane season, which is a risk rather than comfort and stays a sourced fact.

Crowds

Input: one official monthly series for the destination. The highest-ranked series that exists is used, and the page names it (for example "based on monthly hotel guests in Barcelona, INE"). In order of preference:

Crowds: series, in order of preference
RankSeries
1Guests or nights at tourist accommodation in the destination area.
2Visitor arrivals to the destination.
3Passengers at the destination's main airport, all flights, from the operator or the aviation authority. This count includes residents and connecting passengers.
4Hotel occupancy rate.

Airport passenger counts include residents and connecting passengers, not only visitors, and no airport series includes cruise passengers. Where that leaves out a known visitor stream, as it does for Key West, the destination's page says so.

Where an official publisher republishes hotel figures that a company compiles, the page prints the attribution the record states, such as "data compiled by STR, Inc.", beside the series.

x(y,m) is the series' value for month m of year y. r(y,m) is that month's share of its own year's mean, which removes inflation and growth, and r(m) is the median of r(y,m) over the window years. With two years that's their mean, and with one it's the value itself. The median keeps one disrupted year, such as a hurricane, from deciding a month on its own.

The window is the latest calendar years for which the series has all 12 months, up to three of them. The newest must be no older than two years before the build year. With no qualifying year, the aspect is "not measured".

Series geography: we use the smallest published area that contains the destination, in this order: the city or municipality, the metro area, then the region (for example NUTS 2). A national series never qualifies, because national seasonality is a different shape: France's summer visitors crowd the coast, not Paris. The one exception is a destination that is itself the country. A region qualifies only when the city has no series of its own.

r(y,m) = x(y,m) / mean(x(y,1..12)); r(m) = median of r(y,m) over the window years
crowds = clamp(round(10 − 9 × (r(m) − 0.60) / 0.80))

Labels follow the score: Quiet (8–10), Moderate (4–7), Busy (1–3).

Crowds: ratio to the year's monthly average
ScoreRatio to the year's monthly averageLabel
100.6444 or lessQuiet
9more than 0.6444, up to 0.7333Quiet
8more than 0.7333, up to 0.8222Quiet
7more than 0.8222, up to 0.9111Moderate
6more than 0.9111, up to 1.0000Moderate
5more than 1.0000, up to 1.0889Moderate
4more than 1.0889, up to 1.1778Moderate
3more than 1.1778, up to 1.2667Busy
2more than 1.2667, up to 1.3556Busy
1more than 1.3556Busy

The score comes from the formula, not from this table: the table lists the ratios, to four decimals, that give each score.

The score is relative to the destination's own year, so it can't be compared between destinations. The page says so: "compared with the rest of Key West's year". An occupancy rate moves less across the year than a count, so occupancy-based crowd scores bunch near the middle. The page names the measure, so the reader can see why.

Daylight

Input: the destination point, the coordinates the weather source publishes for its station, rounded to two decimals. For every day of the month, in the year the page shows, we compute sunrise and sunset with the NOAA Solar Calculator equations (from Meeus, Astronomical Algorithms), with the sun's centre at a zenith of 90.833°, which allows for refraction and the size of the sun's disc. D is the mean time from sunrise to sunset over the month, in hours.

daylight = clamp(round(1 + 1.5 × (D − 8)))      D in hours
Daylight: mean time from sunrise to sunset
ScoreMean daylight
1less than 8 h 20 min
28 h 20 min to less than 9 h 0 min
39 h 0 min to less than 9 h 40 min
49 h 40 min to less than 10 h 20 min
510 h 20 min to less than 11 h 0 min
611 h 0 min to less than 11 h 40 min
711 h 40 min to less than 12 h 20 min
812 h 20 min to less than 13 h 0 min
913 h 0 min to less than 13 h 40 min
1013 h 40 min or more

We check our code against NOAA's own Solar Calculator code (the US Naval Observatory's service didn't answer us), recorded on 2026-10-17. That confirms we copied NOAA's equations correctly; it doesn't check the equations themselves.

Uniqueness

An event counts for a month when all of these hold:

Not counted: standing programming (weekly markets, nightly shows, permanent exhibitions, regular-season league games other than the NFL international games on the major-sports list below), private or trade-only events, and public holidays with no official public event. An event found anywhere else, such as news, ticket sites or social media, counts only if it's also on a discovery calendar.

uniqueness = min(10, 1 + Σ points)
Uniqueness: points per counted event
TypeDefinitionPoints
SignatureRecurs every year and has its own page on the official tourism board's site3
Major sportsA match, race or final from the major-sports list3
FestivalAny other festival, fair, seasonal market or tournament of 2 days or more2
Single-dayAny other dated public event: a parade, fireworks, a concert, a race or a celebration1

At most 2 events of each type count in a month. A month whose calendars were checked and list no qualifying event scores 1. Every destination is checked against the same three kinds of calendar: its own tourism board's and city's, and the official calendar of each competition below. The competition calendars are the same for every destination, so we check each one once, list every event it dates, and count for each destination the events within 25 miles of its point.

The major-sports list
Competition
Grand Slam tennis
Formula 1 Grand Prix
FIFA World Cup or continental championship matches
Abbott World Marathon Majors and World Athletics Platinum Label road races
Super Bowl
NFL regular-season international games
UEFA club competition finals
Olympic and Paralympic events

A month is measured only when every calendar, the destination's own and each competition's, was checked within 180 days, and the destination's own calendars covered that month when they were checked. If the destination's calendar for next year isn't out yet, the month says "not measured"; it doesn't score 1.

A competition calendar that hasn't published the month yet can only add points, so the month is scored from the other calendars. At the cap of 10 that score is final. Below the cap it is provisional and carries a *, with the calendar still to publish named under the score.

Overall

overall = clamp(round(0.4 × weather + 0.25 × crowds + 0.1 × daylight + 0.25 × uniqueness))
one of crowds, daylight, uniqueness missing: overall* = clamp(round(Σ w × score over the other three / Σ w over the other three))
Overall: weights
AspectWeight
Weather40%
Crowds25%
Daylight10%
Uniqueness25%

With all four aspects measured, the overall is the weighted mean above. When one of crowds, daylight or uniqueness isn't measured, the overall is the weighted mean of the other three, with their weights scaled to add up to 1, and it carries a *. An overall built on a provisional score also carries a *. Without weather, or with two or more aspects missing, the overall's cell shows "–" and the page names what's missing. Air quality is shown on its own and never enters the overall.

Air quality

Input: official monitoring of fine particles (PM2.5) from stations within 25 miles (about 40 km) of the destination point. Only background stations count wherever the publisher classifies station type: traffic and industrial stations are excluded. Where the publisher doesn't classify stations, all of them count. The record lists every station used.

The computation is done outside the site build and recorded per month:

  1. Daily value. A station-day is one monitor on one day. It is valid with at least 18 of 24 hourly values, or with one valid 24-hour sample. The day's value is the mean of the valid station-days.
  2. Good day. A day is Good when its value is 9.0 µg/m³ or less, the top of EPA's 2024 Good category.
  3. Valid month. A month is valid in a year when at least 75% of its days are valid.
  4. Good share. good_share(m) is the number of Good days over the number of valid days, pooled across the window years.

For EPA's data:

air = clamp(round(1 + 9 × good_share(m)))
Air quality: share of measured days in the Good range
ScoreShare of measured days in the Good range
1less than 5.6%
25.6% to less than 16.7%
316.7% to less than 27.8%
427.8% to less than 38.9%
538.9% to less than 50.0%
650.0% to less than 61.1%
761.1% to less than 72.2%
872.2% to less than 83.3%
983.3% to less than 94.4%
1094.4% or more

The score comes from the formula, not from this table: the table's percentages are rounded to one decimal. The page shows the counts, the number of measured days in EPA's Good range for fine particles out of all measured days, not a health judgement.

Why PM2.5 only

EPA publishes a single 24-hour concentration range for its Good category. PM2.5 is also measured at every monitored destination in our coverage check where we could confirm the pollutant: Maui, Orlando, London, and the European Environment Agency's station lists. That breadth is an inference from those few checks, not a survey. Adding ozone would take a new decision record.

Why air quality stays out of the overall

Official monitoring is missing for several destinations, and an overall that folded in a health measure would read as a health verdict.

This is a summary of past measurements, not health advice. For today's air, see AirNow or the local agency. On a trip page, "the local agency" links to the agency that runs the destination's monitors.

Freshness

Every input (the destination point, the weather normals, the crowds series, the air-quality data, every calendar and every event) must have been checked within 180 days of the day the site is built. One that wasn't makes its aspect "not measured" from the next build on, until someone checks it again, and a date in the future never counts. For crowds and air quality, the newest year used must also be no older than two years before the build year. Weather normals are long-term averages by design; for them, the check confirms the source still publishes them.

The word beside each score

Each score carries a word for its band, the same three bands the meter colours show. The word describes the score, not the trip.

The word beside each score
ScoreOverallWeatherCrowdsDaylightUniquenessAir quality
8–10ExcellentIdealQuietLong daysPacked calendarMostly good air
4–7GoodMixedModerateAverageSome eventsMixed
1–3WeakHarshBusyShort daysFew eventsOften poor air

Reading the year at a glance

Year at a glance: cell tints
ScoreTint
8–10Mint
4–7Pale grey
1–3Grey

The number is always printed, so the tint is never the only signal.

The table's columns start at the month the page was built (in UTC) and run twelve months forward, so a calendar month earlier than that shows next year's occurrence, labelled with its year.

The season label and typical weather

Above the scores, a trip page labels its month high season, shoulder season or low season. The label isn't a score and never enters the overall. It reads the same within-year ratios as crowds: each month's value in the crowds series divided by its year's monthly average, the median over the window's years.

The 1.10 and 0.90 cut-offs are our own rule. Where crowds isn't measured, the page shows no label. Beside it, the month's typical weather repeats the weather normals the weather score uses: the average high and low, the month's rain, and the number of days with rain where the source counts them. These are averages, not a forecast.

What we don't score

Method version and changes

This is method version 1.5.0. Any change to a formula, band, weight or point value comes with a new decision record and a new version.

Method changes
VersionDateDecisionChange
1.5.02026-10-19ADR-0024Uniqueness weighs more in the overall: weather 40%, crowds 25%, daylight 10% and uniqueness 25%.
1.4.02026-10-19ADR-0024A season label (high, shoulder or low season, from the crowds series; not a score) and the month's typical weather shown above the scores.
1.3.02026-10-18ADR-0024Season dropped: it measured the same demand as crowds. The overall is weather 50%, crowds 25%, daylight 12.5% and uniqueness 12.5%.
1.2.02026-10-18ADR-0024Uniqueness scored while a major-sports calendar hasn't published the month yet, marked * below the cap; the overall shown with * from four aspects when one other than weather isn't measured.
1.1.02026-10-18ADR-0022Crowds, season and air quality scored; the overall shown where all five of its aspects are measured.
1.0.02026-10-15ADR-0022First published method: weather, daylight and uniqueness, and the rule for the overall.

Report an error

Found a number that doesn't match its source? Email support@roveport.com with the page and the number, and we'll check it against the source.

Contact RovePort