Everything the log measures is here to download. One CSV holds every published hike, one row each, in the units the log stores. Each hike page serves its GPS track as a GPX file. Both are licensed CC BY 4.0: use them for anything, name HikeAlong and link back here.
In the Files
What Is Here
One File
The Spreadsheet
One row per published hike, oldest first, with a header row. Values are the numbers the log stores: meters, seconds, Celsius, kilometers per hour and hectopascals, never the rounded imperial figures the pages show. A cell is empty when the value was not measured; nothing is estimated to fill it. Fields are quoted the RFC 4180 way (only when they hold a comma, a quote or a line break, with quotes doubled), lines end in CRLF, and the file is UTF-8. It is rebuilt from the source files every time the site is published, so it always matches the pages.
| Column | Unit | What it holds |
|---|---|---|
date | YYYY-MM-DD | The morning's date, local time (America/New_York). |
trail | slug | The trail's identifier, the last part of its page address: hikealongtours.com/trails/<trail>/. |
trail_name | text | The trail's name as the site prints it. |
distance_m | m | Distance walked, the summed great-circle distance between GPS points. A map estimate on a route drawn after the walk. |
gain_m | m | Elevation gain after the filter named on the hike page. The two methods are not comparable with each other. |
loss_m | m | Elevation loss, same method as the gain. |
moving_time_s | s | Moving time. Any stretch slower than 1 km/h counts as stopped and is dropped. |
elapsed_time_s | s | Start to finish as the watch recorded it, stops included. |
sunrise_local | ISO 8601 with offset | Sunrise at the trail's sunrise spot on that date. |
civil_dawn_local | ISO 8601 with offset | Civil dawn at the same spot. |
sunrise_azimuth_deg | degrees | The sun's compass bearing at sunrise from the same spot, clockwise from north (about 61 in June, 119 in December here). |
temp_c | degrees C | Air temperature at the sunrise hour, from the Open-Meteo archive (2 m above ground). |
cloud_cover_pct | % | Total cloud cover from the model, every layer, as Open-Meteo reports it. |
sky_cover_pct | % | The cloud cover figure the site uses: the low and middle layers combined, 100 * (1 - (1 - low/100) * (1 - mid/100)), rounded. Falls back to cloud_cover_pct when a layer is missing. |
cloud_low_pct | % | Low cloud fraction, the layer that hides a sunrise. |
cloud_mid_pct | % | Middle cloud fraction. |
cloud_high_pct | % | High cloud fraction, the cirrus a sunrise lights up. |
wind_kmh | km/h | Wind speed at 10 m. |
humidity_pct | % | Relative humidity at 2 m. |
pressure_hpa | hPa | Surface pressure at the site, not reduced to sea level. |
color_index | 0 to 100 | Color index of the sunrise photograph that fronts the hike page, version 1 of the formula on the methods page. Empty when the page is fronted by a photograph from later on the trail, which is not a reading of the sunrise sky. |
palette | 5 hex colors, space separated | The five dominant sky colors of that sunrise photograph as #rrggbb, the one covering the most pixels first. Empty when the photograph carries no palette, and when the page is fronted by a photograph from later on the trail. |
has_photo | true or false | Whether the entry has at least one photograph. |
photo_taken_local | ISO 8601 with offset | Capture time of the photograph that fronts the hike page. |
url | URL | The hike's page, where every number above is shown with its method. |
avg_hr | bpm | Average heart rate. Filled only where the entry publishes it; empty otherwise. |
max_hr | bpm | Maximum heart rate, same rule. |
Heart rate is private by default. The avg_hr and max_hr columns are always present so the header never changes, and they are filled only in rows whose entry publishes it (none today). Gain and loss depend on the elevation method named on each hike page, and a route drawn on a map after the walk has map estimates for distance and elevation and no times at all; those rows keep moving_time_s and elapsed_time_s empty.
One File for Scripts
The JSON
The same log as one JSON array, one object per published hike, oldest first, for a script or a page that would rather not parse CSV; the site's own compare page reads it. It carries the main columns of the spreadsheet plus the paths of each morning's photograph and route map on this site, so a page can show them. Numbers are the stored SI values as in the CSV, a value that was not measured is null, the object keys never change, and heart rate is not in the file at all.
| Field | Type | What it holds |
|---|---|---|
slug | string | The hike's identifier: the date and the trail slug, which is also the last part of its page address. |
url | URL | The hike's page, where every number below is shown with its method. |
date | YYYY-MM-DD | The morning's date, local time (America/New_York). |
trail | object | The trail as { slug, name }; the slug is the last part of hikealongtours.com/trails/<slug>/. |
distance_m | number or null | Distance walked in meters, the summed great-circle distance between GPS points. A map estimate on a drawn route. |
gain_m | number or null | Elevation gain in meters after the filter named on the hike page. The two methods are not comparable with each other. |
moving_time_s | number or null | Moving time in seconds. Any stretch slower than 1 km/h counts as stopped and is dropped. Null on a drawn route. |
sunrise_local | ISO 8601 with offset | Sunrise at the trail's sunrise spot on that date. |
sunrise_azimuth_deg | number or null | The sun's compass bearing at sunrise from the same spot, degrees clockwise from north. |
sky | string or null | The sky in one word from the low and middle cloud together: clear, scattered, broken or overcast. |
sky_cover_pct | number or null | The cloud cover figure the site uses, in percent: the low and middle layers combined, 100 * (1 - (1 - low/100) * (1 - mid/100)), rounded. |
cloud_low_pct | number or null | Low cloud fraction in percent, the layer that hides a sunrise. |
cloud_mid_pct | number or null | Middle cloud fraction in percent. |
cloud_high_pct | number or null | High cloud fraction in percent, the cirrus a sunrise lights up. |
temp_c | number or null | Air temperature in degrees Celsius at the sunrise hour, from the Open-Meteo archive (2 m above ground). |
has_photo | boolean | Whether the entry has at least one photograph. |
drawn | boolean | True when the route was drawn on a map after the walk: distance and gain are map estimates and there are no times. |
hero | path or null | The photograph that fronts the hike page, built 960 px wide, as a path on this site. Null when the entry has no photograph. |
hero_alt | string or null | That photograph's alt text. |
map | path or null | The route map as an SVG path on this site. Null when the entry has no track. |
color_index | number or null | Color index of the fronting photograph when it is a sunrise, version 1 of the formula on the methods page; null when the page is fronted by a photograph from later on the trail. |
palette | array of 5 strings | The five dominant sky colors of the fronting sunrise photograph as #rrggbb, the one covering the most pixels first. Present only when that photograph is a sunrise and carries one. |
sun_azimuth_deg | number or null | Where the sun (its disk, or the glow above the treeline) sits in the fronting photograph, as a compass bearing read off the spot's calibrated reference view. Null when the photograph was not taken from a calibrated spot or the sun was not found. |
conditions | array of {text, inferred} or null | Trail conditions lifted verbatim from the morning's notes: the text as written, inferred true when a keyword rather than the spoken cue picked the line. Null when the notes hold none. |
other_years | array of slugs | The nearest morning to this date in each other year of the log, within 14 days, same trail first, oldest year first. |
closest_weather | slug or null | The morning most like this one by low, middle and high cloud, humidity, temperature and day of year, among mornings with a full weather record. |
closest_sky | slug or null | The sunrise morning whose sky palette sits nearest this one's, by the same measure as the hike page's look-alike strip (Lab, weighted by pixel share). |
One File for the Kit
The Gear
Every item on the gear page with its service window and the mornings and miles the log counted inside it, as one JSON array, oldest window first. The numbers are the sums the page shows, meters as everywhere in the data, and nothing is estimated across a gap: a weekend with no morning in the log adds nothing, and the count of those weekends is in the file beside the miles. The buy links are not in the file.
| Field | Type | What it holds |
|---|---|---|
slug | string | The item's id: its folder name in the log's source and its anchor on the gear page. |
url | URL | The item on this site. |
name | string | The item as I call it. |
category | string | One of feet, clothing, carry, drink, light, audio, phone, watch, camera, other. |
in_use_from | YYYY-MM-DD, YYYY-MM or null | The first day it came along. An item worn by the weather may give only the month, or null when nobody recorded it. |
in_use_to | YYYY-MM-DD, YYYY-MM or null | The last day; null while it is current. |
sometimes | boolean | True when it is worn or used by the weather or the walk rather than every morning (the clothing): its mornings and miles are then null, not the whole window. |
replaced_by | slug or null | The item that took over, when one did. |
retire_reason | string or null | A few words on why it retired. |
tested | boolean | True only when a review exists; everything else is used, not tested. |
review_url | URL or null | The review, when tested. |
provided_by | string or null | The brand, when a brand supplied the item. |
mornings | number or null | Logged mornings inside the window; an open window runs to the newest logged morning. Null for an item worn by the weather. |
distance_m | number or null | The sum of those mornings' distances in meters, map estimates included, nothing estimated across a gap. Null for an item worn by the weather. |
weekends | number or null | Saturday and Sunday pairs in the counted span, from the later of the window start and the first logged morning. Null for an item worn by the weather. |
weekends_without_record | number or null | Of those, the ones with no morning in the log. Null for an item worn by the weather. |
One File for the Sightings
The Sightings
Every animal and flower photographed on the walks, one row per photograph, oldest first, as a spreadsheet and as JSON: the species as I identified it and the scientific name the iNaturalist taxonomy gives that name, the morning the photograph was matched to by its clock, the trail, the position along the track at the capture time, the minutes from sunrise and the camera. Coordinates are rounded to three decimals, about 100 m. A sensitive species (a nest, or a taxon iNaturalist obscures) keeps its trail and its month and nothing that places it: no day, no time, no hike, no position, in both files and on every page. Numbers are SI as everywhere in the data, an empty cell or a null is a value that was not measured, and the photographs themselves are not part of the data set.
Download sightings.csv (23 KB) Download sightings.json (60 KB)
| Column | Unit | What it holds |
|---|---|---|
id | slug | The sighting's identifier: the date, the species slug and a counter for that day; for a sensitive species the month, the slug and a counter for that month. |
kind | wildlife or flower | Which log the sighting belongs to. |
species | slug | The species as identified, the last part of its page address: hikealongtours.com/wildlife/<species>/ or /flowers/<species>/. unidentified-wildlife and unidentified-flower carry no identification. |
common_name | text | The species name as the site prints it. |
scientific_name | text | The scientific name from the iNaturalist taxonomy for that common name. Empty when the lookup found no close match. |
taxon_id | integer | The iNaturalist taxon the scientific name came from: https://www.inaturalist.org/taxa/<taxon_id>. |
iconic_group | text | bird, mammal, reptile, amphibian, insect, spider, plant or other, from the same taxonomy. |
sensitive | true or false | True for a species whose position is withheld: a nest, or a taxon iNaturalist obscures. Such a row carries the trail and the month only. |
date | YYYY-MM-DD, or YYYY-MM when sensitive | The day of the sighting, local time (America/New_York); the month alone for a sensitive species. |
taken_local | ISO 8601 with offset | The capture time from the photograph's EXIF. Empty for a sensitive species. |
hike | slug | The morning the sighting was matched to by its clock, hikealongtours.com/hikes/<hike>/. Empty when no logged morning holds the capture time, and for a sensitive species. |
trail | slug | The trail of that morning, hikealongtours.com/trails/<trail>/. |
trail_name | text | The trail's name as the site prints it. |
journey | slug | The trip the sighting belongs to, when it was made on a journey rather than a morning. |
place | text | Where it was seen on that journey, in the journey's own words. Empty for a sensitive species. |
lat | degrees, 3 decimals | Latitude from the photograph's GPS, from the track at the capture time, or supplied by hand (see position_source), rounded to about 100 m. Empty for a sensitive species and when neither was available. |
lon | degrees, 3 decimals | Longitude, same rule. |
position_source | text | How the position was arrived at: exif, the photograph's own GPS; track, the morning's recording at the capture time; spot, a photo spot named by hand, whose surveyed coordinate this is; stated, a coordinate supplied by hand; trail_default, the trail's sunrise spot standing in, which says the trail and nothing about where along it. Empty when there is no position. |
track_distance_m | m | Distance along the matched track at the capture time, interpolated between the trackpoints either side. Empty without a matched recording, and for a sensitive species. |
track_offset_s | s | Seconds after the first trackpoint of the matched recording. Same rule. |
minutes_from_sunrise | min | Minutes after that morning's sunrise; negative is before. Empty without a matched morning, and for a sensitive species. |
young | spots, plumage or beside-adult | Set when a young animal of the year is in the frame (a fawn, a gosling) and says how the photograph shows it: spots, a fawn's juvenile coat; plumage, a bird's down or juvenile feathers; beside-adult, clearly smaller than the adult beside it, a judgment from the frame. Called by hand, never detected. Empty when none was called, which is not a claim that none was there, and for a sensitive species. |
camera | text | The camera from the EXIF. |
lens | text | The lens from the EXIF, when it names one. |
focal_mm | mm | Focal length as recorded. |
focal_eq_mm | mm | Focal length in 35 mm equivalent terms. |
aperture | f-number | Aperture as recorded, f/1.9 style. |
shutter | s | Shutter speed as recorded, 1/120 style. |
iso | ISO | ISO as recorded. |
url | URL | The species page the photograph is on. |
| Field | Type | What it holds |
|---|---|---|
id | string | The sighting's identifier: the date, the species slug and a counter for that day; for a sensitive species the month, the slug and a counter for that month. |
url | URL | The species page the photograph is on. |
kind | string | wildlife or flower. |
species | string | The species slug, the last part of the page address; unidentified-wildlife and unidentified-flower carry no identification. |
common_name | string | The species name as the site prints it. |
scientific_name | string or null | From the iNaturalist taxonomy for that common name; null when the lookup found no close match. |
taxon_id | number or null | The iNaturalist taxon: https://www.inaturalist.org/taxa/<taxon_id>. |
iconic_group | string or null | bird, mammal, reptile, amphibian, insect, spider, plant or other; null for an unidentified sighting. |
sensitive | boolean | True for a species whose position is withheld: a nest, or a taxon iNaturalist obscures. Such an object carries the trail and the month only. |
date | YYYY-MM-DD or YYYY-MM | The day of the sighting, local time; the month alone for a sensitive species. |
taken_local | ISO 8601 with offset or null | The capture time from the EXIF; null for a sensitive species. |
hike | object or null | The matched morning as { slug, url }; null when no logged morning holds the capture time, and for a sensitive species. |
trail | object or null | The trail as { slug, name }. |
journey | object or null | The trip as { slug, url } when the sighting was made on a journey rather than a morning. |
place | string or null | Where on that journey it was seen, in the journey's own words; null for a sensitive species. |
lat | number or null | Latitude to 3 decimals (about 100 m), from the GPS, the track at the capture time, or supplied by hand (see position_source); null for a sensitive species. |
lon | number or null | Longitude, same rule. |
position_source | string or null | How the position was arrived at: exif, track, spot (a named photo spot's surveyed coordinate), stated (supplied by hand) or trail_default (the trail's sunrise spot standing in). Null when there is no position. |
track_distance_m | number or null | Meters along the matched track at the capture time; null without a matched recording, and for a sensitive species. |
track_offset_s | number or null | Seconds after the first trackpoint; same rule. |
minutes_from_sunrise | number or null | Minutes after that morning's sunrise, negative before; null without a matched morning, and for a sensitive species. |
young | string or null | spots, plumage or beside-adult when a young animal of the year is in the frame (a fawn, a gosling), saying how the photograph shows it: a fawn's juvenile coat, a bird's down or juvenile feathers, or clearly smaller than the adult beside it, a judgment from the frame. Called by hand. Null when none was called, which is not a claim that none was there, and for a sensitive species. |
camera | string or null | The camera from the EXIF. |
focal_eq_mm | number or null | Focal length in 35 mm equivalent terms. |
aperture | string or null | Aperture as recorded. |
shutter | string or null | Shutter speed as recorded. |
iso | number or null | ISO as recorded. |
photo | path | The photograph, built 960 px wide, as a path on this site. |
alt | string | That photograph's alt text; for a sensitive species the name and the month only. |
One Per Hike
The GPX Files
Every hike page with a track has a download link under its route map, at /hikes/<id>/track.gpx, where the id is the folder name in the url column: the date and the trail slug. The file is the track as the watch exported it, GPX 1.1 with a latitude, longitude, elevation and UTC timestamp for every point, the numbers untouched. A route drawn on a map after the walk is served the same way and carries no timestamps.
Heart rate is not in the files. The watch writes it into every point as a Garmin TrackPointExtension, and the served copy has that extension and the app's own summary elements removed, leaving only the elements the GPX 1.1 schema defines. An entry that publishes its heart rate (publish_hr in the log's source) serves the export whole instead, extension included, and says so beside its link.
Example: 2026-10-02-stone-mountain-cherokee.gpx (1.4 MB), the October 2, 2026 track, 13,423 points.
Use It
License and Citation
The CSV, the JSON files and the GPX files are licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). Copy them, chart them, publish work built on them, commercially or not; the one condition is credit. Name HikeAlong and link to https://hikealongtours.com/data/ wherever the data appears, and say so if you changed it. The photographs are not part of the data set and are not covered by this license; they remain all rights reserved.
The weather columns come from the Open-Meteo historical archive, itself CC BY 4.0, so work that uses them should credit Open-Meteo as well. Sunrise and civil dawn are computed, not observed. The methods page lists every source and the known limitations.
A suggested citation, with the date of the last morning in the file at the time you took it:
HikeAlong (2026). HikeAlong hiking log, mornings through October 2, 2026 [data set]. https://hikealongtours.com/data/. Licensed CC BY 4.0.
Entries can be corrected after they are published, a trimmed track or a re-fetched weather block for instance, and the files are regenerated every time the site is. If a number matters, take the url column to the hike's page, which shows the method behind it, and check the method changes before comparing across versions.