<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Dawarich Blog</title>
        <link>https://dawarich.app/blog</link>
        <description>Dawarich Blog</description>
        <lastBuildDate>Sat, 28 Mar 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[What's Inside Your Google Timeline Export (And What You Can Do With It)]]></title>
            <link>https://dawarich.app/blog/whats-inside-your-google-timeline-export</link>
            <guid>https://dawarich.app/blog/whats-inside-your-google-timeline-export</guid>
            <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[So you've exported your Google Timeline data. Maybe you heard about the shutdown and panic-downloaded everything. Maybe you just wanted to see what Google knows about you. Either way, you now have a ZIP file sitting on your desktop, and you're staring at a bunch of JSON thinking "what am I looking at?"]]></description>
            <content:encoded><![CDATA[<p>So you've exported your Google Timeline data. Maybe you heard about the shutdown and panic-downloaded everything. Maybe you just wanted to see what Google knows about you. Either way, you now have a ZIP file sitting on your desktop, and you're staring at a bunch of JSON thinking "what am I looking at?"</p>
<p>I maintain <a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">Dawarich</a>, which imports all of these formats, so I've spent more time than I'd like reading Google's location JSON. Here's everything I know about what's inside your export — every field, every quirk, every format Google has shipped over the years.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="three-formats-one-mess">Three formats, one mess<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#three-formats-one-mess" class="hash-link" aria-label="Direct link to Three formats, one mess" title="Direct link to Three formats, one mess">​</a></h2>
<p>Google has shipped three different export formats over the years. Which one you get depends on when you exported, how you exported, and seemingly what mood their servers were in that day. Some people get one, some get all three. So the first thing is figuring out what you're dealing with.</p>
<p>Here's the quick version:</p>
<ul>
<li><strong>Records.json</strong> — Raw GPS pings. Every location reading your phone ever reported. The oldest and most common format from Google Takeout.</li>
<li><strong>Semantic Location History</strong> — Monthly JSON files with Google's <em>interpretation</em> of your movements. Place visits, activity segments, confidence scores. Structured and readable, but heavily processed.</li>
<li><strong>Phone Takeout format</strong> — The newer format you get when exporting directly from Google Maps on your phone. Contains <code>semanticSegments</code>, <code>rawSignals</code>, and <code>userLocationProfile</code>. Same data, completely different structure. Because consistency is apparently optional at Google.</li>
</ul>
<p>Let's go through each one, field by field.</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="format-1-recordsjson">Format 1: Records.json<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#format-1-recordsjson" class="hash-link" aria-label="Direct link to Format 1: Records.json" title="Direct link to Format 1: Records.json">​</a></h2>
<p>This is the big one. A single JSON file containing every raw GPS ping Google ever collected from your devices. I've seen people with Records.json files north of 500MB, spanning a decade of tracking. It's a flat array of location objects wrapped in a <code>locations</code> key.</p>
<p>Here's what a typical entry looks like:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"locations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"latitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533690550</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"longitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">836950010</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"accuracy"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"altitude"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">150</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"verticalAccuracy"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"heading"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">270</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"velocity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">15</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"source"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WIFI"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"deviceTag"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1184882232</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"platformType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ANDROID"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"batteryCharging"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"timestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-06-15T14:21:29.460Z"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"activity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token property" style="color:#36acaa">"timestampMs"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1718460089460"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token property" style="color:#36acaa">"activity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"STILL"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Now let's go through every field.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="latitudee7-longitudee7">latitudeE7, longitudeE7<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#latitudee7-longitudee7" class="hash-link" aria-label="Direct link to latitudeE7, longitudeE7" title="Direct link to latitudeE7, longitudeE7">​</a></h3>
<p>Your coordinates, stored as integers in "E7" format. Divide by 10,000,000 (10⁷) to get actual decimal degrees.</p>
<p>So <code>latitudeE7: 533690550</code> means latitude <code>53.3690550</code>. And <code>longitudeE7: 836950010</code> means longitude <code>83.6950010</code>.</p>
<p>Why E7? Because integers are faster to process and compare than floating-point numbers, and seven decimal places gives you about 1.1 centimeter precision — way more than any phone GPS can actually deliver. It's an engineering decision that makes sense at Google's scale but makes your export files annoying to read by eye.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="timestamp--timestampms">timestamp / timestampMs<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#timestamp--timestampms" class="hash-link" aria-label="Direct link to timestamp / timestampMs" title="Direct link to timestamp / timestampMs">​</a></h3>
<p>When the location was recorded. Google has used two different formats over the years:</p>
<ul>
<li><strong><code>timestamp</code></strong> — ISO 8601 string like <code>"2024-06-15T14:21:29.460Z"</code>. The newer format. Sometimes it's a Unix timestamp in seconds as a string, sometimes milliseconds as a string. Google is not consistent here.</li>
<li><strong><code>timestampMs</code></strong> — Unix timestamp in milliseconds, stored as a string (not a number, because JavaScript has integer precision issues at these magnitudes). <code>"1718460089460"</code> means June 15, 2024 at 14:21:29 UTC.</li>
</ul>
<p>Older exports tend to have <code>timestampMs</code>. Newer ones have <code>timestamp</code>. Some entries have both.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="accuracy">accuracy<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#accuracy" class="hash-link" aria-label="Direct link to accuracy" title="Direct link to accuracy">​</a></h3>
<p>Horizontal accuracy in meters. How confident the device was about the location reading. Lower is better.</p>
<ul>
<li><code>accuracy: 3-10</code> — GPS lock, outdoors, good conditions. Your reading is within a few meters of reality.</li>
<li><code>accuracy: 15-50</code> — Mixed GPS/WiFi positioning. Good enough for street-level accuracy.</li>
<li><code>accuracy: 100-200</code> — WiFi-only or cell tower positioning. You're probably in the right neighborhood.</li>
<li><code>accuracy: 1000+</code> — Cell tower triangulation only. Could be off by a kilometer. Google still recorded it.</li>
</ul>
<p>This field is important because it tells you how trustworthy each data point is. A point with accuracy of 18,000 meters is essentially useless for precise location tracking — but Google saved it anyway.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="altitude">altitude<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#altitude" class="hash-link" aria-label="Direct link to altitude" title="Direct link to altitude">​</a></h3>
<p>Elevation above sea level in meters, as reported by the device. This comes from the phone's barometer or GPS altitude estimate.</p>
<p>GPS altitude is notoriously inaccurate — it can easily be off by 10-30 meters because GPS satellites are optimized for horizontal positioning. Phone barometers are more accurate for relative changes (like climbing stairs) but need calibration for absolute altitude.</p>
<p>Not every location entry has this field. It depends on whether the device's sensors provided it.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="verticalaccuracy">verticalAccuracy<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#verticalaccuracy" class="hash-link" aria-label="Direct link to verticalAccuracy" title="Direct link to verticalAccuracy">​</a></h3>
<p>The estimated accuracy of the altitude reading, in meters. Same concept as <code>accuracy</code> but for the vertical dimension. If <code>altitude</code> is 150 and <code>verticalAccuracy</code> is 10, the true altitude is likely between 140 and 160 meters.</p>
<p>This field appears less frequently than <code>altitude</code> itself.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="heading">heading<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#heading" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading">​</a></h3>
<p>The direction the device was moving, in degrees from true north (0-360). 0 is north, 90 is east, 180 is south, 270 is west.</p>
<p>Only present when the device was actually moving and had a reliable heading reading. Static readings won't have this field.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="velocity">velocity<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#velocity" class="hash-link" aria-label="Direct link to velocity" title="Direct link to velocity">​</a></h3>
<p>Speed in meters per second at the time of recording. Multiply by 3.6 to get km/h, or by 2.237 for mph.</p>
<p>So <code>velocity: 15</code> means roughly 54 km/h — probably driving in a city. Like <code>heading</code>, this is only present when the device detected movement.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="source">source<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#source" class="hash-link" aria-label="Direct link to source" title="Direct link to source">​</a></h3>
<p>Where the location reading came from. Values I've seen in the wild:</p>
<ul>
<li><code>"GPS"</code> — Satellite positioning. The gold standard for outdoor locations.</li>
<li><code>"WIFI"</code> — WiFi access point triangulation. Common indoors.</li>
<li><code>"CELL"</code> — Cell tower triangulation. Least accurate but works everywhere with signal.</li>
<li><code>"UNKNOWN"</code> — Google doesn't know or won't say. Early exports tend to have a lot of these.</li>
</ul>
<p>This tells you a lot about the quality of individual data points. A <code>GPS</code> reading with <code>accuracy: 5</code> is very reliable. An <code>UNKNOWN</code> reading with <code>accuracy: 18000</code> is barely useful.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="devicetag">deviceTag<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#devicetag" class="hash-link" aria-label="Direct link to deviceTag" title="Direct link to deviceTag">​</a></h3>
<p>A numeric identifier for which device recorded this location. It's a hash, not a human-readable device name. If you used multiple phones over the years, you'll see different <code>deviceTag</code> values.</p>
<p>Google doesn't include a mapping from deviceTag to device names in the export. So if you want to know which device produced which points, you'd have to correlate based on time periods and cross-reference with your account's device history.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="platformtype">platformType<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#platformtype" class="hash-link" aria-label="Direct link to platformType" title="Direct link to platformType">​</a></h3>
<p>The operating system of the device. Values include <code>"ANDROID"</code> and <code>"IOS"</code>. Pretty self-explanatory.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="batterycharging">batteryCharging<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#batterycharging" class="hash-link" aria-label="Direct link to batteryCharging" title="Direct link to batteryCharging">​</a></h3>
<p>A boolean (<code>true</code>/<code>false</code>) indicating whether the device was plugged in when the location was recorded. Might seem like an odd thing to track, but it's useful for Google's algorithms — a phone that's been charging at the same location for 8 hours is probably at home, not in transit.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="activity">activity<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#activity" class="hash-link" aria-label="Direct link to activity" title="Direct link to activity">​</a></h3>
<p>This is the most complex field in Records.json. It's an array of activity recognition snapshots, each with its own timestamp and a list of probable activity types with confidence scores.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token property" style="color:#36acaa">"activity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"timestampMs"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1718460089460"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"activity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"STILL"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"IN_VEHICLE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ON_FOOT"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WALKING"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The <code>type</code> values come from Android's Activity Recognition API:</p>
<ul>
<li><code>STILL</code> — Not moving</li>
<li><code>ON_FOOT</code> — Walking or running (generic)</li>
<li><code>WALKING</code> — Walking specifically</li>
<li><code>RUNNING</code> — Running specifically</li>
<li><code>ON_BICYCLE</code> — Cycling</li>
<li><code>IN_VEHICLE</code> — In a motorized vehicle (car, bus, train — it doesn't distinguish)</li>
<li><code>IN_ROAD_VEHICLE</code> — More specific: in a car/bus</li>
<li><code>IN_RAIL_VEHICLE</code> — On a train or subway</li>
<li><code>TILTING</code> — Device orientation changed</li>
<li><code>UNKNOWN</code> — Couldn't determine</li>
</ul>
<p>The <code>confidence</code> is a percentage (0-100). Multiple activities can have non-zero confidence — the device is essentially saying "I'm 70% sure you're in a vehicle, 20% sure you're on foot, 10% no idea."</p>
<p>The activity timestamp is separate from the location timestamp because activity recognition runs on a different schedule than GPS readings. Sometimes you'll see activity data without a corresponding location update, or vice versa.</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="format-2-semantic-location-history">Format 2: Semantic Location History<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#format-2-semantic-location-history" class="hash-link" aria-label="Direct link to Format 2: Semantic Location History" title="Direct link to Format 2: Semantic Location History">​</a></h2>
<p>These are monthly JSON files, organized in folders by year: <code>Semantic Location History/2024/2024_MARCH.json</code>. Instead of raw GPS pings, these contain Google's <em>interpreted</em> version of your movements — place visits and activity segments.</p>
<p>The top-level structure:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"timelineObjects"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"activitySegment"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> ... </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"placeVisit"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> ... </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"activitySegment"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> ... </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The <code>timelineObjects</code> array alternates between two types: activity segments (you were moving) and place visits (you were stationary at a known location). Let's look at each.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="activitysegment">activitySegment<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#activitysegment" class="hash-link" aria-label="Direct link to activitySegment" title="Direct link to activitySegment">​</a></h3>
<p>An activity segment represents a period of movement from one location to another.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"activitySegment"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"startLocation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"latitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533407440</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"longitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">837026901</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"accuracyMetres"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">25</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"endLocation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"latitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533519706</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"longitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">837596359</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"accuracyMetres"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"duration"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"startTimestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-03-15T07:05:14.222Z"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"endTimestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-03-15T07:11:13.214Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"distance"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3853</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"LOW"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"activities"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"activityType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"IN_VEHICLE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"probability"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"activityType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WALKING"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"probability"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"activityType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"CYCLING"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"probability"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"waypointPath"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"waypoints"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"latE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533410301</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"lngE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">837051010</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"latE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533519706</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"lngE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">837596359</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"source"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"BACKFILLED"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"distanceMeters"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4877.0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"travelMode"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"DRIVE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"editConfirmationStatus"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"NOT_CONFIRMED"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>startLocation / endLocation</strong> — Where the movement began and ended. Same E7 coordinate format as Records.json, with an <code>accuracyMetres</code> field.</p>
<p><strong>duration</strong> — <code>startTimestamp</code> and <code>endTimestamp</code> define the time window. Can be ISO 8601 strings or millisecond timestamps (<code>startTimestampMs</code>), depending on export age.</p>
<p><strong>distance</strong> — Total distance in meters, as estimated by Google.</p>
<p><strong>confidence</strong> — How confident Google is about this segment. Values: <code>HIGH</code>, <code>MEDIUM</code>, <code>LOW</code>. A <code>LOW</code> confidence segment means Google is guessing about your movement. <code>BACKFILLED</code> segments (see <code>waypointPath.source</code>) are particularly unreliable — Google is reconstructing movement it didn't actually track in real time.</p>
<p><strong>activities</strong> — An array of possible transportation modes with probability scores. The <code>activityType</code> values are the same as in Records.json (<code>WALKING</code>, <code>CYCLING</code>, <code>IN_VEHICLE</code>, etc.). The <code>probability</code> values are floats from 0.0 to 1.0. Annoyingly, you'll often see all probabilities at 0.0 — Google knows you moved but can't determine how.</p>
<p><strong>waypointPath</strong> — The actual route taken, as a series of coordinate waypoints.</p>
<ul>
<li><code>waypoints</code> — Array of intermediate positions (note: uses <code>latE7</code>/<code>lngE7</code>, not <code>latitudeE7</code>/<code>longitudeE7</code> — because consistency).</li>
<li><code>source</code> — Where the path data came from. <code>"BACKFILLED"</code> means Google reconstructed it after the fact, not from real-time tracking.</li>
<li><code>distanceMeters</code> — Total path distance.</li>
<li><code>travelMode</code> — Google's best guess: <code>"WALK"</code>, <code>"DRIVE"</code>, <code>"CYCLE"</code>, etc. Note these are different strings from the <code>activityType</code> values — <code>"DRIVE"</code> here vs. <code>"IN_VEHICLE"</code> in activities.</li>
<li><code>confidence</code> — A float from 0.0 to 1.0 for the travel mode classification.</li>
</ul>
<p><strong>editConfirmationStatus</strong> — Whether you manually confirmed or edited this segment in Google Maps. Values: <code>"NOT_CONFIRMED"</code>, <code>"CONFIRMED"</code>. Most entries will be <code>NOT_CONFIRMED</code> because most people never edited their Timeline.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="placevisit">placeVisit<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#placevisit" class="hash-link" aria-label="Direct link to placeVisit" title="Direct link to placeVisit">​</a></h3>
<p>A place visit represents a period where you were stationary at a known location.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"placeVisit"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"location"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"latitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533690550</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"longitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">836950010</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"placeId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ChIJN1t_tDeuEmsRUsoyG83frY4"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"address"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"123 Main Street, Anytown"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Joe's Coffee"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"semanticType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"TYPE_CAFE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"accuracyMetres"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">15</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"duration"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"startTimestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-03-15T07:11:13.214Z"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"endTimestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-03-15T08:25:17.226Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"placeConfidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"HIGH_CONFIDENCE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"otherCandidateLocations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"latitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">533691200</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"longitudeE7"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">836948800</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"placeId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ChIJABC..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"address"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"125 Main Street, Anytown"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Corner Bookshop"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"semanticType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"TYPE_SHOPPING"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"accuracyMetres"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"editConfirmationStatus"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"NOT_CONFIRMED"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>location</strong> — The place Google thinks you visited.</p>
<ul>
<li><code>placeId</code> — A Google Maps place identifier. Useful if you want to look up the place on Google Maps.</li>
<li><code>address</code> — Human-readable address. Not always present.</li>
<li><code>name</code> — Business or place name, if known. Not always present.</li>
<li><code>semanticType</code> — What kind of place it is: <code>"TYPE_CAFE"</code>, <code>"TYPE_HOME"</code>, <code>"TYPE_WORK"</code>, <code>"TYPE_SHOPPING"</code>, etc. Google's classification, not yours.</li>
<li><code>accuracyMetres</code> — How confident Google is about the specific spot within the location.</li>
</ul>
<p><strong>placeConfidence</strong> — Overall confidence that you actually visited this place. Values include <code>"HIGH_CONFIDENCE"</code>, <code>"MEDIUM_CONFIDENCE"</code>, <code>"LOW_CONFIDENCE"</code>.</p>
<p><strong>otherCandidateLocations</strong> — Alternative places Google considered. If you were at an intersection with three coffee shops, this array lists the ones Google <em>didn't</em> pick as the top candidate. Same structure as the main <code>location</code> object. Useful if Google guessed wrong — the real place might be in here.</p>
<p>This is important for importing: if the primary location has no coordinates (it happens), Dawarich falls back to the first candidate in <code>otherCandidateLocations</code>. Better than losing the data point entirely.</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="format-3-phone-takeout">Format 3: Phone Takeout<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#format-3-phone-takeout" class="hash-link" aria-label="Direct link to Format 3: Phone Takeout" title="Direct link to Format 3: Phone Takeout">​</a></h2>
<p>If you exported from the Google Maps app on your phone (Settings → Personal Content → Export Timeline data), you get a completely different JSON structure. The file is usually called <code>location-history.json</code> or <code>Timeline.json</code>.</p>
<p>This format has three main sections: <code>semanticSegments</code>, <code>rawSignals</code>, and <code>userLocationProfile</code>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="semanticsegments">semanticSegments<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#semanticsegments" class="hash-link" aria-label="Direct link to semanticSegments" title="Direct link to semanticSegments">​</a></h3>
<p>Similar concept to Semantic Location History's <code>timelineObjects</code>, but with different field names.</p>
<p><strong>Timeline paths:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"startTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T08:00:00.000+02:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"endTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T10:00:00.000+02:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"timelinePath"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"point"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"50.0506312°, 14.3439906°"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"time"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T08:14:00.000+02:00"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"point"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"50.0506312°, 14.3439906°"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"time"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T08:46:00.000+02:00"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Notice the coordinate format here: <code>"50.0506312°, 14.3439906°"</code> — a string with degree symbols and a comma separator. Not E7 integers or decimal numbers. A formatted string with Unicode degree signs. This is a completely different convention from both Records.json and Semantic Location History.</p>
<p>Some timeline paths also include a <code>durationMinutesOffsetFromStartTime</code> on each point, which lets you calculate the exact timestamp for each waypoint relative to <code>startTime</code>.</p>
<p><strong>Visits:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"startTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T08:13:57.000+02:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"endTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-03T20:10:18.000+02:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"startTimeTimezoneUtcOffsetMinutes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">120</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"endTimeTimezoneUtcOffsetMinutes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">120</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"visit"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"hierarchyLevel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"probability"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.85</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"topCandidate"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"placeId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ChIJN1t_tDeuEmsRUsoyG83frY4"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"semanticType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"UNKNOWN"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"probability"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.45</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"placeLocation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"latLng"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"50.0506312°, 14.3439906°"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>startTimeTimezoneUtcOffsetMinutes</strong> — The timezone offset at the start of the visit, in minutes. <code>120</code> means UTC+2. This is actually useful — it's the first time Google includes timezone info in the export, which means you can reconstruct local time without guessing.</p>
<p><strong>visit.hierarchyLevel</strong> — Nesting level for location hierarchy. <code>0</code> is the top level. I've never seen this go above 0 in practice.</p>
<p><strong>visit.probability</strong> — Confidence that you actually visited this place (0.0 to 1.0).</p>
<p><strong>visit.topCandidate</strong> — The most likely place, with its own probability score, placeId, and location in that string-with-degree-signs format.</p>
<p><strong>Activities in semanticSegments</strong> follow the same pattern but with <code>activity.start.latLng</code> and <code>activity.end.latLng</code> coordinates, plus <code>activity.topCandidate.type</code> for transportation mode (<code>"IN_PASSENGER_VEHICLE"</code>, <code>"WALKING"</code>, <code>"CYCLING"</code>, etc.).</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rawsignals">rawSignals<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#rawsignals" class="hash-link" aria-label="Direct link to rawSignals" title="Direct link to rawSignals">​</a></h3>
<p>This is the stuff most people don't expect to find. Raw sensor data from your device.</p>
<p><strong>Position readings:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"position"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"LatLng"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"48.833657°, 2.256223°"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"accuracyMeters"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">13</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"altitudeMeters"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">90.7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"source"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WIFI"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"timestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-06-06T11:44:37.000+01:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"speedMetersPerSecond"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.07</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>These are raw GPS/WiFi position readings — similar to Records.json entries but in the phone takeout's string coordinate format. Note the field names here: <code>accuracyMeters</code> instead of <code>accuracy</code>, <code>altitudeMeters</code> instead of <code>altitude</code>, <code>speedMetersPerSecond</code> instead of <code>velocity</code>. Same data, different names. Classic Google.</p>
<p><strong>WiFi scan data:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"wifiScan"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"deliveryTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-06-06T11:44:37.000+01:00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"devicesRecords"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"mac"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">70474800562644</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"rawRssi"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-76</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"mac"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">193560579751752</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"rawRssi"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-50</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Yes, Google was recording every WiFi access point your phone could see, with signal strength (RSSI). The <code>mac</code> values are the MAC addresses of nearby routers, stored as integers. This is how WiFi-based positioning works — by matching the set of visible access points against Google's database of known AP locations.</p>
<p>This is probably the most surprising thing in the export for most people. You expected GPS coordinates, not Google to have a log of every WiFi network your phone has ever detected.</p>
<p><strong>Activity recognition records:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"activityRecord"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"probableActivities"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"STILL"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.96</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"IN_VEHICLE"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.01</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ON_FOOT"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.01</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WALKING"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.01</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"timestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-04-26T20:54:38.000+02:00"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Same activity types as Records.json, but confidence values are floats (0.0-1.0) instead of integers (0-100). Because why use the same scale twice.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="userlocationprofile">userLocationProfile<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#userlocationprofile" class="hash-link" aria-label="Direct link to userLocationProfile" title="Direct link to userLocationProfile">​</a></h3>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"userLocationProfile"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"frequentPlaces"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"placeId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ChIJN1t..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"placeLocation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"50.0506312°, 14.3439906°"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"label"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WORK"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"placeId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ChIJABC..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"placeLocation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"48.8336570°, 2.2562230°"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"label"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"HOME"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>A list of places Google has identified as your frequent locations, with labels like <code>"HOME"</code> and <code>"WORK"</code>. This is Google's model of your daily routine, neatly summarized. Most people have 2-5 entries here.</p>
<p>The coordinates here use the same degree-sign string format as the rest of the phone takeout.</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-format-detection-problem">The format detection problem<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#the-format-detection-problem" class="hash-link" aria-label="Direct link to The format detection problem" title="Direct link to The format detection problem">​</a></h2>
<p>So you've unzipped your export and you see some JSON files. Which format are they? Here's how to tell:</p>
<ul>
<li>Top-level key is <code>"locations"</code> with entries containing <code>latitudeE7</code> → <strong>Records.json</strong></li>
<li>Top-level key is <code>"timelineObjects"</code> with <code>activitySegment</code>/<code>placeVisit</code> entries → <strong>Semantic Location History</strong></li>
<li>Top-level key is <code>"semanticSegments"</code> or <code>"rawSignals"</code> → <strong>Phone Takeout</strong></li>
<li>It's an array of objects with <code>visit.topCandidate</code> or <code>activity.start</code> → <strong>Phone Takeout (array variant)</strong></li>
</ul>
<p>Some ZIP exports contain all three. Some contain just one. The Google Takeout web interface tends to give you Records.json and Semantic Location History. The phone export gives you the phone takeout format. Sometimes you get a mix. I've seen exports where some months are in one format and other months in another.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-you-can-actually-do-with-this-data">What you can actually do with this data<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#what-you-can-actually-do-with-this-data" class="hash-link" aria-label="Direct link to What you can actually do with this data" title="Direct link to What you can actually do with this data">​</a></h2>
<p>Staring at JSON isn't particularly useful. Here are some concrete things:</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="visualize-it">Visualize it<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#visualize-it" class="hash-link" aria-label="Direct link to Visualize it" title="Direct link to Visualize it">​</a></h3>
<p>All of these formats can be loaded into the <a href="https://dawarich.app/tools/timeline-visualizer">Google Timeline Visualizer</a> and rendered on an interactive map. It runs entirely in your browser — no server upload. For a Records.json with 600k+ points, expect 20-30 seconds of processing time.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="convert-to-standard-formats">Convert to standard formats<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#convert-to-standard-formats" class="hash-link" aria-label="Direct link to Convert to standard formats" title="Direct link to Convert to standard formats">​</a></h3>
<p>Google's formats are proprietary. If you want your data in GPX, GeoJSON, or KML for use with hiking apps, mapping software, or GIS tools, the <a href="https://dawarich.app/tools/google-timeline-converter">Google Timeline Converter</a> handles all three formats.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="import-into-dawarich">Import into Dawarich<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#import-into-dawarich" class="hash-link" aria-label="Direct link to Import into Dawarich" title="Direct link to Import into Dawarich">​</a></h3>
<p>This is the long-term play. Exporting your data preserves the past, but what about the location data you're generating right now? Google's Timeline was useful because it ran continuously in the background. Without it, that data just stops.</p>
<p>Dawarich imports all three Google formats — Records.json, Semantic Location History, and the phone takeout format. You bring your historical data, then set up continuous tracking going forward using OwnTracks or Overland on your phone. All the activity types, waypoints, accuracy data, and place visits get preserved.</p>
<p>The difference from Google? Your data stays on your server. No one's mining it for ads, no one's going to randomly deprecate the feature, and you get proper <a href="https://dawarich.app/statistics">statistics</a>, <a href="https://dawarich.app/trips">trip detection</a>, and a <a href="https://dawarich.app/interactive-map">map</a> that actually works on the web — unlike Google's new mobile-only Timeline.</p>
<p>Either self-host it or use <a href="https://my.dawarich.app/users/sign_in?utm_source=blog&amp;utm_medium=post-cta&amp;utm_campaign=whats-inside-your-google-timeline-export" target="_blank" rel="noopener noreferrer">Dawarich Cloud</a> if you don't want to manage a server. 7-day free trial, no credit card required.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="export-your-data-now">Export your data now<a href="https://dawarich.app/blog/whats-inside-your-google-timeline-export#export-your-data-now" class="hash-link" aria-label="Direct link to Export your data now" title="Direct link to Export your data now">​</a></h2>
<p>If you haven't done it yet: do it today. Google has already lost data for some users during the Timeline transition, and the longer you wait, the less data you'll have.</p>
<ol>
<li><strong>Google Takeout</strong>: Go to <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">takeout.google.com</a>, select "Location History (Timeline)", download the archive</li>
<li><strong>Phone export</strong>: Google Maps → Settings → Personal Content → Export Timeline data</li>
<li>Unzip it, look at what you got</li>
<li>Import it somewhere you control, or at least keep the files backed up</li>
</ol>
<p>Your location history is years of your life, compressed into JSON. It's worth understanding what's in there, and it's worth keeping.</p>]]></content:encoded>
            <category>Guides</category>
            <category>google-timeline</category>
        </item>
        <item>
            <title><![CDATA[Best Google Timeline Alternatives in 2026 (Ranked)]]></title>
            <link>https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked</link>
            <guid>https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked</guid>
            <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Google Timeline is dead. Here are the best alternatives for tracking your location history in 2026 — ranked by privacy, features, and how well they actually replace what Google killed.]]></description>
            <content:encoded><![CDATA[<p>Google Timeline is, for most practical purposes, dead. The web version is gone, the data lives on your phone now, and people are still discovering that years of their location history vanished in the transition. If you're reading this, you probably already know all that.</p>
<p>So what are the actual options in 2026? I went through the most popular alternatives, ranked them by how well they replace what Google Timeline used to do, and tried to be honest about the trade-offs — including the ones that apply to my own project.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-dawarich">1. Dawarich<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#1-dawarich" class="hash-link" aria-label="Direct link to 1. Dawarich" title="Direct link to 1. Dawarich">​</a></h2>
<p>Yeah, I'm putting my own project first. I built it, I'm biased, deal with it.</p>
<p>Dawarich is a self-hosted, open-source location history tracker. You run it on your own server (or use <a href="https://my.dawarich.app/users/sign_in?utm_source=blog&amp;utm_medium=post-cta&amp;utm_campaign=best-google-timeline-alternatives-in-2026-ranked" target="_blank" rel="noopener noreferrer">Dawarich Cloud</a> if you don't want to bother with Docker), and it stores all your location data in your own database. Nobody else sees it.</p>
<p>What makes it a solid Timeline replacement:</p>
<ul>
<li>Imports all Google Timeline export formats — Records.json, Semantic Location History, phone exports, all of it</li>
<li><a href="https://dawarich.app/interactive-map">Interactive map</a> with your full history, filterable by date</li>
<li><a href="https://dawarich.app/trips">Trips</a> (manual creation from your tracked points) and <a href="https://dawarich.app/statistics">statistics</a> (distance, countries visited, etc.)</li>
<li>Supports GPX, GeoJSON, KML, and a bunch of other formats via the <a href="https://dawarich.app/import-export">import/export system</a></li>
<li>Real-time tracking from OwnTracks, Overland, or the Dawarich mobile apps</li>
<li>Photo integration with Immich and PhotoPrism (it pulls geodata from your photo library, not the other way around)</li>
</ul>
<p>The downsides: you need to host it yourself or pay for Cloud (starting at €50/yr for Lite, or €120/yr / €18/mo for the full plan, 7-day free trial). The self-hosted setup requires Docker and a bit of patience. It's not a "download from the App Store and forget" kind of thing.</p>
<p>If you're coming from Google and just want to see your exported data on a map without committing to anything, try the free <a href="https://dawarich.app/tools/timeline-visualizer">Timeline Visualizer</a> first. It runs entirely in your browser, nothing gets uploaded anywhere.</p>
<p>For a more detailed comparison: <a href="https://dawarich.app/docs/comparisons/vs-google-timeline">Dawarich vs Google Timeline</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-owntracks">2. OwnTracks<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#2-owntracks" class="hash-link" aria-label="Direct link to 2. OwnTracks" title="Direct link to 2. OwnTracks">​</a></h2>
<p>OwnTracks is the OG of self-hosted location tracking. It's been around forever, it's open source, and it does one thing well: recording where you are and sending that data to your own server.</p>
<p>The good:</p>
<ul>
<li>Mature, well-tested mobile apps (iOS and Android)</li>
<li>MQTT or HTTP — your choice</li>
<li>Very lightweight on the server side</li>
<li>Large community</li>
</ul>
<p>The not-so-good:</p>
<ul>
<li>No built-in web UI for viewing your history. You get the data, but visualizing it is a separate problem.</li>
<li>No import from Google Timeline out of the box</li>
<li>The Recorder component stores data but doesn't do much with it</li>
<li>If you want maps, statistics, trips — you need to build that yourself or use something else as a frontend</li>
</ul>
<p>OwnTracks is great as a <em>data source</em>. Dawarich actually supports OwnTracks as a tracking app, so you can use OwnTracks on your phone and Dawarich as the backend with the nice UI. Best of both worlds. For more on how they compare: <a href="https://dawarich.app/docs/comparisons/vs-owntracks">Dawarich vs OwnTracks</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-traccar">3. Traccar<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#3-traccar" class="hash-link" aria-label="Direct link to 3. Traccar" title="Direct link to 3. Traccar">​</a></h2>
<p>Traccar started as a GPS fleet tracking platform, but a lot of self-hosters use it for personal location tracking too.</p>
<p>Strengths:</p>
<ul>
<li>Supports a ridiculous number of GPS devices and protocols</li>
<li>Has a decent web interface with real-time tracking</li>
<li>Self-hosted, open source</li>
<li>Active development</li>
</ul>
<p>Weaknesses:</p>
<ul>
<li>The UI is very much "fleet management" — it works, but it feels like you're monitoring delivery trucks</li>
<li>No Google Timeline import</li>
<li>History browsing is functional but bare-bones compared to what Timeline offered</li>
<li>It's designed for tracking <em>assets</em>, not for "where have I been over the last 5 years"</li>
</ul>
<p>If you already have Traccar running for other reasons, it can work as a Timeline replacement in a pinch. But it wasn't built for personal location history and it shows.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-strava--komoot--other-activity-trackers">4. Strava / Komoot / Other Activity Trackers<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#4-strava--komoot--other-activity-trackers" class="hash-link" aria-label="Direct link to 4. Strava / Komoot / Other Activity Trackers" title="Direct link to 4. Strava / Komoot / Other Activity Trackers">​</a></h2>
<p>These aren't really Timeline alternatives, but I keep seeing them recommended, so let's be clear about what they are.</p>
<p>Strava and Komoot track your <em>activities</em> — runs, bike rides, hikes. They're excellent at that. But they don't do continuous background location tracking. You have to manually start and stop recording. Nobody is going to hit "Start Activity" every time they leave the house.</p>
<p>They're great for what they do. They're just not a replacement for always-on location history. If you only care about tracking workouts and outdoor activities, sure, use them. If you want to know where you had lunch three Tuesdays ago, they won't help.</p>
<p>For a deeper look at the Strava comparison specifically: <a href="https://dawarich.app/docs/comparisons/vs-strava">Dawarich vs Strava</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-arc--life360">5. Arc / Life360<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#5-arc--life360" class="hash-link" aria-label="Direct link to 5. Arc / Life360" title="Direct link to 5. Arc / Life360">​</a></h2>
<p>Arc was genuinely good — automatic trip detection, place recognition, nice UI. Then it kind of stalled. The developer is one person, and updates have been sporadic. It's iOS-only and there's no web version. Your data lives on your phone, which is exactly the problem Google created.</p>
<p>Life360 is a family tracking app that's been repeatedly caught selling precise user location data to data brokers. If your definition of "Timeline alternative" includes your family members seeing where you are at all times <em>and</em> third-party advertisers knowing too, go for it. Otherwise, probably not.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-google-timeline-whats-left-of-it">6. Google Timeline (what's left of it)<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#6-google-timeline-whats-left-of-it" class="hash-link" aria-label="Direct link to 6. Google Timeline (what's left of it)" title="Direct link to 6. Google Timeline (what's left of it)">​</a></h2>
<p>I'm including this because technically it still exists. On your phone. With limited history. And no web access.</p>
<p>If you're fine with Google's new limitations — data on-device only, no desktop browsing, limited retention — then you don't need an alternative. But if you're reading a blog post titled "Best Google Timeline Alternatives," I'm guessing you're not fine with it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-honest-summary">The Honest Summary<a href="https://dawarich.app/blog/best-google-timeline-alternatives-in-2026-ranked#the-honest-summary" class="hash-link" aria-label="Direct link to The Honest Summary" title="Direct link to The Honest Summary">​</a></h2>
<table><thead><tr><th>App</th><th>Self-hosted</th><th>Google Import</th><th>Web UI</th><th>Continuous Tracking</th><th>Open Source</th></tr></thead><tbody><tr><td>Dawarich</td><td>Yes (+ Cloud)</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>OwnTracks</td><td>Yes</td><td>No</td><td>Minimal</td><td>Yes</td><td>Yes</td></tr><tr><td>Traccar</td><td>Yes</td><td>No</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>Strava/Komoot</td><td>No</td><td>No</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Arc</td><td>No</td><td>No</td><td>No</td><td>Yes</td><td>No</td></tr><tr><td>Google Timeline</td><td>No</td><td>N/A</td><td>No (mobile only)</td><td>Yes</td><td>No</td></tr></tbody></table>
<p>If you want the closest thing to what Google Timeline used to be — a complete history of everywhere you've been, on a map, accessible from a browser — there honestly aren't that many options. Most of the "alternatives" people recommend are either activity trackers, fleet management tools, or data collectors without a frontend.</p>
<p>Dawarich is the one I built because nothing else did what I needed. If your exported Google data is sitting in a folder somewhere gathering dust, at least run it through the <a href="https://dawarich.app/tools/timeline-visualizer">Timeline Visualizer</a> and see what you've got. It takes 30 seconds and everything stays in your browser.</p>
<p>Cheers!</p>]]></content:encoded>
            <category>alternatives</category>
            <category>Guides</category>
        </item>
        <item>
            <title><![CDATA[How to Find a Hidden GPS Tracker On Your Car]]></title>
            <link>https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car</link>
            <guid>https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car</guid>
            <pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[At its core, a hidden GPS tracker is a tiny device that silently reports a vehicle's location, completely unknown to the driver. These gadgets are built to be stealthy, using satellite signals to figure out where they are and then, usually, a cell network to phone that information home to someone's computer or smartphone.]]></description>
            <content:encoded><![CDATA[<p>At its core, a hidden GPS tracker is a tiny device that silently reports a vehicle's location, completely unknown to the driver. These gadgets are built to be stealthy, using satellite signals to figure out where they are and then, usually, a cell network to phone that information home to someone's computer or smartphone.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-hidden-gps-trackers-actually-work">How Hidden GPS Trackers Actually Work<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#how-hidden-gps-trackers-actually-work" class="hash-link" aria-label="Direct link to How Hidden GPS Trackers Actually Work" title="Direct link to How Hidden GPS Trackers Actually Work">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/ce1a1792-f8e5-40b8-9a7a-5c63b7a152b1.jpg" alt="A small, black hidden GPS tracker being held in a person's hand." class="img_ev3q"></p>
<p>So, how can a little box keep such close tabs on an entire car? It’s not quite spy-movie magic. It's actually a lot like the package tracking you use for an online order, just shrunk down and designed to be secretive. The device really only has two jobs: figure out its location and then report that location to someone.</p>
<p>Think of it this way: the tracker is constantly listening for signals from the network of satellites orbiting Earth. By timing how long it takes to hear from at least four different satellites, it can triangulate its exact position—latitude, longitude, the works.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-two-flavors-of-trackers">The Two Flavors of Trackers<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#the-two-flavors-of-trackers" class="hash-link" aria-label="Direct link to The Two Flavors of Trackers" title="Direct link to The Two Flavors of Trackers">​</a></h3>
<p>Once the tracker knows where it is, it has to share that information. This is where you see two distinct types of devices, and knowing the difference is crucial if you think you're being tracked.</p>
<ul>
<li>
<p><strong>Active Trackers (Real-Time):</strong> These are the most common culprits in unauthorized tracking cases. They have a SIM card inside, just like a cell phone, and use cellular networks (like <strong>4G</strong> or <strong>5G</strong>) to send location data as it happens. This lets someone watch a vehicle's movement live on a map.</p>
</li>
<li>
<p><strong>Passive Trackers (Data Loggers):</strong> These are more like silent diarists. They record and store location data on the device itself but don't broadcast it in real time. To see the data, the person who planted the device has to physically get it back and download the files. They’re less immediate, but also much harder to find with electronic bug sweepers since they aren't constantly sending out a signal. You can check out our guide on <a href="https://dawarich.app/docs/features/tracking-location-history" target="_blank" rel="noopener noreferrer">tracking location history</a> to see how this kind of data gets laid out.</p>
</li>
</ul>
<blockquote>
<p>Here's a key detail: an active tracker needs a relatively clear view of the sky to get a good satellite lock and a decent cell signal to phone home. This is a big clue—it’s why they’re often hidden on the outside of a vehicle or tucked away near a window.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="keeping-the-lights-on-power-sources">Keeping the Lights On: Power Sources<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#keeping-the-lights-on-power-sources" class="hash-link" aria-label="Direct link to Keeping the Lights On: Power Sources" title="Direct link to Keeping the Lights On: Power Sources">​</a></h3>
<p>A tracker is just a paperweight without power. How it gets its juice is a major factor in where it can be hidden and how long it can operate.</p>
<ul>
<li><strong>Battery-Powered:</strong> These are the simplest to deploy, often equipped with strong magnets to slap onto the underside of a car in seconds. The downside is battery life. Depending on the model and how frequently it pings its location, it might last for a few days, weeks, or maybe a couple of months.</li>
<li><strong>Hard-Wired:</strong> For a more permanent solution, these trackers are wired directly into the car's electrical system. This gives them a non-stop power source, allowing them to track a vehicle indefinitely. They are much tougher to find but require a bit more know-how to install.</li>
<li><strong>OBD-II Port:</strong> A popular middle ground. Some trackers plug right into a car's On-Board Diagnostics (<strong>OBD-II</strong>) port, usually located under the dashboard. It’s a simple plug-and-play install that provides continuous power, making it an incredibly common hiding spot.</li>
</ul>
<p>The technology for this has become so cheap and accessible that the market is booming. The global GPS tracking device market was valued at <strong>USD 2.5 billion in 2023</strong> and is projected to keep growing. You can get more details on this trend over at <a href="https://dataintelo.com/report/gps-tracking-device-market" target="_blank" rel="noopener noreferrer">dataintelo.com</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-would-someone-plant-a-gps-tracker-anyway">Why Would Someone Plant a GPS Tracker, Anyway?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#why-would-someone-plant-a-gps-tracker-anyway" class="hash-link" aria-label="Direct link to Why Would Someone Plant a GPS Tracker, Anyway?" title="Direct link to Why Would Someone Plant a GPS Tracker, Anyway?">​</a></h2>
<p>Finding a hidden GPS tracker on your car sounds like a scene ripped straight from a spy thriller. But in reality, the reasons someone might plant one are all over the map—ranging from totally practical to downright illegal. Figuring out these motives is the first step to understanding if you should be concerned.</p>
<p>On one end, you have the completely legitimate, above-board uses. Think safety, efficiency, and keeping track of valuable stuff.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-good-legitimate-and-legal-uses">The Good: Legitimate and Legal Uses<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#the-good-legitimate-and-legal-uses" class="hash-link" aria-label="Direct link to The Good: Legitimate and Legal Uses" title="Direct link to The Good: Legitimate and Legal Uses">​</a></h3>
<p>Not every tracker is a tool for spying. Far from it. Many are used for perfectly sensible reasons where everyone is in the loop.</p>
<p>For example, a business owner with a fleet of delivery vans isn't trying to be sneaky. They use GPS tracking to map out the best routes, keep an eye on fuel costs, and make sure drivers are sticking to their schedules. It’s a standard business tool, and drivers know it’s part of the job.</p>
<p>Then there’s the peace-of-mind factor for parents. It’s common for a parent to put a tracker in the car their newly licensed teenager is driving. It’s not about mistrust; it's about being able to help in an emergency or gently coach them on their driving habits. Some insurance companies even offer discounts if you agree to install a device that tracks your driving.</p>
<p>Here are a few common, legit scenarios:</p>
<ul>
<li><strong>Fleet Management:</strong> Businesses track their vehicles to tighten up logistics and security.</li>
<li><strong>Asset Protection:</strong> Owners of classic cars or expensive construction gear use trackers to recover them if they're stolen.</li>
<li><strong>Parental Monitoring:</strong> Parents keep a virtual eye on young drivers for safety.</li>
</ul>
<p>In these cases, the person planting the tracker almost always owns the vehicle or has a legal right to monitor it. It’s all about protecting property or people, not creeping on their privacy.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-bad-and-the-ugly-unethical-and-illegal-motivations">The Bad and The Ugly: Unethical and Illegal Motivations<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#the-bad-and-the-ugly-unethical-and-illegal-motivations" class="hash-link" aria-label="Direct link to The Bad and The Ugly: Unethical and Illegal Motivations" title="Direct link to The Bad and The Ugly: Unethical and Illegal Motivations">​</a></h3>
<p>This is where the story takes a much darker turn. A hidden GPS tracker can easily be weaponized for harassment, control, and stalking. The same tiny device that helps find a stolen piece of equipment can be used to track an ex-partner’s every move, which is incredibly dangerous.</p>
<p>And unfortunately, it happens more than you'd think. A suspicious partner might secretly plant a tracker on their significant other's car out of distrust. In even more terrifying situations, stalkers and abusers use them to maintain control and intimidate their victims.</p>
<blockquote>
<p>Let’s be crystal clear: Placing a tracker on a vehicle you don’t own, without the owner's consent, is illegal in most places. It can result in serious criminal charges like stalking, harassment, and invasion of privacy.</p>
</blockquote>
<p>These devices have become cheaper and easier to get, which only adds to the problem. The global market for GPS locators—which includes these hidden trackers—is projected to hit a staggering <strong>$2.098 billion by 2025</strong>. That growth is driven by both the legitimate uses and, sadly, these more sinister ones. You can dig deeper into these <a href="https://www.archivemarketresearch.com/reports/gps-locator-488700" target="_blank" rel="noopener noreferrer">market trends and their drivers</a> if you're curious.</p>
<p>By understanding both sides of the coin, you can get a better read on your own situation. If you share a vehicle with a family member or use a company car, it’s worth a simple conversation. But if your gut tells you something more malicious is going on, trusting that instinct is the first step toward protecting yourself.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="navigating-the-legal-maze-of-gps-tracking">Navigating the Legal Maze of GPS Tracking<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#navigating-the-legal-maze-of-gps-tracking" class="hash-link" aria-label="Direct link to Navigating the Legal Maze of GPS Tracking" title="Direct link to Navigating the Legal Maze of GPS Tracking">​</a></h2>
<p>Figuring out the laws around hidden GPS trackers can feel like trying to read a map in the dark. The rules are murky, and they change dramatically from one place to the next. While this isn't official legal advice, think of it as a practical field guide to help you understand the core principles and spot when someone's crossing a serious line.</p>
<p>When it comes to GPS tracking laws, most of it boils down to a single, surprisingly simple question: <strong>Who owns the car?</strong></p>
<p>If the vehicle is yours, you generally have the right to know where it is. That's the simple part and the basis for most legitimate uses. But the moment you start tracking a car you <em>don't</em> own—or even one you share ownership of—things get messy, fast. That’s when a legal concept called "reasonable expectation of privacy" comes into play, and it changes everything.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="when-tracking-is-usually-in-the-clear">When Tracking Is Usually in the Clear<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#when-tracking-is-usually-in-the-clear" class="hash-link" aria-label="Direct link to When Tracking Is Usually in the Clear" title="Direct link to When Tracking Is Usually in the Clear">​</a></h3>
<p>Let's start with the straightforward scenarios. There are a handful of situations where using a GPS tracker is typically okay, mainly because the person doing the tracking has a clear ownership or guardianship stake in the vehicle.</p>
<ul>
<li><strong>Tracking Your Own Car:</strong> Slapping a tracker on a vehicle you own outright is almost always legal. People do this all the time for theft recovery or even just to find their car in a massive parking garage.</li>
<li><strong>Keeping Tabs on Your Teen Driver:</strong> If you're a parent or legal guardian, you can generally track a car you own that's being driven by your child, as long as they're under <strong>18</strong>.</li>
<li><strong>Monitoring Company Vehicles:</strong> Businesses can legally track company-owned cars used by employees. This is a common practice for managing fleets of vehicles, and employees usually agree to it as part of their job.</li>
</ul>
<p>In these cases, there's no real violation of that "reasonable expectation of privacy" we talked about. The owner is just keeping an eye on their own property.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="red-flags-when-tracking-is-almost-always-illegal">Red Flags: When Tracking Is Almost Always Illegal<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#red-flags-when-tracking-is-almost-always-illegal" class="hash-link" aria-label="Direct link to Red Flags: When Tracking Is Almost Always Illegal" title="Direct link to Red Flags: When Tracking Is Almost Always Illegal">​</a></h3>
<p>Now, let's look at the other side of the coin. Using a hidden GPS tracker turns into a serious legal nightmare when it’s done without consent and tramples all over someone's privacy. Planting a device on a car you don't own is where you step into dangerous territory.</p>
<p>Here’s when it's pretty much always illegal:</p>
<ul>
<li><strong>Tracking a Spouse or Ex-Partner:</strong> Secretly sticking a tracker on your partner's car, especially if you aren't a co-owner, is a massive violation. This is the kind of thing that leads to stalking and harassment charges.</li>
<li><strong>Putting a Tracker on a Stranger’s Car:</strong> This one’s a no-brainer. It's straight-up illegal surveillance, period.</li>
<li><strong>Tracking an Employee’s Personal Car:</strong> Even if an employee uses their own car for work-related errands, their boss can't legally track it without getting clear, written permission first.</li>
</ul>
<blockquote>
<p>The bottom line is this: If you don't own the vehicle and you don't have the driver's explicit permission, planting a tracker is very likely against the law. The penalties can be severe, ranging from huge fines to actual jail time, depending on your state's laws.</p>
</blockquote>
<p>The sheer growth of the GPS industry shows just how common this tech has become—for both good and ill. The market for GPS tracking devices in the United States alone was valued at <strong>USD 2.26 billion in 2024</strong> and is on track to more than double by 2033. While legitimate uses in logistics and safety are driving this boom, it also means these tiny devices are easier than ever for people to get their hands on for the wrong reasons. You can dig into more stats about the <a href="https://www.researchandmarkets.com/report/united-states-gps-tracking-devices-market" target="_blank" rel="noopener noreferrer">booming U.S. GPS market</a> to see the full picture.</p>
<p>Knowing these basic legal boundaries is your first and best defense. It helps you recognize the signs of illegal surveillance and gives you the confidence to take action to protect your privacy.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-physically-search-your-car-for-a-tracker">How to Physically Search Your Car for a Tracker<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#how-to-physically-search-your-car-for-a-tracker" class="hash-link" aria-label="Direct link to How to Physically Search Your Car for a Tracker" title="Direct link to How to Physically Search Your Car for a Tracker">​</a></h2>
<p>Alright, it’s time to get your hands a little dirty. If you have that nagging feeling that someone might have planted a GPS tracker on your car, a thorough physical search is your most direct and effective first step. This isn't about just glancing around; we're going to approach this systematically, like a detective sweeping a scene, so you can be confident you've checked all the likely spots.</p>
<p>Before you start, you'll want to grab a couple of simple tools that will make a world of difference: a bright flashlight (your phone works in a pinch, but a real flashlight is way better) and an extendable inspection mirror. These will be your best friends for peering into all the dark, awkward corners where these devices love to hide.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="starting-with-the-exterior">Starting With The Exterior<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#starting-with-the-exterior" class="hash-link" aria-label="Direct link to Starting With The Exterior" title="Direct link to Starting With The Exterior">​</a></h3>
<p>Most trackers, especially the magnetic, battery-powered kind, get slapped on the outside of a vehicle. Why? Because it's fast and easy. The person planting it probably only had a few seconds, so they would have gone for the most accessible spots.</p>
<p>Let's begin with the most common exterior hiding places:</p>
<ul>
<li><strong>The Undercarriage:</strong> This is prime real estate for a magnetic tracker. Get on the ground and use your flashlight to scan the entire frame of your car. Pay extra close attention to any flat metal surfaces where a magnetic box could easily latch on.</li>
<li><strong>Inside the Wheel Wells:</strong> Crouch down and take a good look inside each of the four wheel wells. Run your hand along the plastic lining to feel for any small, unfamiliar boxes. A tracker tucked away here is out of sight but can still get a clear enough signal from GPS satellites.</li>
<li><strong>Behind the Bumpers:</strong> Both your front and rear bumpers have all sorts of nooks and crannies that are perfect for stashing a small device. The plastic often has enough give to let you gently pull it back and peek behind. Be on the lookout for any little black boxes or odd wires that clearly don't belong.</li>
</ul>
<p>This infographic breaks down who can legally place a tracker on a vehicle and, more importantly, when it crosses a serious legal line.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/a06e3a91-0737-445f-934a-c591165acde7.jpg" alt="Infographic about hidden gps tracker" class="img_ev3q"></p>
<p>As you can see, an owner has every right to track their own property, but that right absolutely does not extend to monitoring an ex-partner—an action that almost always falls into illegal territory.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="moving-to-the-cars-interior">Moving To The Car's Interior<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#moving-to-the-cars-interior" class="hash-link" aria-label="Direct link to Moving To The Car's Interior" title="Direct link to Moving To The Car's Interior">​</a></h3>
<p>If you've scoured the outside and come up empty, it's time to move inside. Placing a tracker inside is less common for the quick "slap-and-go" magnetic types, but it's a go-to spot for devices that need to be hardwired to a constant power source.</p>
<p>Here’s where you should focus your attention inside the car:</p>
<ul>
<li><strong>Under the Dashboard:</strong> This is the <strong>#1 spot</strong> for an <strong>OBD-II port tracker</strong>. This port, which is usually found just below your steering wheel, provides continuous power and is incredibly easy to access. Look for any small device plugged into it that isn't a diagnostic tool your mechanic just used.</li>
<li><strong>Beneath the Seats:</strong> Slide your front seats all the way forward, then all the way back. Use your flashlight to inspect every inch of the floor and the seat mechanisms underneath. Feel along the metal tracks and under the seat fabric for any weird lumps or small boxes held in place with tape or velcro.</li>
<li><strong>The Trunk:</strong> Don't forget the trunk! Pop it open and check inside the spare tire well, pull back the carpet lining on the sides, and look in any small storage compartments. It's an easy place to tuck a device where it can go unnoticed for weeks or even months.</li>
</ul>
<blockquote>
<p>A key thing to remember is what you're actually looking for. Most hidden GPS trackers are small, plain black boxes. They are designed to be missed, so they won’t have flashy logos or blinking lights. You’re searching for something that just looks out of place—an object that isn’t a factory part of your car.</p>
</blockquote>
<p>To make this easier, here's a quick checklist of the most common hiding spots to keep handy as you do your search.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="checklist-of-common-hiding-spots-for-gps-trackers">Checklist of Common Hiding Spots for GPS Trackers<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#checklist-of-common-hiding-spots-for-gps-trackers" class="hash-link" aria-label="Direct link to Checklist of Common Hiding Spots for GPS Trackers" title="Direct link to Checklist of Common Hiding Spots for GPS Trackers">​</a></h3>
<table><thead><tr><th style="text-align:left">Location</th><th style="text-align:left">Why It's a Common Spot</th><th style="text-align:left">What to Look For</th></tr></thead><tbody><tr><td style="text-align:left"><strong>Undercarriage &amp; Frame</strong></td><td style="text-align:left">The easiest spot for a quick, magnetic placement. Lots of flat metal surfaces.</td><td style="text-align:left">A small, weather-proof magnetic box (usually black) attached to the metal frame.</td></tr><tr><td style="text-align:left"><strong>Wheel Wells</strong></td><td style="text-align:left">Well-hidden from a casual glance and still gets a GPS signal.</td><td style="text-align:left">A small device, often covered in road grime, tucked up high behind the plastic lining.</td></tr><tr><td style="text-align:left"><strong>Front/Rear Bumpers</strong></td><td style="text-align:left">Plenty of empty space behind the plastic cover makes for a great hiding spot.</td><td style="text-align:left">A small box taped or zip-tied to the bumper support or tucked into a crevice.</td></tr><tr><td style="text-align:left"><strong>OBD-II Port</strong></td><td style="text-align:left">Provides constant power, so no batteries to worry about. Plug-and-play installation.</td><td style="text-align:left">A small dongle-like device plugged into the port, usually under the steering wheel.</td></tr><tr><td style="text-align:left"><strong>Under Seats</strong></td><td style="text-align:left">Out of the driver's line of sight and easy to access for placement.</td><td style="text-align:left">A small box or pouch taped, velcroed, or zip-tied to the seat frame or springs.</td></tr><tr><td style="text-align:left"><strong>In the Trunk</strong></td><td style="text-align:left">Lots of hidden areas like the spare tire well or behind panels. Rarely disturbed.</td><td style="text-align:left">A device tucked into the spare tire, behind the carpet, or in a side storage compartment.</td></tr></tbody></table>
<p>Going through these spots methodically gives you the best chance of finding anything that shouldn't be there.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-less-common-hiding-spots">Other Less Common Hiding Spots<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#other-less-common-hiding-spots" class="hash-link" aria-label="Direct link to Other Less Common Hiding Spots" title="Direct link to Other Less Common Hiding Spots">​</a></h3>
<p>If you've checked all the usual suspects and still feel like something's wrong, there are a few other, less common places to look. These spots take more effort to get to, which is why they aren't the first choice for most people.</p>
<p>Consider checking:</p>
<ul>
<li><strong>Behind the glove box:</strong> Sometimes a tracker can be tucked away behind the glove compartment itself.</li>
<li><strong>Inside a seat cushion:</strong> This is pretty rare, but a very determined person could slip a tiny tracker inside a zippered seat cover.</li>
<li><strong>Within the center console:</strong> Pop out any removable trays or compartments in your car's center console and look underneath.</li>
</ul>
<p>Taking the time to perform this physical search is the single most effective thing you can do to find a hidden GPS tracker. It costs you nothing but a bit of time and can give you back your peace of mind.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="using-tech-to-detect-hidden-tracking-devices">Using Tech to Detect Hidden Tracking Devices<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#using-tech-to-detect-hidden-tracking-devices" class="hash-link" aria-label="Direct link to Using Tech to Detect Hidden Tracking Devices" title="Direct link to Using Tech to Detect Hidden Tracking Devices">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/8b49294e-60de-4579-8905-b8704f3ba28a.jpg" alt="A person using an RF signal detector to scan a car for hidden devices." class="img_ev3q"></p>
<p>Sometimes, no matter how thoroughly you search, you just can't shake that feeling. As hidden GPS trackers get smaller and more sophisticated, they can be slipped into spots your eyes and hands will simply never find. When you need that extra layer of certainty, it’s time to bring in technology that can "see" the invisible.</p>
<p>These gadgets work by sniffing out the invisible signals that active, real-time trackers transmit. Think of it like a radio tuning into a specific station—if a tracker is "broadcasting" its whereabouts, these devices are designed to pick up on it loud and clear.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="hunting-for-signals-with-rf-detectors">Hunting for Signals With RF Detectors<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#hunting-for-signals-with-rf-detectors" class="hash-link" aria-label="Direct link to Hunting for Signals With RF Detectors" title="Direct link to Hunting for Signals With RF Detectors">​</a></h3>
<p>Your best bet for a DIY electronic sweep is an <strong>RF (Radio Frequency) detector</strong>, often called a bug sweeper. This is a handheld device that scans for the radio waves that active trackers use to communicate over cellular networks.</p>
<p>Picture the tracker sending out a tiny text message with its coordinates every minute or so. An RF detector is essentially a specialized antenna that beeps or lights up when it "hears" that signal go out. You just sweep the detector slowly around your car, and as you get closer to a transmitting device, the alert on the detector gets stronger.</p>
<p>To get the most out of it:</p>
<ul>
<li><strong>Take your time:</strong> You need to move slowly to give the detector a chance to catch signals that might only be sent out intermittently.</li>
<li><strong>Kill the noise:</strong> Your phone, the car's Bluetooth system, and any Wi-Fi hotspots can all trigger false alarms. Shut them all off before you start.</li>
<li><strong>Get the car moving:</strong> Some trackers are designed to only transmit when the vehicle is in motion. If you can do it safely, have a friend drive slowly around an empty parking lot while you scan.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="can-your-smartphone-find-a-hidden-gps-tracker">Can Your Smartphone Find a Hidden GPS Tracker?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#can-your-smartphone-find-a-hidden-gps-tracker" class="hash-link" aria-label="Direct link to Can Your Smartphone Find a Hidden GPS Tracker?" title="Direct link to Can Your Smartphone Find a Hidden GPS Tracker?">​</a></h3>
<p>You've probably seen apps in the app store that claim to turn your phone into a high-tech spy-finding machine. It's a great concept, but in reality, their effectiveness is extremely limited. Most of these apps are just glorified scanners for nearby Wi-Fi or Bluetooth signals.</p>
<p>That approach has a couple of huge flaws:</p>
<ul>
<li>They’ll pick up every single Bluetooth device in the area—your headphones, the car next to you, your smartwatch. It’s a mess of false positives.</li>
<li>Most real-time GPS trackers use cellular networks (<strong>4G/5G</strong>) to send their location, not Bluetooth. Your phone's hardware just isn't built to detect those kinds of transmissions like a dedicated RF detector can.</li>
<li>And, of course, they are completely useless against passive loggers, which don't transmit any signal at all.</li>
</ul>
<p>So, while an app might get lucky and find a very specific type of Bluetooth-based tag, it's nowhere near a reliable tool for finding the most common hidden GPS trackers.</p>
<blockquote>
<p>Don't mistake convenience for effectiveness. A smartphone app is easy to download, but it can give you a dangerous false sense of security by missing the most common types of tracking devices.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="when-to-call-in-the-professionals">When to Call in the Professionals<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#when-to-call-in-the-professionals" class="hash-link" aria-label="Direct link to When to Call in the Professionals" title="Direct link to When to Call in the Professionals">​</a></h3>
<p>Let's say you've done a full physical search and run an electronic sweep, but you're still convinced you're being followed. At this point, it might be time to call in the pros. A <strong>Technical Surveillance Counter-Measures (TSCM)</strong> expert is a specialist with sophisticated, professional-grade equipment that's light-years beyond what you can buy online.</p>
<p>A professional TSCM sweep is the most surefire option you have. These experts can find everything from hard-wired devices and passive loggers to advanced trackers designed to evade basic detection. It's an investment, for sure, but if your safety is genuinely at risk, it's the only way to be absolutely certain your vehicle is clean.</p>
<p>For those more interested in managing their own location data securely, you can see how a <a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer" target="_blank" rel="noopener noreferrer">location history visualizer</a> offers a different kind of peace of mind.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-to-do-if-you-find-a-hidden-tracker">What to Do If You Find a Hidden Tracker<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#what-to-do-if-you-find-a-hidden-tracker" class="hash-link" aria-label="Direct link to What to Do If You Find a Hidden Tracker" title="Direct link to What to Do If You Find a Hidden Tracker">​</a></h2>
<p><a href="https://www.youtube.com/embed/msOdtBYpCLQ" target="_blank" rel="noopener noreferrer">https://www.youtube.com/embed/msOdtBYpCLQ</a></p>
<p>Finding a hidden tracker on your car is a gut-wrenching moment. It feels like a total violation of your privacy, and your first reaction might be to rip it off and smash it to pieces. It's a totally understandable impulse, but hold on for just a second.</p>
<p>Before you do anything else, take a deep breath. What you do in these next few moments is critical, especially if this ends up involving the police.</p>
<p>Your first job is to <strong>play detective</strong>. Grab your phone and document <em>everything</em>. Take a bunch of clear photos and videos of the tracker from every possible angle. Make sure you get wide shots that show exactly where it was hidden on your car. This context is gold.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="first-assess-your-safety">First, Assess Your Safety<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#first-assess-your-safety" class="hash-link" aria-label="Direct link to First, Assess Your Safety" title="Direct link to First, Assess Your Safety">​</a></h3>
<p>Once you’ve got your evidence, it's time to think about your personal safety. This is priority number one. Ask yourself, who would do this? Is it an ex? A current partner you're worried about? Or a complete stranger?</p>
<p>Your gut feeling here will tell you what to do next.</p>
<p>If you have even the slightest suspicion that you're in danger, <strong>do not remove the device</strong>. I know it feels wrong to leave it there, but doing so keeps the person who planted it in the dark. They won't know you've found it, which buys you precious time to call the police and figure out a safety plan. This is about being smart and strategic, not just reacting.</p>
<p>But if you’re pretty sure it’s something less sinister—like a misunderstanding with a family member or maybe a leftover device from the car's previous owner—then taking it off yourself might be the way to go.</p>
<blockquote>
<p><strong>Crucial Takeaway:</strong> Let your safety guide your actions. If stalking, harassment, or domestic violence is a possibility, leave the tracker right where it is and call the police. That device is now evidence in a criminal investigation.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="to-remove-or-to-report">To Remove or to Report?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#to-remove-or-to-report" class="hash-link" aria-label="Direct link to To Remove or to Report?" title="Direct link to To Remove or to Report?">​</a></h3>
<p>So, what's the right call—yank it off yourself or get the authorities involved? It really boils down to your specific situation and what you feel comfortable with.</p>
<p>Here’s a simple way to break it down:</p>
<ol>
<li><strong>Battery-Powered Trackers:</strong> If you're confident there’s no immediate threat, you can usually remove these yourself. They’re typically just stuck on with a magnet or some heavy-duty tape. Put on a pair of gloves, gently detach it, and see if you can find a power button to shut it off. Then, stick it somewhere safe.</li>
<li><strong>Hard-Wired Trackers:</strong> <strong>Never</strong> try to remove a hard-wired tracker on your own. These are hooked directly into your car’s electrical system. Fiddling with those wires is a great way to cause serious and expensive damage to your vehicle. If you spot one of these, take your car straight to a mechanic you trust or an auto electronics shop to have it removed safely by a pro.</li>
<li><strong>When to Call the Cops:</strong> If you feel like you're being stalked, harassed, or illegally monitored in any way, your first call should be to law enforcement. Show them the photos and videos you took. They’ll tell you whether to leave the device for them to collect as evidence or if you should go ahead and have it removed.</li>
</ol>
<p>Discovering a <strong>hidden GPS tracker</strong> is an unnerving experience, no doubt. But by documenting the evidence and putting your safety first, you can take back control. You turn a moment of fear into one of calm, calculated action.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-about-hidden-gps-trackers">Frequently Asked Questions About Hidden GPS Trackers<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#frequently-asked-questions-about-hidden-gps-trackers" class="hash-link" aria-label="Direct link to Frequently Asked Questions About Hidden GPS Trackers" title="Direct link to Frequently Asked Questions About Hidden GPS Trackers">​</a></h2>
<p>Alright, so you've swept your car and maybe even found a tracker. It's totally normal to still have a bunch of questions bouncing around. Let's walk through some of the most common ones people ask to help you feel more confident and in control.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="can-a-hidden-gps-tracker-record-conversations">Can a Hidden GPS Tracker Record Conversations?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#can-a-hidden-gps-tracker-record-conversations" class="hash-link" aria-label="Direct link to Can a Hidden GPS Tracker Record Conversations?" title="Direct link to Can a Hidden GPS Tracker Record Conversations?">​</a></h3>
<p>This is a huge concern for many, and the good news is, almost certainly <strong>no</strong>. Your typical hidden GPS tracker is a one-trick pony; its only job is to track location coordinates. It simply doesn't have the gear, like a microphone or the right software, to record what you're saying.</p>
<p>That said, you should know that sophisticated (and very pricey) surveillance bugs <em>do</em> exist that can bundle audio recording with GPS tracking. These are pretty rare for everyday situations, but if you have a serious reason to be worried, it’s another good argument for calling in a professional TSCM team.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-long-does-a-trackers-battery-last">How Long Does a Tracker's Battery Last?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#how-long-does-a-trackers-battery-last" class="hash-link" aria-label="Direct link to How Long Does a Tracker's Battery Last?" title="Direct link to How Long Does a Tracker's Battery Last?">​</a></h3>
<p>Honestly, it's all over the map. For a portable, battery-powered tracker, the lifespan really depends on the specific device and how it's configured. A cheap, basic model might only last a week or two before the battery dies.</p>
<p>On the other hand, some of the more advanced trackers can last for months. They do this by going into a "deep sleep" mode and only waking up to report their location once or twice a day, which saves a ton of power.</p>
<blockquote>
<p>Keep in mind, if a tracker is wired directly into your car's power—like one plugged into the OBD-II port—it's got a constant supply of juice. As long as your car battery works, so does the tracker.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="do-police-need-a-warrant-to-use-a-tracker">Do Police Need a Warrant to Use a Tracker?<a href="https://dawarich.app/blog/how-to-find-a-hidden-gps-tracker-on-your-car#do-police-need-a-warrant-to-use-a-tracker" class="hash-link" aria-label="Direct link to Do Police Need a Warrant to Use a Tracker?" title="Direct link to Do Police Need a Warrant to Use a Tracker?">​</a></h3>
<p>Yes, absolutely. In most places, law enforcement has to get a warrant from a judge before they can legally slap a GPS tracker on someone's vehicle. This comes down to the Fourth Amendment, which protects us from unreasonable searches. Attaching a tracker is legally considered a "search."</p>
<p>To get that warrant, they have to show a judge there's probable cause to believe the car is involved in a crime. If they skip this step, any evidence they collect using that tracker can be thrown out in court.</p>
<p>Have more questions? We’ve got you covered. You can find more answers to common concerns in our detailed <a href="https://dawarich.app/docs/FAQ" target="_blank" rel="noopener noreferrer">Dawarich FAQ section</a>.</p>
<hr>
<p>If you're looking for a safe way to map your own life's journey without giving up your privacy, check out <strong>Dawarich</strong>. It's a privacy-first app that automatically builds your personal location journal, putting you in complete control of your data. See how it works at <a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">https://dawarich.app</a>.</p>]]></content:encoded>
            <category>Guide</category>
        </item>
        <item>
            <title><![CDATA[12 Best Apps for Mapping Your Walks in 2025]]></title>
            <link>https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025</link>
            <guid>https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025</guid>
            <pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[There's something magical about a good walk. Whether you're exploring new city streets on a trip, hitting a familiar local trail, or simply trying to get your daily steps in, the right tool can turn a simple stroll into a memorable adventure. But with countless options out there, finding the perfect app for mapping walks can feel like a journey in itself. It's a crowded space where every app seems to promise the world, but they all serve very different purposes.]]></description>
            <content:encoded><![CDATA[<p>There's something magical about a good walk. Whether you're exploring new city streets on a trip, hitting a familiar local trail, or simply trying to get your daily steps in, the right tool can turn a simple stroll into a memorable adventure. But with countless options out there, finding the perfect <strong>app for mapping walks</strong> can feel like a journey in itself. It's a crowded space where every app seems to promise the world, but they all serve very different purposes.</p>
<p>Some are built for hardcore athletes chasing personal bests, while others are designed for backcountry hikers who need detailed offline topographic maps. A few are social platforms for sharing your routes with a community, and a select group focuses on quietly and privately journaling your life's path without broadcasting your location to the world. It’s easy to get stuck here, downloading three or four apps before landing on one that actually fits your needs.</p>
<p>This guide is here to cut through that noise. We're going to dive into 12 of the best apps available, breaking down what they do best, who they're for, and any potential drawbacks you should know about. Think of this as a practical, straightforward comparison to help you find the app that matches your walking style. We'll look at everything from social fitness giants like Strava to powerful navigation tools like Gaia GPS and privacy-first journaling apps like Dawarich.</p>
<p>Each review will include key feature summaries, pros and cons, pricing notes, and clear screenshots so you know what you're getting into. My goal is to give you all the information you need to make a confident choice, so you can spend less time searching in the app store and more time enjoying your walk. Let's get started.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-dawarich">1. Dawarich<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#1-dawarich" class="hash-link" aria-label="Direct link to 1. Dawarich" title="Direct link to 1. Dawarich">​</a></h2>
<p>Dawarich takes a really different approach from most of the apps on this list. It’s an automatic, privacy-first tool for location journaling. Instead of manually starting and stopping a tracker for every walk, Dawarich works silently in the background, building a comprehensive, searchable map of your life's movements. This makes it an exceptional tool not just for planned hikes but for spontaneously capturing every neighborhood stroll, commute, and journey, turning your daily travels into a rich, private timeline.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/910ed32b-bdb4-4443-a402-383290baa6b0.jpg" alt="Dawarich" class="img_ev3q"></p>
<p>Its core strength is its "set it and forget it" functionality combined with a powerful suite of visualization tools. Once set up, it automatically logs your routes and places visited. You can then explore this data through interactive maps, detailed trip summaries showing distance and duration, and even a "Scratch Map" that visually fills in as you explore new areas. It makes for an incredible <strong>app for mapping walks</strong> and discovering just how much ground you cover over time.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="why-dawarich-stands-out">Why Dawarich Stands Out<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#why-dawarich-stands-out" class="hash-link" aria-label="Direct link to Why Dawarich Stands Out" title="Direct link to Why Dawarich Stands Out">​</a></h3>
<p>What truly sets Dawarich apart is its unwavering commitment to user privacy and data ownership. While many apps trade your location data for services, Dawarich is built on a foundation of trust.</p>
<ul>
<li><strong>Privacy-First Architecture:</strong> All your data is encrypted both in transit (SSL/TLS) and at rest (LUKS). With servers based in Europe, it is fully GDPR compliant, giving you peace of mind that your personal location history remains yours alone.</li>
<li><strong>Total Data Control:</strong> You can easily import existing location data (including from Google Timeline) and export your entire history at any time. This portability ensures you are never locked into the platform.</li>
<li><strong>Flexible Deployment Options:</strong> You can opt for the convenient Dawarich Cloud plan, which includes an official iOS app and managed backups, or choose to self-host the platform for free if you have the technical skills and desire complete control over your server environment.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pricing-and-platform-availability">Pricing and Platform Availability<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#pricing-and-platform-availability" class="hash-link" aria-label="Direct link to Pricing and Platform Availability" title="Direct link to Pricing and Platform Availability">​</a></h3>
<ul>
<li><strong>Dawarich Cloud:</strong> The managed service costs €7.50/month or €90 when billed annually. It includes a 7-day free trial (no credit card required) and generous limits of up to 10 million data points.</li>
<li><strong>Self-Hosted:</strong> Free for users who prefer to manage their own server and installation.</li>
<li><strong>Platforms:</strong> The managed Cloud plan includes an official iOS app. Android users can still use the platform effectively via third-party apps that feed data to their Dawarich instance.</li>
</ul>
<table><thead><tr><th>Feature Highlights</th><th>Description</th></tr></thead><tbody><tr><td><strong>Automatic Journaling</strong></td><td>Passively records routes and places visited without manual input.</td></tr><tr><td><strong>Rich Visualizations</strong></td><td>Includes interactive maps, trip summaries, statistics, and a "Scratch Map" of explored areas.</td></tr><tr><td><strong>Robust Privacy</strong></td><td>European-based, GDPR compliant, with end-to-end encryption.</td></tr><tr><td><strong>Data Portability</strong></td><td>Features tools for importing and exporting your entire location history, including a Google Timeline visualizer.</td></tr><tr><td><strong>Deployment Choice</strong></td><td>Offers both a user-friendly Cloud subscription and a free, open-source self-hosted option.</td></tr></tbody></table>
<p><strong>Best For:</strong> Privacy-conscious individuals, travelers, and lifeloggers who want a detailed and automatic visual record of their movements without compromising their data.</p>
<p><a href="https://dawarich.app/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer"><strong>Visit Dawarich</strong></a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-alltrails">2. AllTrails<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#2-alltrails" class="hash-link" aria-label="Direct link to 2. AllTrails" title="Direct link to 2. AllTrails">​</a></h2>
<p>AllTrails is a behemoth in the world of outdoor navigation, and for good reason. Think of it as the Yelp or TripAdvisor for hiking and walking trails. Its massive, crowd-sourced database is its biggest strength, offering over 450,000 curated routes globally, though its coverage is particularly dense in the United States. If you’re looking for a reliable app for mapping walks that someone else has already vetted, this is often the best place to start.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/e79c050e-50d5-48e4-9a0c-fd0615623276.jpg" alt="AllTrails" class="img_ev3q"></p>
<p>The platform shines with its community-driven content. Each trail page includes recent reviews, user-submitted photos, difficulty ratings, and elevation profiles, giving you a real-world preview of what to expect. This is incredibly helpful for finding routes that match your fitness level and for checking current trail conditions before you head out.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The free version is great for discovery, but the real power for serious walkers comes with the paid tiers. AllTrails+ unlocks essentials like offline map downloads (a must-have for areas with spotty cell service) and wrong-turn alerts. The user interface is straightforward and beginner-friendly, making it easy to filter trails by length, difficulty, or even dog-friendliness.</p>
<p><strong>Best For:</strong> Hikers and walkers who prioritize trail discovery and community-sourced reviews, especially within the U.S.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.alltrails.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.alltrails.com</a></li>
<li><strong>Pricing:</strong> Free basic plan. AllTrails+ is around $35.99/year and offers offline maps and navigation alerts. The Peak tier adds more advanced planning tools for a higher price. Keep an eye out for frequent promotions and discounts on the annual membership.</li>
<li><strong>Pros:</strong> Enormous database of trails with rich user reviews, very easy for beginners to pick up and use.</li>
<li><strong>Cons:</strong> Key safety features like offline maps are behind a paywall. The shifting of features between membership tiers can sometimes be confusing for long-time users.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-strava">3. Strava<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#3-strava" class="hash-link" aria-label="Direct link to 3. Strava" title="Direct link to 3. Strava">​</a></h2>
<p>While often associated with competitive cycling and running, Strava has evolved into a powerful and socially-driven platform for anyone mapping a walk. Its biggest draw is the global "heatmap," which visualizes the most popular routes taken by millions of users. This feature is fantastic for discovering safe, well-trodden, and scenic walking paths in your area or a new city, taking the guesswork out of your planning.</p>
<p>Strava functions as both a route planner and a fitness-focused social network. You can track your walks, analyze your performance stats like pace and distance, and share your activities with friends for a bit of friendly encouragement or competition. This social element adds a layer of motivation that many other mapping-only apps lack, making it a great choice if community is important to you. For a deeper look at how its features compare to other journaling apps, you can <a href="https://dawarich.app/docs/Dawarich%20vs%20Others/dawarich-vs-strava" target="_blank" rel="noopener noreferrer">read this breakdown of Strava</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-1">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-1" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>Strava’s route builder is a standout feature, allowing you to draw your own path or get AI-assisted suggestions based on community data. The free version covers basic tracking and sharing, but a subscription unlocks advanced route planning, detailed segment analysis, and Beacon, a live-tracking safety feature. Its seamless integration with devices from Garmin, Apple Watch, and others makes it incredibly easy to sync your walks without manual data entry.</p>
<p><strong>Best For:</strong> Walkers who are motivated by data and community, and who want to combine route mapping with a detailed fitness log.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.strava.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.strava.com</a></li>
<li><strong>Pricing:</strong> Free plan with core tracking features. The premium subscription, which unlocks route planning and advanced analytics, is around $79.99/year, though pricing can vary by region.</li>
<li><strong>Pros:</strong> Excellent route discovery through global heatmaps, strong social and community features, and seamless integration with major wearables.</li>
<li><strong>Cons:</strong> Key route planning features are behind a paywall. The interface can feel a bit training-centric if you only want a simple app for mapping walks.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-mapmywalk-under-armour">4. MapMyWalk (Under Armour)<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#4-mapmywalk-under-armour" class="hash-link" aria-label="Direct link to 4. MapMyWalk (Under Armour)" title="Direct link to 4. MapMyWalk (Under Armour)">​</a></h2>
<p>Part of the Under Armour suite of fitness apps, MapMyWalk is laser-focused on the activity of walking, from casual city strolls to more structured training. While other platforms bundle walking into a broader category of outdoor activities, this app for mapping walks dedicates its entire workflow to it. This focus makes it an excellent choice for users who primarily stick to pavement and parks and want features tailored specifically to that experience.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/65541eac-f9d2-4654-91eb-236b286f5e37.jpg" alt="MapMyWalk (Under Armour)" class="img_ev3q"></p>
<p>Its biggest draw is the integration with a massive fitness ecosystem. If you’re already using other Under Armour apps like MyFitnessPal or a UA connected shoe, MapMyWalk fits in seamlessly. It also offers a huge library of user-created routes, particularly in urban and suburban areas, making it easy to find a new path right outside your door.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-2">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-2" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The app provides all the core functionality you'd expect: GPS tracking, distance, pace, and calorie burn. Where it stands out is in its motivational tools, such as audio coaching that provides real-time feedback during your walk and community challenges that encourage you to hit new goals. The MVP (premium) subscription unlocks training plans, live tracking so friends can follow your route, and more advanced data analysis. Understanding how to track your location effectively is key to using these features, and you can <a href="https://dawarich.app/docs/tutorials/track-your-location" target="_blank" rel="noopener noreferrer">learn more about location tracking here</a>.</p>
<p><strong>Best For:</strong> Urban and suburban walkers who want a fitness-focused experience with strong motivational tools and community challenges.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.mapmywalk.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.mapmywalk.com</a></li>
<li><strong>Pricing:</strong> Free with ads. The MVP premium subscription is around $5.99/month or $29.99/year and removes ads while unlocking training plans and live tracking.</li>
<li><strong>Pros:</strong> Walking-specific features and challenges, deep integration with the Under Armour fitness ecosystem, and a large library of urban routes.</li>
<li><strong>Cons:</strong> The website feels a bit sparse until you log in. Some key pricing and feature details are clearer on the app store listings than on the main site.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-komoot">5. Komoot<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#5-komoot" class="hash-link" aria-label="Direct link to 5. Komoot" title="Direct link to 5. Komoot">​</a></h2>
<p>Komoot excels as a powerful route planner and navigation tool, especially popular in Europe. It’s designed for adventurers who want to meticulously plan their journeys, whether it’s a short city walk or a multi-day trek. This app for mapping walks shines with its detailed surface and elevation data, allowing you to know exactly what kind of terrain you’ll be covering before you even step outside.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/78b614e3-7c87-4911-a503-341fb7d32e4b.jpg" alt="Komoot" class="img_ev3q"></p>
<p>Unlike subscription-first models, Komoot offers a unique pricing structure. You get one region for free to test its full capabilities, including turn-by-turn voice navigation and offline map downloads. After that, you can purchase individual regions or entire country packs with a one-time payment, which is a fantastic value if you tend to explore a specific area.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-3">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-3" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The platform's route planner is its standout feature, available on both the web and its mobile app. You can create custom routes that snap to known paths and trails, with the app providing detailed information on the waytypes (like pavement, hiking path, or cycleway) you’ll encounter. Its turn-by-turn navigation is clear and reliable, making it feel like a GPS for your feet.</p>
<p><strong>Best For:</strong> Planners who love crafting their own routes and walkers who primarily explore one geographic region, seeking excellent value for offline navigation.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.komoot.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.komoot.com</a></li>
<li><strong>Pricing:</strong> Free region to start. One-time purchases for single regions (from $3.99), region bundles, or a complete World Pack (around $29.99). A Premium subscription (around $59.99/year) unlocks advanced features like live tracking and multi-day planning.</li>
<li><strong>Pros:</strong> Great value with one-time map purchases, reliable offline navigation with clear voice instructions, powerful and easy-to-use route planners.</li>
<li><strong>Cons:</strong> Some advanced planning features are locked behind the annual Premium subscription, and regional pricing can vary by currency and app store.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-gaia-gps">6. Gaia GPS<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#6-gaia-gps" class="hash-link" aria-label="Direct link to 6. Gaia GPS" title="Direct link to 6. Gaia GPS">​</a></h2>
<p>For walkers who often venture beyond well-trodden paths into national parks and backcountry areas, Gaia GPS is a professional-grade navigation powerhouse. It moves beyond simple trail finding, offering a vast library of specialized map layers that cater to serious outdoor enthusiasts. If your walks frequently take you into areas with unreliable cell service, this app for mapping walks provides the robust, off-grid performance you need.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/c9db0158-dc66-493f-9e9a-df5a60c64ffd.jpg" alt="Gaia GPS" class="img_ev3q"></p>
<p>The platform's biggest strength is its unparalleled collection of over 250 map sources. You can overlay topographic maps, satellite imagery, public land boundaries, and even real-time weather data to plan your route with incredible detail. It's the kind of tool that empowers you to create your own walks, mark important waypoints, and confidently navigate complex terrain far from any marked trail.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-4">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-4" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>Gaia GPS offers route recording, waypoint marking, and detailed elevation profiling, all of which sync seamlessly between its web and mobile platforms. The free version provides a taste, but the Premium membership is where the essential features live, most notably the ability to download entire map regions for offline use. The interface is more technical than some competitors, but it’s clean and highly functional once you’re familiar with its layout.</p>
<p><strong>Best For:</strong> Serious hikers, backcountry walkers, and anyone who needs detailed, multi-layered maps for off-grid navigation, particularly in the U.S.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.gaiagps.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.gaiagps.com</a></li>
<li><strong>Pricing:</strong> Free basic plan. Gaia GPS Premium is around $39.99/year for offline maps and the full map catalog. It can also be bundled with an Outside+ membership, which provides access to additional content and learning resources.</li>
<li><strong>Pros:</strong> Enormous catalog of specialized U.S. map layers, excellent and reliable offline performance.</li>
<li><strong>Cons:</strong> Some users have noted price increases over the years, and the account system can be confusing as it is sometimes handled through a parent Outside account.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="7-caltopo">7. CalTopo<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#7-caltopo" class="hash-link" aria-label="Direct link to 7. CalTopo" title="Direct link to 7. CalTopo">​</a></h2>
<p>If you think of other apps as guidebooks, CalTopo is the professional cartographer’s toolkit. It’s an incredibly powerful web and mobile platform designed for serious backcountry planning, favored by search-and-rescue teams, wildland firefighters, and meticulous route planners. While it might be overkill for a simple neighborhood stroll, it’s an unparalleled app for mapping walks in complex or remote terrain where safety is paramount.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/e16d3b98-b89d-4cd0-ab3e-135f59f58326.jpg" alt="CalTopo" class="img_ev3q"></p>
<p>CalTopo’s strength lies in its layers. You can overlay detailed data like slope angle shading (critical for avalanche safety), public land ownership, weather forecasts, and various satellite imagery sources. Its web-based route-drawing tools are robust, allowing you to precisely plan a trip, analyze its elevation profile, and then seamlessly sync it to your phone for offline use.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-5">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-5" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The interface is dense and technical, reflecting its professional-grade capabilities. There is a steeper learning curve compared to more consumer-focused apps, but the payoff is immense control over your map creation. You can easily draw routes, place waypoints, and print high-quality physical maps for a backup. The free version is surprisingly capable for online planning, but a subscription is necessary to unlock its full potential, including most offline map layers.</p>
<p><strong>Best For:</strong> Experienced hikers, backcountry explorers, and anyone who needs detailed terrain analysis and safety-planning tools for their walks.</p>
<ul>
<li><strong>Website:</strong> <a href="https://caltopo.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://caltopo.com</a></li>
<li><strong>Pricing:</strong> Free for basic online use. Paid plans start around $50/year for individuals, unlocking essential features like offline layers and advanced planning tools.</li>
<li><strong>Pros:</strong> Exceptional terrain analysis and safety-planning layers, seamless web-to-mobile workflow for detailed planning, and powerful printing capabilities for physical backups.</li>
<li><strong>Cons:</strong> The user interface can be intimidating for beginners, and key offline features and advanced layers are locked behind a paid subscription.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="8-google-maps">8. Google Maps<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#8-google-maps" class="hash-link" aria-label="Direct link to 8. Google Maps" title="Direct link to 8. Google Maps">​</a></h2>
<p>It might seem obvious, but no list of mapping apps is complete without the default champion, Google Maps. While not a dedicated trail app, it’s arguably the most powerful and accessible tool for urban and suburban walks. Its greatest strength is its unparalleled database of roads, sidewalks, and points of interest (POIs), making it an indispensable app for mapping walks in populated areas. If you need to plan a route from your hotel to a cafe through city streets, this is your go-to.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/deffadd4-8712-4d9a-bb1b-2bcd9a4e2553.jpg" alt="Google Maps" class="img_ev3q"></p>
<p>Google’s platform excels at seamless, everyday navigation. Its step-by-step walking directions are best-in-class, often using landmarks for guidance ("turn right after the Starbucks"), and the Live View AR feature, which overlays directions onto your camera's view, feels like something from the future. It’s also a fantastic discovery tool, letting you find parks, coffee shops, or historical markers to build a walk around, complete with photos and recent reviews.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-6">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-6" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The user experience is familiar to almost everyone, with a clean interface that works flawlessly across web and mobile. Planning a multi-stop walk is simple, and the ability to share your route or live location with friends is a great safety feature. While its offline capabilities for walking can be less detailed than for driving, downloading city maps is a lifesaver when traveling. The platform's integration with other Google services also means your walking plans can sync with your calendar. For those who use tools like Dawarich, the ability to view your private location history on a familiar map interface is a major plus; you can <a href="https://dawarich.app/docs/features/map" target="_blank" rel="noopener noreferrer">learn more about its map features</a> on their website.</p>
<p><strong>Best For:</strong> Urban explorers and anyone needing reliable, free, and feature-rich navigation for walks in cities and towns.</p>
<ul>
<li><strong>Website:</strong> <a href="https://maps.google.com/" target="_blank" rel="noopener noreferrer">https://maps.google.com</a></li>
<li><strong>Pricing:</strong> Completely free for personal use.</li>
<li><strong>Pros:</strong> Unmatched POI data and place search, excellent step-by-step directions with AR, seamlessly syncs across all your devices.</li>
<li><strong>Cons:</strong> Not designed for off-road trails, offline walking data can be inconsistent, and some advanced smartwatch features are Android-exclusive.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="9-apple-maps">9. Apple Maps<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#9-apple-maps" class="hash-link" aria-label="Direct link to 9. Apple Maps" title="Direct link to 9. Apple Maps">​</a></h2>
<p>For those already invested in the Apple ecosystem, the built-in Maps app has quietly evolved into a surprisingly capable tool for mapping walks, especially for casual urban exploration and U.S. national park hikes. Instead of needing a third-party download, Apple provides a robust, free, and privacy-focused solution right on your iPhone, iPad, and Apple Watch. Its biggest advantage is the seamless integration across these devices.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/03f5e697-94fb-48c6-a2fe-d19b212e0aed.jpg" alt="Apple Maps" class="img_ev3q"></p>
<p>The platform has made significant strides, now offering detailed U.S. topographic maps and curated trail guides for national parks, which you can browse directly within the app. For city walkers, features like Look Around and immersive augmented reality (AR) walking directions in select cities offer a futuristic way to navigate. You can also create your own multi-stop walking routes on your Mac or iPad and they will automatically sync to your iPhone and Apple Watch for offline use.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-7">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-7" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The user experience is exactly what you'd expect from Apple: clean, intuitive, and deeply integrated. Planning a walk is straightforward, and the ability to have turn-by-turn directions on your Apple Watch is a fantastic, hands-free benefit. The custom route creation is simple, allowing you to plot points and save the journey for later. As it's a native app, it doesn't drain your battery as aggressively as some other GPS-heavy applications might.</p>
<p><strong>Best For:</strong> Apple users looking for a free, private, and seamlessly integrated solution for city walks and exploring trails in U.S. national parks.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.apple.com/maps" target="_blank" rel="noopener noreferrer">https://www.apple.com/maps</a></li>
<li><strong>Pricing:</strong> Completely free. All features are included with Apple devices and there are no premium tiers or advertisements.</li>
<li><strong>Pros:</strong> Excellent integration with Apple Watch and iOS, strong U.S. park guides, completely free and privacy-focused.</li>
<li><strong>Cons:</strong> Best features are exclusive to the Apple ecosystem. Advanced AR and topographic map details are not yet globally available.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="10-footpath-route-planner">10. Footpath Route Planner<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#10-footpath-route-planner" class="hash-link" aria-label="Direct link to 10. Footpath Route Planner" title="Direct link to 10. Footpath Route Planner">​</a></h2>
<p>Footpath Route Planner stands out for its simplicity and laser focus on one specific task: creating custom walking routes quickly and intuitively. Instead of browsing a massive library of pre-made trails, this app for mapping walks empowers you to draw your own path directly on the map with your finger. Its "snap-to-path" technology intelligently aligns your freehand drawing to actual roads, trails, and footpaths, making route creation a breeze.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/2b17eef8-a0b8-4b45-a6f1-ef898c83022d.jpg" alt="Footpath Route Planner" class="img_ev3q"></p>
<p>This approach is perfect for planning a specific urban walk, a run around your neighborhood, or a custom trail loop in a local park where you already know the area but want a precise distance and navigation. Once your route is set, the app provides turn-by-turn voice navigation and even lets you generate printable cue sheets, a nice touch for those who prefer a physical backup.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-8">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-8" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The user experience is clean and centered entirely around the route-drawing feature. You can analyze your created path for elevation and slope, which is great for planning workout intensity. Routes can be saved into folders for easy organization and exported for use on other devices. The app works seamlessly across iOS, Android, and a web interface, so you can plan on a larger screen and sync to your phone for the actual walk.</p>
<p><strong>Best For:</strong> Walkers and runners who want to quickly create and follow their own precise, custom-made routes in urban or familiar areas.</p>
<ul>
<li><strong>Website:</strong> <a href="https://footpathapp.com/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://footpathapp.com</a></li>
<li><strong>Pricing:</strong> Free to plan routes. The Footpath Elite subscription unlocks turn-by-turn navigation, offline maps, and premium map styles. Pricing is shown in-app but is generally affordable, with a 7-day free trial available.</li>
<li><strong>Pros:</strong> Incredibly fast and intuitive finger-drawing route creation, focused and easy-to-use interface, cross-platform support.</li>
<li><strong>Cons:</strong> Not designed for trail discovery; has a much smaller community and fewer shared routes compared to platforms like AllTrails.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="11-onx-backcountry">11. onX Backcountry<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#11-onx-backcountry" class="hash-link" aria-label="Direct link to 11. onX Backcountry" title="Direct link to 11. onX Backcountry">​</a></h2>
<p>Originally known for its hunting and off-roading maps, onX has brought its powerful mapping engine to the hiking world with onX Backcountry. This app is a serious contender for those venturing beyond well-trodden paths in the United States. It excels at providing detailed, layered maps that show you not just the trail, but crucial land ownership information, which can be a lifesaver when you're unsure if you're crossing onto private property.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/ec8c73f5-fb49-4a3b-a5fd-532195831303.jpg" alt="onX Backcountry" class="img_ev3q"></p>
<p>While it might seem like overkill for a simple neighborhood stroll, its robust offline capabilities and clear topographic and satellite layers make it a top-tier app for mapping walks in national forests, state parks, and remote wilderness areas. It even includes specialized data like avalanche forecasts and recent wildfire perimeters, highlighting its focus on safety and situational awareness in the backcountry.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-9">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-9" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The mobile app's user interface is clean and performs well, even when handling complex map layers in remote locations without cell service. You can easily record your tracks, add waypoints with photos, and build routes ahead of time. The guidebook-style trail data provides reliable descriptions and key stats for thousands of hikes, integrated directly into the map.</p>
<p><strong>Best For:</strong> Serious hikers, backpackers, and anyone walking in remote U.S. areas where land ownership and access are key considerations.</p>
<ul>
<li><strong>Website:</strong> <a href="https://www.onxmaps.com/backcountry?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">https://www.onxmaps.com/backcountry</a></li>
<li><strong>Pricing:</strong> Premium is around $29.99/year for offline maps and trail data. Elite is about $59.99/year and adds private land data and other advanced layers. Introductory offers are common.</li>
<li><strong>Pros:</strong> Excellent U.S. land ownership and access information, strong mobile performance for backcountry navigation, and straightforward pricing.</li>
<li><strong>Cons:</strong> Content is heavily focused on U.S. outdoor/backcountry use, and the advanced features are likely unnecessary for casual urban walkers.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="12-osmand">12. OsmAnd<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#12-osmand" class="hash-link" aria-label="Direct link to 12. OsmAnd" title="Direct link to 12. OsmAnd">​</a></h2>
<p>OsmAnd is the app for the fiercely independent walker who values privacy and offline capability above all else. Built on the open-source OpenStreetMap (OSM) project, it’s a powerful navigation tool that works entirely offline, making it a fantastic app for mapping walks in remote areas or while traveling internationally without a data plan. Instead of streaming maps, you download detailed maps for entire countries or regions directly to your device.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/screenshots/58fb0f75-d417-40ca-82d1-24b95a4f5473.jpg" alt="OsmAnd" class="img_ev3q"></p>
<p>This app stands out by giving you granular control over your experience without tethering you to a big-tech ecosystem. You can import GPX files for custom routes, customize what details appear on your map, and trust that your location data isn't being harvested. It's less about social discovery and more about pure, reliable, self-sufficient navigation.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-features--user-experience-10">Core Features &amp; User Experience<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#core-features--user-experience-10" class="hash-link" aria-label="Direct link to Core Features &amp; User Experience" title="Direct link to Core Features &amp; User Experience">​</a></h3>
<p>The initial experience can be daunting; the interface is dense and packed with features, presenting a steeper learning curve than slicker, more mainstream apps. However, for those willing to invest a little time, the payoff is immense. You get turn-by-turn voice navigation for walking, contour lines for terrain, and a high degree of map customization. The free version includes a limited number of map downloads to get you started.</p>
<p><strong>Best For:</strong> Privacy-conscious users, international travelers, and tech-savvy walkers who want complete offline functionality and control over their maps.</p>
<ul>
<li><strong>Website:</strong> <a href="https://osmand.net/" target="_blank" rel="noopener noreferrer">https://osmand.net</a></li>
<li><strong>Pricing:</strong> Free version with limited map downloads. OsmAnd+ Maps &amp; GPS Offline is a one-time purchase (around $29.99 on iOS) or a subscription plan (OsmAnd Pro) is available for access to all features and frequent map updates.</li>
<li><strong>Pros:</strong> Strong privacy posture and extensive offline capability, works globally, and is excellent for custom GPX walks.</li>
<li><strong>Cons:</strong> The user interface has a steep learning curve and can feel cluttered compared to more minimalist apps.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="12-walk-mapping-apps-feature-comparison">12 Walk-Mapping Apps: Feature Comparison<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#12-walk-mapping-apps-feature-comparison" class="hash-link" aria-label="Direct link to 12 Walk-Mapping Apps: Feature Comparison" title="Direct link to 12 Walk-Mapping Apps: Feature Comparison">​</a></h2>
<table><thead><tr><th>Product</th><th style="text-align:right">Core features</th><th>Privacy &amp; data controls</th><th>Best for / Target audience</th><th>Price &amp; value</th></tr></thead><tbody><tr><td><strong>Dawarich (Recommended)</strong></td><td style="text-align:right">Automatic location journaling; private searchable timeline; Trips, Map, Stats, Scratch Map; photo geotagging; import/export</td><td>SSL/TLS in transit, LUKS at rest, EU servers, GDPR‑compliant; self‑host option</td><td>Travelers, lifeloggers, privacy‑conscious users, compliant field teams</td><td>Cloud €7.50/mo or €90/yr; Business custom; self‑host free; 7‑day trial; up to 10M points</td></tr><tr><td>AllTrails</td><td style="text-align:right">Large trail database, reviews, elevation profiles, route navigation (paid)</td><td>Community data sharing; standard app data collection</td><td>Hikers, trail discovery, casual walkers</td><td>Free; AllTrails+ and Peak paid tiers (offline maps, nav)</td></tr><tr><td>Strava</td><td style="text-align:right">Activity tracking, route builder, popularity heatmaps, social features, wearable sync</td><td>Activity sharing defaults; data used for social/metrics; some features behind paywall</td><td>Runners, fitness‑focused walkers, wearable users</td><td>Free + subscription (varies by country)</td></tr><tr><td>MapMyWalk (Under Armour)</td><td style="text-align:right">Walking routes, training plans, audio coaching, live tracking, wearable sync</td><td>Under Armour data policies; standard account data collection</td><td>Walk training, motivated walkers, wearable syncing</td><td>Free + MVP subscription (relatively low annual price)</td></tr><tr><td>Komoot</td><td style="text-align:right">Turn‑by‑turn voice nav, offline region downloads, route planner with surface/elevation</td><td>Standard app data practices</td><td>Region‑focused hikers/walkers, offline navigation</td><td>One‑time region purchases or Premium annual</td></tr><tr><td>Gaia GPS</td><td style="text-align:right">250+ map layers (topo, USGS), offline downloads, track recording, waypoints</td><td>Standard collection; sync across devices</td><td>Backcountry hikers, parks, serious map users</td><td>Subscription or Outside+ bundle</td></tr><tr><td>CalTopo</td><td style="text-align:right">Advanced terrain and safety layers, route drawing, exportable/printable maps</td><td>Standard collection; popular with SAR community</td><td>Power users, SAR, safety planners</td><td>Free basic; paid tiers for offline/advanced layers</td></tr><tr><td>Google Maps</td><td style="text-align:right">Step‑by‑step walking directions, rich POIs, Live View AR, cross‑platform sync</td><td>Heavy data collection tied to Google accounts</td><td>Urban/suburban walks, POI discovery, mainstream users</td><td>Free</td></tr><tr><td>Apple Maps</td><td style="text-align:right">Walking directions, AR guidance, topo/park maps, Apple Watch sync</td><td>Privacy‑focused within Apple ecosystem</td><td>iOS/Apple Watch users, casual city &amp; park walkers</td><td>Free</td></tr><tr><td>Footpath Route Planner</td><td style="text-align:right">Finger‑draw &amp; snap‑to‑path route creation, turn‑by‑turn nav, cue sheets</td><td>Standard app data; in‑app pricing</td><td>Fast custom route creation for neighborhood/park walks</td><td>Free + Elite subscription (7‑day trial)</td></tr><tr><td>onX Backcountry</td><td style="text-align:right">Topo &amp; satellite layers, offline maps, weather/avalanche info, private‑land overlays</td><td>Standard collection; clear land/access data</td><td>Backcountry hikers, land‑access planning</td><td>Paid tiers; Elite for private‑land overlays</td></tr><tr><td>OsmAnd</td><td style="text-align:right">OSM‑based fully offline maps, GPX import/export, granular controls</td><td>Strong privacy stance; no big‑tech account required</td><td>Travelers, privacy‑conscious users, global offline navigation</td><td>Free + optional Maps+/Pro purchases</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="which-walking-app-is-right-for-your-journey">Which Walking App is Right for Your Journey?<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#which-walking-app-is-right-for-your-journey" class="hash-link" aria-label="Direct link to Which Walking App is Right for Your Journey?" title="Direct link to Which Walking App is Right for Your Journey?">​</a></h2>
<p>Well, that was quite a hike through the world of digital wayfinding! We’ve navigated a dozen different contenders, each promising to be the best <strong>app for mapping walks</strong>, but as we've seen, the "best" app is less about a universal winner and more about finding the perfect partner for your personal journey. Your ideal tool depends entirely on your "why" for walking.</p>
<p>It's clear the market has an app for every kind of walker. If you thrive on competition, kudos, and community leaderboards, the social ecosystems of <strong>Strava</strong> and <strong>MapMyWalk</strong> are designed to keep you motivated and connected. They turn every walk into a shareable event, focusing on performance, fitness goals, and social validation. They’re excellent for training and finding local walking buddies.</p>
<p>For those whose paths lead them off the beaten track, the choice is equally clear but geared toward survival and discovery. Rugged adventurers and serious hikers need the specialized power of <strong>Gaia GPS</strong>, <strong>onX Backcountry</strong>, or <strong>CalTopo</strong>. These apps are less about social sharing and more about detailed topographic layers, offline reliability, and ensuring you make it home safely. They are the digital equivalent of a trusty compass and a well-worn paper map.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="finding-your-fit-a-quick-guide">Finding Your Fit: A Quick Guide<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#finding-your-fit-a-quick-guide" class="hash-link" aria-label="Direct link to Finding Your Fit: A Quick Guide" title="Direct link to Finding Your Fit: A Quick Guide">​</a></h3>
<p>So, how do you filter through the noise and pick the right one? Let's boil it down to a few key questions you should ask yourself before downloading anything:</p>
<ul>
<li><strong>What is my primary goal?</strong> Is it fitness tracking, backcountry navigation, urban exploration, or creating a personal memory log? Your answer is the single most important factor.</li>
<li><strong>How important is privacy to me?</strong> Are you comfortable with your location data being part of a social network, or do you need a private, secure vault for your personal timeline? This is a crucial distinction between apps like Strava and Dawarich.</li>
<li><strong>Do I need offline access?</strong> If you frequently walk in areas with spotty cell service, apps with robust offline mapping capabilities like OsmAnd, Gaia GPS, and Komoot should be at the top of your list.</li>
<li><strong>What’s my budget?</strong> While many apps offer great free tiers, the most powerful features are often locked behind a subscription. Decide if the premium offerings are worth the investment for your specific use case.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-rise-of-the-personal-journey-log">The Rise of the Personal Journey Log<a href="https://dawarich.app/blog/12-best-apps-for-mapping-your-walks-in-2025#the-rise-of-the-personal-journey-log" class="hash-link" aria-label="Direct link to The Rise of the Personal Journey Log" title="Direct link to The Rise of the Personal Journey Log">​</a></h3>
<p>While many apps focus on the walk itself - the pace, the elevation, the calories burned - there's a growing need for an <strong>app for mapping walks</strong> that focuses on the <em>story</em> behind the walk. This is where the landscape of options shifts dramatically. For lifeloggers, digital nomads, and anyone who wants to preserve their memories, the primary goal isn't performance; it's effortless, automatic documentation.</p>
<p>This is the specific niche where <strong>Dawarich</strong> shines. It operates on a fundamentally different principle. It’s not about pushing you to walk faster or further. Instead, it works quietly in the background, creating a rich, private, and searchable tapestry of your life's movements. It’s designed for the person who revisits a city and wants to find that tiny cafe they loved, the traveler documenting a multi-month journey, or the memory keeper who values having an accurate timeline of their life.</p>
<p>By prioritizing automatic tracking, GDPR-grade privacy, and powerful journaling features, Dawarich serves a need the fitness and hardcore navigation apps simply don’t address. It’s for those of us who believe the journey itself is the destination, and that every step is part of a larger story worth remembering. So, as you lace up your shoes, consider what you want to get out of your walk. Whether it's a new personal best, a stunning mountain view, or a memory saved for a lifetime, there’s an app ready to map the way.</p>
<hr>
<p>Ready to start building your own private world map? If you're looking for an <strong>app for mapping walks</strong> that automatically creates a beautiful, searchable timeline of your life's journeys without compromising your privacy, give <strong>Dawarich</strong> a try. See your story unfold at <a href="https://dawarich.app/?utm_source=dawarich_blog&amp;utm_medium=referral&amp;utm_campaign=best-walking-apps-2025" target="_blank" rel="noopener noreferrer">Dawarich</a> and begin your life's archive today.</p>]]></content:encoded>
            <category>Guide</category>
        </item>
        <item>
            <title><![CDATA[A Guide to Your Location History Visualizer]]></title>
            <link>https://dawarich.app/blog/a-guide-to-your-location-history-visualizer</link>
            <guid>https://dawarich.app/blog/a-guide-to-your-location-history-visualizer</guid>
            <pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Ever wonder where all that location data your phone collects actually goes? A location history visualizer takes that raw, boring stream of GPS coordinates and turns it into a vivid, interactive story of your life's travels.]]></description>
            <content:encoded><![CDATA[<p>Ever wonder where all that location data your phone collects actually goes? A location history visualizer takes that raw, boring stream of GPS coordinates and turns it into a vivid, interactive story of your life's travels.</p>
<p>Instead of a spreadsheet of numbers, you get a personal map showing every path you’ve taken and every place you’ve spent your time. I've found it's a fascinating way to truly <em>see</em> your journeys, from the daily grind to that unforgettable road trip.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-exactly-is-a-location-history-visualizer">What Exactly Is a Location History Visualizer?<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#what-exactly-is-a-location-history-visualizer" class="hash-link" aria-label="Direct link to What Exactly Is a Location History Visualizer?" title="Direct link to What Exactly Is a Location History Visualizer?">​</a></h2>
<p>Have you ever tried to retrace the exact route of a past vacation or wondered which parts of your city you <em>really</em> hang out in the most? A <strong>location history visualizer</strong> is the tool that brings those answers to life. Think of it as a personal time machine for your movements, transforming abstract data points from your phone into something you can actually see and interact with.</p>
<p>A good visualizer doesn't just drop pins on a map; it connects the dots. It can draw the precise lines of a cross-country drive or build a colorful heatmap that instantly reveals your favorite neighborhoods, coffee shops, and parks. It’s all about making your own data understandable and, frankly, pretty cool to explore.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="its-more-than-just-a-fun-distraction">It's More Than Just a Fun Distraction<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#its-more-than-just-a-fun-distraction" class="hash-link" aria-label="Direct link to It's More Than Just a Fun Distraction" title="Direct link to It's More Than Just a Fun Distraction">​</a></h3>
<p>Seeing your past travels mapped out is one thing, but the practical uses go way deeper. People are using these tools to turn their digital footprints into some genuinely useful insights.</p>
<p>Here’s why you might want to do this:</p>
<ul>
<li><strong>Build a Digital Travel Journal:</strong> Automatically log every step of a trip, creating an interactive scrapbook of your adventures you can look back on for years.</li>
<li><strong>See Your Own Habits:</strong> Get a clear picture of your daily and weekly routines. Are you hitting the gym as much as you think? How has your commute changed over time?</li>
<li><strong>Rediscover Forgotten Moments:</strong> The best discoveries are often the small detours and forgotten stops—the kind of thing a simple list of addresses would never capture.</li>
</ul>
<blockquote>
<p>A location history visualizer turns a dry list of coordinates into a living document of your experiences. It provides context, reveals patterns, and helps you tell the story of where you've been in a way that data alone never could.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="turning-raw-data-into-a-story">Turning Raw Data Into a Story<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#turning-raw-data-into-a-story" class="hash-link" aria-label="Direct link to Turning Raw Data Into a Story" title="Direct link to Turning Raw Data Into a Story">​</a></h3>
<p>At its core, the real magic of a location history visualizer is its ability to create a narrative. It doesn't just show you <em>where</em> you went; it shows you <em>how</em> you got there. That jump from static points to dynamic paths is what makes the whole thing so compelling.</p>
<p>You can see the winding mountain roads from that summer road trip, the overlapping routes of your daily life, or the concentrated glow of a city you explored entirely on foot. Each visualization is a unique map of your personal history, built from the digital breadcrumbs you leave behind every day. It's your story, told through geography.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-your-digital-footprints-become-a-map">How Your Digital Footprints Become a Map<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#how-your-digital-footprints-become-a-map" class="hash-link" aria-label="Direct link to How Your Digital Footprints Become a Map" title="Direct link to How Your Digital Footprints Become a Map">​</a></h2>
<p>So how does a bunch of abstract data from your phone magically become a detailed map of your life? It’s a lot like connecting the dots in a massive, invisible drawing that follows you everywhere you go. Once you peek behind the curtain, the process is surprisingly straightforward.</p>
<p>It all starts with data collection. Every time your phone pings a cell tower, hops on a Wi-Fi network, or uses its GPS, it can log your coordinates. Services like Google Maps quietly gather these digital breadcrumbs, building a massive, continuous log of your movements, complete with timestamps.</p>
<p>This raw data is the absolute lifeblood of any <strong>location history visualizer</strong>. Without it, there’s nothing to map.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="decoding-your-digital-diary">Decoding Your Digital Diary<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#decoding-your-digital-diary" class="hash-link" aria-label="Direct link to Decoding Your Digital Diary" title="Direct link to Decoding Your Digital Diary">​</a></h3>
<p>Your location history is usually packed into specific file formats that are designed to be read by computers. Think of these as the raw ingredients for our visual recipe. To us, they might look like a jumble of code, but they contain a perfectly organized record of your journeys.</p>
<p>The most common formats you’ll bump into are:</p>
<ul>
<li><strong>Google's JSON files:</strong> When you download your history from <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">Google Takeout</a>, you get a file in JSON (JavaScript Object Notation) format. It’s a text-based format that lays out your data in a clean, hierarchical structure, showing you the places you’ve been and the paths you took to get there.</li>
<li><strong>GPX (GPS Exchange Format):</strong> This is the universal standard loved by fitness apps and hiking gadgets. It's an XML-based file that logs waypoints, routes, and tracks, making it perfect for recreating a specific trip from start to finish.</li>
<li><strong>KML (Keyhole Markup Language):</strong> Originally created for <a href="https://earth.google.com/" target="_blank" rel="noopener noreferrer">Google Earth</a>, KML files are fantastic for displaying geographic data in an Earth browser. They can hold anything from points and lines to even 3D models.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="from-raw-data-to-a-visual-story">From Raw Data to a Visual Story<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#from-raw-data-to-a-visual-story" class="hash-link" aria-label="Direct link to From Raw Data to a Visual Story" title="Direct link to From Raw Data to a Visual Story">​</a></h3>
<p>Once you've got your data file, the visualizer tool steps in to act as the translator. It combs through thousands of data points—each one a specific latitude, longitude, and time—and starts plotting them on a digital map. It's essentially an automated game of "you were here... then here... then here."</p>
<p>The tool then connects these dots chronologically, drawing lines that trace the exact routes you traveled. If the data shows you hung out in one spot for a while, the visualizer can interpret that as a significant stop or a place you visited.</p>
<blockquote>
<p>This is where the real magic happens. A good visualizer doesn't just plot dots; it interprets the data to create meaningful pictures like routes, timelines, or heatmaps. It turns a sterile log file into a personal story.</p>
</blockquote>
<p>The value here goes way beyond just satisfying your own curiosity. Businesses are catching on to the power of mapping in a big way. A Boston Consulting Group survey found that <strong>95% of executives</strong> see geospatial analytics as critical for getting results, and this reliance is only growing. This trend is fueling the global location intelligence market, which is expected to hit nearly <strong>USD 35 billion by 2029</strong>, as companies use these tools for everything from picking store locations to optimizing delivery routes.</p>
<p>For you, this powerful technology can reveal patterns you’d otherwise miss completely. You might realize your commute has slowly gotten longer over the years or rediscover a hidden gem from a vacation you took long ago — all because a tool was able to connect the dots.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="choosing-the-right-visualizer-tool-for-you">Choosing the Right Visualizer Tool for You<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#choosing-the-right-visualizer-tool-for-you" class="hash-link" aria-label="Direct link to Choosing the Right Visualizer Tool for You" title="Direct link to Choosing the Right Visualizer Tool for You">​</a></h2>
<p>Not all visualizer tools are built the same, and picking the right one really boils down to what you’re trying to do. Think of it like choosing a camera: sometimes your phone is all you need for a quick snapshot, but other times, you want a professional DSLR with a bag full of lenses. Location history visualizers are a lot like that.</p>
<p>It all starts with figuring out what you actually want. Are you just curious and looking for a simple, automated summary of your year? Or are you a data geek who wants to dig deep, applying custom filters and running your own analysis?</p>
<p>Let's walk through the main options out there.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="built-in-services-the-set-it-and-forget-it-option">Built-in Services: The "Set It and Forget It" Option<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#built-in-services-the-set-it-and-forget-it-option" class="hash-link" aria-label="Direct link to Built-in Services: The &quot;Set It and Forget It&quot; Option" title="Direct link to Built-in Services: The &quot;Set It and Forget It&quot; Option">​</a></h3>
<p>For most people, the simplest starting point is a built-in service like <a href="https://www.google.com/maps/timeline" target="_blank" rel="noopener noreferrer">Google Timeline</a>. If you have location history turned on for your Google account, it’s already been quietly logging your movements in the background. It automatically pieces together your travels, figures out the places you’ve visited, and gives you a clean, straightforward look at your life on the map.</p>
<p>The biggest draws here are <strong>convenience and automation</strong>. You don't have to set anything up, download any files, or install a single piece of software. It just works.</p>
<ul>
<li><strong>Pros:</strong> Completely hands-off, easy to check anytime, and great for a simple day-to-day recap.</li>
<li><strong>Cons:</strong> Very limited customization, you have less control over your own data, and you're locked into the Google ecosystem.</li>
</ul>
<p>This is the perfect choice if you just want a casual look back at your travels without getting technical. It's the point-and-shoot camera of the visualizer world.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="dedicated-web-and-desktop-apps">Dedicated Web and Desktop Apps<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#dedicated-web-and-desktop-apps" class="hash-link" aria-label="Direct link to Dedicated Web and Desktop Apps" title="Direct link to Dedicated Web and Desktop Apps">​</a></h3>
<p>If you're ready for a bit more control, dedicated web and desktop applications are the next step up. These tools are specifically built to import your location data—usually from a Google Takeout file—and give you more powerful ways to explore it. You can start filtering by date, switching between different views like heatmaps and routes, and really analyzing your patterns.</p>
<p>These apps hit a sweet spot. They offer far more features than the built-in services but are still pretty easy to get the hang of. You can finally interact with your data in more meaningful ways, like isolating a specific road trip or seeing a density map of your most frequented spots in the city.</p>
<blockquote>
<p>A dedicated app unlocks what’s really hiding in your location data. Instead of just seeing where you've been, you can start asking <em>why</em> and <em>how</em>, turning a simple log into a powerful tool for self-reflection.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="self-hosted-solutions-for-ultimate-privacy-and-control">Self-Hosted Solutions: For Ultimate Privacy and Control<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#self-hosted-solutions-for-ultimate-privacy-and-control" class="hash-link" aria-label="Direct link to Self-Hosted Solutions: For Ultimate Privacy and Control" title="Direct link to Self-Hosted Solutions: For Ultimate Privacy and Control">​</a></h3>
<p>For anyone who puts data ownership and privacy first, self-hosted solutions are the only way to go. A self-hosted <strong>location history visualizer</strong> means you run the software on your own server—this could be a spare computer at home or a private cloud server you rent. The bottom line is, you have complete and total control over your personal information.</p>
<p>Tools like <a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">Dawarich</a> are designed around this privacy-first idea. You import your data, and it stays entirely within your environment, never uploaded to a third-party service you don't manage. This completely sidesteps the privacy trade-offs you make with other platforms. To see what this feels like, you can check out a <a href="https://dawarich.app/tools/timeline-visualizer" target="_blank" rel="noopener noreferrer">timeline visualizer that puts you in the driver's seat</a>.</p>
<p>This path does take a bit more technical know-how to set up (you'll likely run into tools like Docker), but for privacy-minded folks, the payoff is huge. You get powerful features, true ownership of your data, and the peace of mind that comes from knowing your digital footprints are truly your own.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="comparing-location-history-visualizer-options">Comparing Location History Visualizer Options<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#comparing-location-history-visualizer-options" class="hash-link" aria-label="Direct link to Comparing Location History Visualizer Options" title="Direct link to Comparing Location History Visualizer Options">​</a></h3>
<p>To help you decide, here’s a breakdown of the common visualizer types. Think about what matters most to you—simplicity, features, or privacy—to find the best fit.</p>
<table><thead><tr><th style="text-align:left">Feature</th><th style="text-align:left">Built-in Services (e.g., Google Timeline)</th><th style="text-align:left">Dedicated Apps (Web/Desktop)</th><th style="text-align:left">Self-Hosted Solutions (e.g., Dawarich)</th></tr></thead><tbody><tr><td style="text-align:left"><strong>Privacy</strong></td><td style="text-align:left">Low (Data held by a third-party)</td><td style="text-align:left">Medium (Data processed locally, but app is third-party)</td><td style="text-align:left">High (You own and control everything)</td></tr><tr><td style="text-align:left"><strong>Ease of Use</strong></td><td style="text-align:left">Very High (Fully automated)</td><td style="text-align:left">High (Simple import process)</td><td style="text-align:left">Low (Requires technical setup)</td></tr><tr><td style="text-align:left"><strong>Customization</strong></td><td style="text-align:left">Very Low (Basic views only)</td><td style="text-align:left">Medium (Filtering, some map options)</td><td style="text-align:left">Very High (Full control over data and display)</td></tr><tr><td style="text-align:left"><strong>Data Control</strong></td><td style="text-align:left">None (Data is on their servers)</td><td style="text-align:left">Limited (You provide the file)</td><td style="text-align:left">Complete (You host the data and software)</td></tr><tr><td style="text-align:left"><strong>Cost</strong></td><td style="text-align:left">Free</td><td style="text-align:left">Free to Paid</td><td style="text-align:left">Free software, but potential server costs</td></tr><tr><td style="text-align:left"><strong>Best For</strong></td><td style="text-align:left">Casual users wanting a simple summary.</td><td style="text-align:left">Data enthusiasts who want deeper insights without technical overhead.</td><td style="text-align:left">Privacy-conscious individuals and tech-savvy users.</td></tr></tbody></table>
<p>Ultimately, there’s no single "best" tool—it's all about what works for <em>you</em>. Whether you want a quick glance or a deep dive, there’s an option out there that will bring your personal map to life.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-visualize-your-own-location-history">How to Visualize Your Own Location History<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#how-to-visualize-your-own-location-history" class="hash-link" aria-label="Direct link to How to Visualize Your Own Location History" title="Direct link to How to Visualize Your Own Location History">​</a></h2>
<p>Alright, let's get our hands dirty and turn that mountain of raw data into something you can actually see and explore. This is where we move from theory to practice and build your own interactive map. Don't worry, the journey from a data file to a full-blown visualization is much easier than it sounds.</p>
<p>We'll start with the most common first step for most people: getting your data out of Google's hands. After that, we'll walk through setting up a self-hosted <strong>location history visualizer</strong> called Dawarich. It’s an awesome tool that gives you total control over your private information.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-exporting-your-data-from-google-takeout">Step 1: Exporting Your Data from Google Takeout<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#step-1-exporting-your-data-from-google-takeout" class="hash-link" aria-label="Direct link to Step 1: Exporting Your Data from Google Takeout" title="Direct link to Step 1: Exporting Your Data from Google Takeout">​</a></h3>
<p>Before you can map out anything, you need the raw ingredients. If you’re an Android user (or even an iPhone user with Google Maps installed), Google has been logging your every move. Thankfully, they offer a tool called <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">Google Takeout</a> that lets you download a copy of it.</p>
<p>Getting the <em>right</em> file is the key here. It’s pretty straightforward.</p>
<ol>
<li><strong>Head over to Google Takeout:</strong> Open up the official <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">Google Takeout</a> site. You’ll see a massive list of every Google service that has a piece of your data.</li>
<li><strong>Deselect Everything:</strong> By default, it wants to give you everything. Immediately click <strong>"Deselect all"</strong> at the top. Trust me, you don't need your old YouTube comments for this project.</li>
<li><strong>Find and Select Location History:</strong> Now, scroll down until you spot <strong>"Location History"</strong> and just check that one box. This tells Takeout you only want that specific dataset. The format will be <strong>JSON</strong>, which is exactly what we need.</li>
<li><strong>Create the Export:</strong> Scroll to the bottom and hit "Next step." On the next screen, you can just stick with the defaults (export once, .zip file) and click <strong>"Create export."</strong></li>
</ol>
<p>Google will start packaging up your history. This might take a few minutes or a bit longer, depending on how much data you have. You’ll get an email with a download link when it's all ready.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-2-setting-up-a-self-hosted-visualizer-with-dawarich">Step 2: Setting Up a Self-Hosted Visualizer with Dawarich<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#step-2-setting-up-a-self-hosted-visualizer-with-dawarich" class="hash-link" aria-label="Direct link to Step 2: Setting Up a Self-Hosted Visualizer with Dawarich" title="Direct link to Step 2: Setting Up a Self-Hosted Visualizer with Dawarich">​</a></h3>
<p>Once that .zip file is on your computer, it's time to bring it to life. For this guide, we're using Dawarich because it’s a powerful, privacy-first option you can run on your own machine. That means your sensitive location data never leaves your computer or gets uploaded to some random third-party service.</p>
<blockquote>
<p>The magic of self-hosting is data ownership. When you run the software yourself, you're not just a user—you're the administrator. Your personal history stays completely under your control, from start to finish.</p>
</blockquote>
<p>The idea of "self-hosting" might sound a little techy, but tools like Docker make it surprisingly simple. Think of Docker as a way to run applications in their own neat little boxes, so you don't have to fuss with complicated setup and configuration.</p>
<p>This infographic breaks down the choice you have, from easy-but-less-private cloud services to the more controlled, self-hosted route we're taking.</p>
<p><img decoding="async" loading="lazy" src="https://cdn.outrank.so/b525f62c-b7c3-42be-937a-09155d6a52aa/6c04746a-1a43-451a-af68-acc04df2829d.jpg" alt="Infographic about location history visualizer" class="img_ev3q"></p>
<p>As you can see, you trade a little bit of initial convenience for a massive gain in privacy and control by going the self-hosted route. It's a worthy trade-off.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-3-installation-and-data-import">Step 3: Installation and Data Import<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#step-3-installation-and-data-import" class="hash-link" aria-label="Direct link to Step 3: Installation and Data Import" title="Direct link to Step 3: Installation and Data Import">​</a></h3>
<p>The Dawarich project keeps everything you need—code, documentation, and instructions—on its GitHub page.</p>
<p>While the exact commands might differ slightly based on your computer, the general process with Docker is a breeze:</p>
<ul>
<li><strong>Install Docker:</strong> If you don't have it, you'll need to install Docker first. It's a one-time setup.</li>
<li><strong>Run the Dawarich Container:</strong> You'll run a single command from the Dawarich documentation. This will automatically download and start the application.</li>
<li><strong>Import Your Data:</strong> With Dawarich running, open it in your web browser. You’ll see an option to import your Google Takeout file. Just unzip the file you downloaded, find the <code>Location History.json</code> file inside, and upload it.</li>
</ul>
<p>The platform will chew on the data for a bit and then, like magic, your personal map will start to fill in. For a more detailed walkthrough, you can follow this excellent guide on <strong><a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich" target="_blank" rel="noopener noreferrer">migrating from Google Location History to Dawarich</a></strong>.</p>
<p>This whole field of location analytics is absolutely exploding. We're talking about a market that was valued at around <strong>USD 31.3 billion</strong> in 2025 and is expected to rocket to <strong>USD 124.3 billion</strong> by 2035. This boom is fueled by all the smart devices and IoT tech that generate a constant stream of location data. This data is used for everything from city planning to, well, personal journaling.</p>
<p>By setting up your own visualizer, you’re basically tapping into this powerful technology for your own benefit. You can find more details on the <a href="https://www.futuremarketinsights.com/reports/location-analytics-market" target="_blank" rel="noopener noreferrer">growth of the location analytics market on futuremarketinsights.com</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="practical-ways-to-use-your-visualized-data">Practical Ways to Use Your Visualized Data<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#practical-ways-to-use-your-visualized-data" class="hash-link" aria-label="Direct link to Practical Ways to Use Your Visualized Data" title="Direct link to Practical Ways to Use Your Visualized Data">​</a></h2>
<p><a href="https://www.youtube.com/embed/SXAShotdFZo" target="_blank" rel="noopener noreferrer">https://www.youtube.com/embed/SXAShotdFZo</a></p>
<p>So, you’ve wrestled with Google Takeout, set up your own visualizer, and now you’re staring at this incredible, intricate map of your life. The big question is: now what? This is more than just a cool digital art project. This is where your data stops being a passive log and starts becoming a tool for reflection, planning, and even storytelling.</p>
<p>Turning those colorful lines and heatmaps into something genuinely useful is the most rewarding part of the whole process. Whether you're a travel junkie, a creature of habit, or just someone curious about your own patterns, there are tons of practical applications waiting to be discovered. It's a chance to see your life from a completely new angle.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-personal-reflection-and-habit-analysis">For Personal Reflection and Habit Analysis<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#for-personal-reflection-and-habit-analysis" class="hash-link" aria-label="Direct link to For Personal Reflection and Habit Analysis" title="Direct link to For Personal Reflection and Habit Analysis">​</a></h3>
<p>One of the most powerful uses for your visualized data is simply getting to know yourself better. A location history visualizer acts like a mirror, reflecting your habits and routines back at you in a way you've never seen before. You might <em>think</em> you have a good handle on your weekly schedule, but the map doesn't lie.</p>
<p>This kind of visual feedback can be incredibly eye-opening if you're looking to make some intentional changes.</p>
<ul>
<li><strong>Analyze Your Routines:</strong> See exactly how your commute has shifted over the years. Is that new shortcut actually saving you time, or just adding stress? The data will tell you.</li>
<li><strong>Track Your Goals:</strong> Wondering if you're hitting the gym as often as you promised yourself? A heatmap will quickly show you which locations dominate your time—the fitness center or the coffee shop down the street.</li>
<li><strong>Rediscover Your City:</strong> You can easily spot the neighborhoods you gravitate towards and the ones you’ve completely neglected. It’s a great way to inspire yourself to break out of your bubble and explore new places right in your own backyard.</li>
</ul>
<blockquote>
<p>Your location data tells a story about your priorities, whether you realize it or not. Visualizing it lets you read that story and decide if you want to write a different one.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-travel-journaling-and-future-planning">For Travel Journaling and Future Planning<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#for-travel-journaling-and-future-planning" class="hash-link" aria-label="Direct link to For Travel Journaling and Future Planning" title="Direct link to For Travel Journaling and Future Planning">​</a></h3>
<p>For anyone who loves to travel, a location history visualizer is the ultimate digital scrapbook. Forget trying to remember the name of that amazing little restaurant you stumbled upon in a new city—your map already has it logged. It creates a definitive, interactive record of your adventures.</p>
<p>You can relive a trip by tracing the exact path you took, seeing every detour and spontaneous stop along the way. But it’s not just about looking back; it’s also an incredible tool for planning what's next. By analyzing your past trips, you can see what kinds of places you're naturally drawn to and plan future adventures that build on old favorites.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="for-professional-and-creative-projects">For Professional and Creative Projects<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#for-professional-and-creative-projects" class="hash-link" aria-label="Direct link to For Professional and Creative Projects" title="Direct link to For Professional and Creative Projects">​</a></h3>
<p>Beyond personal use, visualizing location data has some surprisingly practical professional applications. For people in certain fields, this kind of log is more than just a novelty; it’s a functional dataset that can inform their work and creative projects.</p>
<p>Just think about these examples:</p>
<ul>
<li><strong>Photographers:</strong> Can automatically log every shoot location, making it a breeze to return to a great spot or find new angles in a familiar area.</li>
<li><strong>Urban Cyclists:</strong> Can analyze their most frequent routes to identify safer or more efficient paths, contributing to a better understanding of city infrastructure.</li>
<li><strong>Field Researchers:</strong> Can document their movements through a study area, providing a verifiable record of where and when data was collected.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="managing-your-location-data-with-privacy-in-mind">Managing Your Location Data with Privacy in Mind<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#managing-your-location-data-with-privacy-in-mind" class="hash-link" aria-label="Direct link to Managing Your Location Data with Privacy in Mind" title="Direct link to Managing Your Location Data with Privacy in Mind">​</a></h2>
<p>Let's be real for a second. Diving into your location history is a blast—it’s like re-reading your own personal travel diary. But this data is about as personal as it gets. Handling it with care isn't just a suggestion; it's a must.</p>
<p>This leads you to a crossroads: do you go for convenience or for control? Using a service like <a href="https://timeline.google.com/" target="_blank" rel="noopener noreferrer">Google Timeline</a> is super easy, but it means handing over the keys to your entire movement history to a massive company. On the other hand, a personal <strong>location history visualizer</strong> puts you in the driver's seat, ensuring your data never leaves your sight.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="taking-control-of-your-digital-footprint">Taking Control of Your Digital Footprint<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#taking-control-of-your-digital-footprint" class="hash-link" aria-label="Direct link to Taking Control of Your Digital Footprint" title="Direct link to Taking Control of Your Digital Footprint">​</a></h3>
<p>Managing your privacy doesn’t mean you have to go live in a cave. It’s mostly about being mindful and making a few smart tweaks to how you share your info. Good digital habits are your best defense.</p>
<p>Here are a few practical things you can do right now:</p>
<ul>
<li><strong>Review App Permissions Regularly:</strong> Go through your phone and see which apps are tracking your location. Does that puzzle game <em>really</em> need to know where you are <strong>24/7</strong>? Probably not. Shut it down.</li>
<li><strong>Be Selective with Tracking:</strong> You don't need location services running all the time. Try turning it off when you're not actively using it for maps or directions.</li>
<li><strong>Understand the Trade-Off:</strong> For any service that wants your location, ask a simple question: "What am I getting out of this?" Is the convenience truly worth what you're giving away?</li>
</ul>
<blockquote>
<p>The goal isn't to go completely off the grid. It's about making conscious decisions, understanding what you're sharing, and choosing tools that match your personal comfort level for privacy.</p>
</blockquote>
<p>For anyone who really wants to take ownership of their data, setting up a privacy-focused visualizer is a fantastic project. If you're curious to learn more, there's a great guide on <strong><a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer" target="_blank" rel="noopener noreferrer">building a privacy-first Google Timeline visualizer</a></strong> that covers the thinking and the step-by-step process.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="anonymizing-data-before-you-share">Anonymizing Data Before You Share<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#anonymizing-data-before-you-share" class="hash-link" aria-label="Direct link to Anonymizing Data Before You Share" title="Direct link to Anonymizing Data Before You Share">​</a></h3>
<p>So, you’ve made an awesome visualization—maybe a heatmap of your favorite running trails—and you want to show it off. That's great! But before you hit "post," you need to scrub it of anything that points back to you. Raw location data can easily give away your home, your workplace, and other sensitive spots.</p>
<p>Before you share anything publicly, take a few minutes to anonymize your map. This could mean:</p>
<ol>
<li><strong>Generalizing Start and End Points:</strong> Don't show the exact dot where your house or office is.</li>
<li><strong>Removing Timestamps:</strong> Timestamps can reveal your daily routine, like when you leave for work or when your house is empty.</li>
<li><strong>Fuzzing the Data:</strong> You can slightly reduce the precision of the GPS coordinates, making it impossible to pinpoint an exact address.</li>
</ol>
<p>Taking these simple steps lets you share your cool data stories with the world without putting your privacy on the line. It's all about finding that sweet spot between enjoying your data and keeping yourself safe.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="got-questions-weve-got-answers">Got Questions? We've Got Answers<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#got-questions-weve-got-answers" class="hash-link" aria-label="Direct link to Got Questions? We've Got Answers" title="Direct link to Got Questions? We've Got Answers">​</a></h2>
<p>Diving into location history visualizers for the first time usually sparks a few questions. It's a pretty personal and fascinating topic, so it's totally normal to be curious about how it all works. Here are some quick answers to the things people ask most often.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="is-it-safe-to-use-an-online-visualizer">Is It Safe to Use an Online Visualizer?<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#is-it-safe-to-use-an-online-visualizer" class="hash-link" aria-label="Direct link to Is It Safe to Use an Online Visualizer?" title="Direct link to Is It Safe to Use an Online Visualizer?">​</a></h3>
<p>That’s the million-dollar question, isn't it? The honest answer is: it really depends. When you upload your location data to some random website, you're placing a lot of trust in them to keep it safe. Many services are legitimate and secure, but you're still handing over incredibly sensitive information.</p>
<blockquote>
<p>The only way to have <strong>100%</strong> peace of mind is to use a self-hosted <strong>location history visualizer</strong>. When the software and your data live on your own computer or server, you slam the door on third-party risks like data breaches or sketchy privacy policies. You're the only one in control.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="can-i-see-my-iphones-location-history">Can I See My iPhone's Location History?<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#can-i-see-my-iphones-location-history" class="hash-link" aria-label="Direct link to Can I See My iPhone's Location History?" title="Direct link to Can I See My iPhone's Location History?">​</a></h3>
<p>Absolutely, though it's not as straightforward as it is with Google. Apple doesn't have a simple, one-click "Takeout" button for your location history. The most reliable way to do it is to use a third-party app that tracks your location and lets you export the data as a GPX file.</p>
<p>Once you have that GPX file, you can pop it into any visualizer that supports the format. While your iPhone does keep track of "Significant Locations," Apple keeps that data pretty locked down and it isn't designed for easy exporting.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="whats-the-difference-between-a-heatmap-and-a-path-map">What's the Difference Between a Heatmap and a Path Map?<a href="https://dawarich.app/blog/a-guide-to-your-location-history-visualizer#whats-the-difference-between-a-heatmap-and-a-path-map" class="hash-link" aria-label="Direct link to What's the Difference Between a Heatmap and a Path Map?" title="Direct link to What's the Difference Between a Heatmap and a Path Map?">​</a></h3>
<p>It really boils down to seeing <em>where</em> you spend your time versus <em>how</em> you got there.</p>
<p>A <strong>path map</strong> is literal. It connects the dots and draws the exact lines of your travels, showing your journey in chronological order. It's fantastic for reliving a road trip or analyzing your daily commute.</p>
<p>A <strong>heatmap</strong>, on the other hand, is all about density. It uses colors—usually getting hotter, like red, for more activity—to show the places you frequent most. It gives you a quick, powerful snapshot of the central hubs of your life.</p>
<hr>
<p>Ready to take back your story and build a map that's truly yours? <strong>Dawarich</strong> is a privacy-first platform built for just that. Import your history, create stunning visualizations, and own your data from the get-go. <a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">Start your free 7-day trial today.</a></p>]]></content:encoded>
            <category>Guide</category>
        </item>
        <item>
            <title><![CDATA[Building a Privacy-First Google Timeline Visualizer]]></title>
            <link>https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer</link>
            <guid>https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer</guid>
            <pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Google Timeline has been tracking your location history for years, quietly collecting data about everywhere you've been. But what happens when you export that data? You get one or multiple JSON files that... well, most people have no idea what to do with them.]]></description>
            <content:encoded><![CDATA[<p>Google Timeline has been tracking your location history for years, quietly collecting data about everywhere you've been. But what happens when you export that data? You get one or multiple JSON files that... well, most people have no idea what to do with them.</p>
<p>That's why we built the <a href="https://dawarich.app/tools/timeline-visualizer" target="_blank" rel="noopener noreferrer">Google Timeline Visualizer</a> — a free, privacy-first tool that turns those cryptic JSON files into an interactive map you can actually explore.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-problem-googles-timeline-limitations">The Problem: Google's Timeline Limitations<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#the-problem-googles-timeline-limitations" class="hash-link" aria-label="Direct link to The Problem: Google's Timeline Limitations" title="Direct link to The Problem: Google's Timeline Limitations">​</a></h2>
<p>Google recently made some controversial changes to Timeline. They killed the web-based timeline browser, moved all data to mobile devices, <a href="https://www.reddit.com/r/GoogleMaps/comments/1diivt3/megathread_google_maps_timeline_moving_to/" target="_blank" rel="noopener noreferrer">lost years of users' data in the process</a>, and started limiting how long your location history is stored. If you want to keep your data or visualize it properly, you're basically on your own.</p>
<p>When you export your Google Timeline data through Takeout or from your phone, you get JSON files — sometimes hundreds of megabytes worth. These files contain years of location data, place visits, and activity segments, but there's no easy way to visualize them without uploading to yet another third-party service.</p>
<p>We needed a solution that was fast, secure, and most importantly: kept your data private.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="privacy-first-architecture">Privacy-First Architecture<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#privacy-first-architecture" class="hash-link" aria-label="Direct link to Privacy-First Architecture" title="Direct link to Privacy-First Architecture">​</a></h2>
<p>Location data is incredibly sensitive. It shows where you live, where you work, where you go for medical appointments, who you visit, and your daily routines. Uploading this to a random web service is a huge privacy risk (except for Dawarich Cloud haha).</p>
<p>That's why our visualizer runs <strong>entirely in your browser</strong>. When you upload your JSON files:</p>
<ul>
<li><strong>Nothing is sent to any server</strong> — all processing happens locally on your device</li>
<li><strong>No tracking or analytics</strong> on your location data</li>
<li><strong>Your data stays in your browser's memory</strong> and disappears when you close the tab</li>
<li><strong><a href="https://github.com/dawarich-app/site/blob/main/src/components/TimelineMap.js" target="_blank" rel="noopener noreferrer">Open source and transparent</a></strong> — you can verify exactly what the code does</li>
</ul>
<p>This approach means your location history never leaves your computer. It's the digital equivalent of opening a paper map in your living room instead of mailing it to a stranger.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-works">How It Works<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works">​</a></h2>
<p>The visualizer follows a straightforward process:</p>
<ol>
<li><strong>Upload Your Files</strong> — Drop your Google Timeline JSON files into the browser</li>
<li><strong>Auto-Detection</strong> — The tool automatically identifies the format (Records.json, Semantic Timeline, Location History, etc.)</li>
<li><strong>Progressive Processing</strong> — Files are parsed in batches to keep your browser responsive</li>
<li><strong>Interactive Map</strong> — Points and paths appear on the map using Leaflet and OpenStreetMap</li>
<li><strong>Year Filtering</strong> — Filter by year to explore specific time periods without overwhelming your browser</li>
</ol>
<p>The entire process happens in JavaScript running in your browser. For a 170 MB file with 630,000 location points, processing takes about 20-30 seconds on a modern computer.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="handling-massive-files">Handling Massive Files<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#handling-massive-files" class="hash-link" aria-label="Direct link to Handling Massive Files" title="Direct link to Handling Massive Files">​</a></h3>
<p>One of the biggest technical challenges was performance. Google exports can contain hundreds of thousands of GPS points. Loading all of them at once would crash most browsers.</p>
<p>We solved this with several optimizations:</p>
<p><strong>Batch Processing</strong> — Points are streamed to the map in batches of 5,000, yielding control to the browser between batches. This keeps the UI responsive even while processing massive datasets.</p>
<p><strong>Year-Based Pagination</strong> — The visualizer calculates how many points exist in each year, then defaults to showing only the earliest year. Users can switch between years or view all data at once. This typically reduces the initial render from 600k+ points to 40-60k points.</p>
<p><strong>Incremental Rendering</strong> — When switching years, only the new points are added to the map. The library handles clustering and de-duplication automatically.</p>
<p><strong>Lazy Popups</strong> — Instead of generating HTML for 600k popups upfront, popup content is created only when you click on a marker.</p>
<p>These optimizations mean you can visualize years of location history without your browser grinding to a halt.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="supported-formats">Supported Formats<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#supported-formats" class="hash-link" aria-label="Direct link to Supported Formats" title="Direct link to Supported Formats">​</a></h2>
<p>Google exports location data in several different formats depending on when and how you export it. The visualizer supports all of them:</p>
<p><strong>Records.json</strong> — Raw GPS location records in E7 coordinate format. This is the oldest format and typically the largest file, containing every GPS ping Google recorded.</p>
<p><strong>Semantic Timeline (YYYY_MONTH.json)</strong> — Monthly files containing place visits and activity segments. These are more structured and include information about what you were doing (walking, driving, etc.) and which places you visited.</p>
<p><strong>Location History (from phone)</strong> — The newer format exported directly from Google Maps on Android or iOS. This uses a different JSON structure with <code>semanticSegments</code> and timeline paths.</p>
<p><strong>Semantic Segments</strong> — A processed format with geographic coordinates in "geo<!-- -->:lat<!-- -->,lng" string format, often created by parsing raw exports with tools like <code>jq</code>.</p>
<p>No matter which format Google gives you, the visualizer will detect it automatically and extract:</p>
<ul>
<li>GPS coordinates and timestamps</li>
<li>Place visits with duration</li>
<li>Activity segments (walking, driving, cycling)</li>
<li>Activity paths showing your actual route</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="features">Features<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features">​</a></h2>
<p><strong>Interactive Map</strong> — Pan, zoom, and explore your location history on an OpenStreetMap base layer. Markers show individual locations, while colored polylines show your movement paths.</p>
<p><strong>Smart Filtering</strong> — The side panel shows only meaningful visits and places, not every GPS ping. For a Records.json file with 600k raw points, the list shows only actual place visits — making it useful instead of overwhelming.</p>
<p><strong>Year Selector</strong> — Filter by year to focus on specific time periods. The dropdown shows how many points exist in each year, making it easy to explore your data chronologically.</p>
<p><strong>Auto-Fit Bounds</strong> — When you switch years, the map automatically zooms to show all points for that period. Traveled from Europe to the USA in different years? The map adapts to each dataset.</p>
<p><strong>Dark Mode</strong> — Full support for light and dark themes with proper contrast.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="limitations">Limitations<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#limitations" class="hash-link" aria-label="Direct link to Limitations" title="Direct link to Limitations">​</a></h2>
<p>Bigger files take time to process. A 170 MB file with hundreds of thousands of points needs 20-30 seconds to parse and render. This happens once when you first load the file.</p>
<p>Browser memory limits apply. While we've tested files with 600k+ points across 15 years successfully, extremely large exports (multiple years, multiple large files) might struggle on older computers with limited RAM.</p>
<p>The visualizer shows your data but doesn't edit it. If you want to keep your location history accessible, export it to formats like GPX, or store it long-term, you'll need additional tools.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-your-data">Getting Your Data<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#getting-your-data" class="hash-link" aria-label="Direct link to Getting Your Data" title="Direct link to Getting Your Data">​</a></h2>
<p>The visualizer includes detailed instructions for exporting your Google Timeline data:</p>
<p><strong>Google Takeout</strong> — Visit <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">takeout.google.com</a>, select "Location History (Timeline)", and export. Note that this method doesn't work for everyone due to Google's policy changes.</p>
<p><strong>Android</strong> — Open Google Maps → Settings → Location → Location Services → Timeline → Export Timeline</p>
<p><strong>iOS</strong> — Open Google Maps → Settings → Personal Content → Export Timeline data</p>
<p>Once you have your JSON files, just drag and drop them into the visualizer.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="when-you-need-more">When You Need More<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#when-you-need-more" class="hash-link" aria-label="Direct link to When You Need More" title="Direct link to When You Need More">​</a></h2>
<p>The Timeline Visualizer is great for quick exploration and one-time analysis. But if you want to:</p>
<ul>
<li>Store your location history securely long-term</li>
<li>Import data from multiple sources (GPX, GeoJSON, etc.)</li>
<li>Track ongoing location data from your devices</li>
<li>Access your timeline from anywhere</li>
<li>Share specific trips or areas</li>
</ul>
<p>...then you need a proper location tracking platform.</p>
<p>That's where <a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">Dawarich</a> comes in. It's an open-source location tracker that gives you full control over your location data. It supports all the same Google Timeline formats as the visualizer, plus GPX files from hiking apps, GeoJSON exports, and real-time tracking from mobile apps.</p>
<p>The visualizer shows you what's possible. Dawarich lets you keep it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="technical-stack">Technical Stack<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#technical-stack" class="hash-link" aria-label="Direct link to Technical Stack" title="Direct link to Technical Stack">​</a></h2>
<p>The visualizer is built with:</p>
<ul>
<li><strong>React 18</strong> — UI components and state management</li>
<li><strong>Leaflet</strong> — Interactive maps with OpenStreetMap tiles</li>
<li><strong>Leaflet.markercluster</strong> — Efficient clustering of thousands of markers</li>
<li><strong>Docusaurus</strong> — Static site generation and documentation</li>
<li><strong>Custom JavaScript parsers</strong> — Handle Google's various export formats</li>
</ul>
<p>All processing happens client-side. No backend, no database, no user tracking.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-improvements">Future Improvements<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#future-improvements" class="hash-link" aria-label="Direct link to Future Improvements" title="Direct link to Future Improvements">​</a></h2>
<p>We're exploring additional visualizations like heatmaps, timeline charts, and statistics (most visited places, total distance traveled, etc.). Better performance optimizations are always on the roadmap.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="try-it-yourself">Try It Yourself<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#try-it-yourself" class="hash-link" aria-label="Direct link to Try It Yourself" title="Direct link to Try It Yourself">​</a></h2>
<p>The Google Timeline Visualizer is free to use at <a href="https://dawarich.app/tools/timeline-visualizer" target="_blank" rel="noopener noreferrer">dawarich.app/tools/timeline-visualizer</a>.</p>
<p>Export your Google Timeline data, drop it in, and see where you've been. All in your browser, all private, all yours.</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="resources--credits">Resources &amp; Credits<a href="https://dawarich.app/blog/building-a-privacy-first-google-timeline-visualizer#resources--credits" class="hash-link" aria-label="Direct link to Resources &amp; Credits" title="Direct link to Resources &amp; Credits">​</a></h2>
<p>Building this visualizer required understanding Google's various export formats and parsing their different JSON structures. Here are the key resources and tools that made it possible:</p>
<ul>
<li><a href="https://locationhistoryformat.com/" target="_blank" rel="noopener noreferrer">https://locationhistoryformat.com/</a> — Comprehensive documentation of Google Location History formats</li>
<li>jq — Command-line JSON processor used for parsing and transforming Google Location History (the exports from user's devices)</li>
<li>Leaflet.js — Open-source JavaScript library for interactive maps</li>
</ul>
<hr>
<p><em>The Google Timeline Visualizer is part of the Dawarich ecosystem. All code is open source and available on GitHub.</em></p>]]></content:encoded>
            <category>Tools</category>
        </item>
        <item>
            <title><![CDATA[Carefully Preserve Your Memories]]></title>
            <link>https://dawarich.app/blog/carefully-preserve-your-memories</link>
            <guid>https://dawarich.app/blog/carefully-preserve-your-memories</guid>
            <pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[When we think about memories, we usually imagine photos, videos, or maybe a diary. But what about the places we’ve been, the streets we’ve walked, the roads we’ve taken? That part of the story often gets lost. Dawarich helps turn your everyday routes and special trips into your own map of memories.]]></description>
            <content:encoded><![CDATA[<p>When we think about memories, we usually imagine photos, videos, or maybe a diary. But what about the places we’ve been, the streets we’ve walked, the roads we’ve taken? That part of the story often gets lost. Dawarich helps turn your everyday routes and special trips into your own map of memories.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-dawarich">What is Dawarich?<a href="https://dawarich.app/blog/carefully-preserve-your-memories#what-is-dawarich" class="hash-link" aria-label="Direct link to What is Dawarich?" title="Direct link to What is Dawarich?">​</a></h2>
<p>We all use our phones for maps and navigation. The problem is, Big Brothers save this data on their servers, which means they know where you’ve been, how often you travel, and sometimes even guess your habits. If that feels uncomfortable, Dawarich is a refreshing alternative.</p>
<p>Dawarich is a service that lets you keep a personal record of your movements and places you’ve visited. The key difference? You’re in charge. You can run it yourself on your own server or computer (and we now have an iOS app too!), so nobody else has access to your location history.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="main-features">Main Features<a href="https://dawarich.app/blog/carefully-preserve-your-memories#main-features" class="hash-link" aria-label="Direct link to Main Features" title="Direct link to Main Features">​</a></h2>
<p>Track your journeys: Dawarich saves your routes, distances, and the places you’ve been.</p>
<p>See your "life map": Look back at your travels, runs, bike rides, or even your daily routes.</p>
<p>Add memories: If you already use photo storage apps like Immich or Photoprism, you can set up syncing and create short photo notes from your travels!</p>
<p>Privacy first: All information is stored where you choose. We make daily backups and database encryption, an SSL certificate is used for data transfer, and hosted in Europe (Frankfurt and Falkenstein, Germany).</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="useful">Useful<a href="https://dawarich.app/blog/carefully-preserve-your-memories#useful" class="hash-link" aria-label="Direct link to Useful" title="Direct link to Useful">​</a></h2>
<ul>
<li>For travelers: keep track of countries, cities, and kilometers you’ve explored.</li>
<li>For close friends and family: Share vacation and travel locations and create a memory map.</li>
<li>For fitness enthusiasts: log your distances and routes privately, without sharing with third parties.</li>
<li>For data-driven persons: enjoy the peace of mind knowing your data is truly yours.</li>
</ul>
<p>Dawarich is like a private diary for your journeys: digital, secure, and completely under your control. You decide whether to keep it just for yourself, share it with close family, or connect it with other tools.</p>]]></content:encoded>
            <category>Use Cases</category>
        </item>
        <item>
            <title><![CDATA[November 2024 Monthly Update]]></title>
            <link>https://dawarich.app/blog/november-2024-monthly-update</link>
            <guid>https://dawarich.app/blog/november-2024-monthly-update</guid>
            <pubDate>Fri, 29 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Hi and welcome to the November 2024 monthly update of Dawarich!]]></description>
            <content:encoded><![CDATA[<p>Hi and welcome to the November 2024 monthly update of Dawarich!</p>
<p>November was a good month for Dawarich. I've added a lot of new features and fixed a some bugs, and, among other things, I've added a new Patreon tier. It's called "Hosted Dawarich" and basically offers my service of hosting and updating Dawarich for you. Take a look at the <a href="https://www.patreon.com/posts/hosted-dawarich-116431525" target="_blank" rel="noopener noreferrer">Patreon page</a> for more details and feel free to ask me any questions.</p>
<p>Let's dive into the details!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="important-features-and-changes">Important features and changes<a href="https://dawarich.app/blog/november-2024-monthly-update#important-features-and-changes" class="hash-link" aria-label="Direct link to Important features and changes" title="Direct link to Important features and changes">​</a></h2>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-trips-release">The Trips release<a href="https://dawarich.app/blog/november-2024-monthly-update#the-trips-release" class="hash-link" aria-label="Direct link to The Trips release" title="Direct link to The Trips release">​</a></h2>
<p>You can now create, edit and delete trips. To create a trip, click on the "New Trip" button on the Trips page. Provide a name, date and time for start and end of the trip. You can add your own notes to the trip as well.</p>
<p>If you have points tracked during provided timeframe, they will be automatically added to the trip and will be shown on the trip map.</p>
<p>Also, if you have Immich integrated, you will see photos from the trip on the trip page, along with a link to look at them on Immich.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/XLE0X2NEPEE?si=mRks_UNEr6AMOQ0u" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin"></iframe>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-immich-photos-release">The Immich Photos release<a href="https://dawarich.app/blog/november-2024-monthly-update#the-immich-photos-release" class="hash-link" aria-label="Direct link to The Immich Photos release" title="Direct link to The Immich Photos release">​</a></h2>
<p>With this release, Dawarich can now show photos from your Immich instance on the map.</p>
<p>To enable this feature, you need to provide your Immich instance URL and API key in the Settings page. Then you need to enable "Photos" layer on the map (top right corner).</p>
<p>An important note to add here is that photos are heavy and hence generate a lot of traffic. The response from Immich for specific dates is being cached in Redis for 1 day, and that may lead to Redis taking a lot more space than previously. But since the cache is being expired after 24 hours, you'll get your space back pretty soon.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/iElDmu0iQUY?si=7EXI6OUTOyZ2W8te" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin"></iframe>
<p>The other thing worth mentioning is how Dawarich gets data from Immich. It goes like this:</p>
<ol>
<li>When you click on the "Photos" layer, Dawarich will make a request to <code>GET /api/v1/photos</code> endpoint to get photos for the selected timeframe.</li>
<li>This endpoint will make a request to <code>POST /search/metadata</code> endpoint of your Immich instance to get photos for the selected timeframe.</li>
<li>The response from Immich is being cached in Redis for 1 day.</li>
<li>Dawarich's frontend will make a request to <code>GET /api/v1/photos/:id/thumbnail.jpg</code> endpoint to get photo thumbnail from Immich. The number of requests to this endpoint will depend on how many photos you have in the selected timeframe.</li>
<li>For each photo, Dawarich's frontend will make a request to <code>GET /api/v1/photos/:id/thumbnail.jpg</code> endpoint to get photo thumbnail from Immich. This thumbnail request is also cached in Redis for 1 day.</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-websockets-release">The Websockets release<a href="https://dawarich.app/blog/november-2024-monthly-update#the-websockets-release" class="hash-link" aria-label="Direct link to The Websockets release" title="Direct link to The Websockets release">​</a></h2>
<p>This one is more about QoL, making your UI more alive. Notifications, new points on the map, imports now won't require page reloading to see an update, they will just be on your page dynamically.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="scratch-map-release">Scratch map release<a href="https://dawarich.app/blog/november-2024-monthly-update#scratch-map-release" class="hash-link" aria-label="Direct link to Scratch map release" title="Direct link to Scratch map release">​</a></h2>
<p>Yeah, you can now enable the "Scratch Map" layer on the map. Have a look:</p>
<p><img decoding="async" loading="lazy" src="https://dawarich.app/assets/images/dawarich-scratch-map-9115313d5eacd34f0105a31afde5e741.png" width="3424" height="1904" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="changelog">Changelog<a href="https://dawarich.app/blog/november-2024-monthly-update#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="added">Added<a href="https://dawarich.app/blog/november-2024-monthly-update#added" class="hash-link" aria-label="Direct link to Added" title="Direct link to Added">​</a></h3>
<ul>
<li>The Trips feature.</li>
<li>If you have provided your Immich instance URL and API key, the map will now show photos from your Immich instance when Photos layer is enabled.</li>
<li><code>GET /api/v1/photos</code> endpoint added to get photos from Immich.</li>
<li><code>GET /api/v1/photos/:id/thumbnail.jpg</code> endpoint added to get photo thumbnail from Immich.</li>
<li>Admins can now see all users in the system on the Users page. The path is <code>/settings/users</code>.</li>
<li>New notifications are now being indicated with a blue-ish dot in the top right corner of the screen. Hovering over the bell icon will show you last 10 notifications.</li>
<li>New points on the map will now be shown in real-time. No need to reload the map to see new points.</li>
<li>User can now enable or disable Live Mode in the map controls. When Live Mode is enabled, the map will automatically move to the new points as they are being added to the map.</li>
<li>Scratch map. You can enable it in the map controls. The scratch map highlight countries you've visited. The scratch map is working properly only if you have your points reverse geocoded.</li>
<li><code>GET /api/v1/countries/borders</code> endpoint to get countries for scratch map feature</li>
<li>Dawarich now can export metrics to Prometheus. You can find the metrics at <code>your.host:9394/metrics</code> endpoint. The metrics are being exported in the Prometheus format and can be scraped by Prometheus server. To enable exporting, set the <code>PROMETHEUS_EXPORTER_ENABLED</code> env var in your docker-compose.yml to <code>true</code>. Example:</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     PROMETHEUS_EXPORTER_ENABLED: "true"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed">Fixed<a href="https://dawarich.app/blog/november-2024-monthly-update#fixed" class="hash-link" aria-label="Direct link to Fixed" title="Direct link to Fixed">​</a></h3>
<ul>
<li>Retrieving photos from Immich now using <code>takenAfter</code> and <code>takenBefore</code> instead of <code>createdAfter</code> and <code>createdBefore</code>. With <code>createdAfter</code> and <code>createdBefore</code> Immich was returning no items some years.</li>
<li>Retrieving photos from Immich now correctly handles cases when Immich returns no items. It also logs the response from Immich for debugging purposes.</li>
<li>Exported files will now always have an extension when downloaded. Previously, the extension was missing in case of GPX export.</li>
<li>Deleting and sorting points on the Points page will now preserve filtering and sorting params when points are deleted or sorted. Previously, the page was being reloaded and filtering and sorting params were lost.</li>
<li>Exported GPX file now being correctly recognized as valid by Garmin Connect, Adobe Lightroom and (probably) other services. Previously, the exported GPX file was not being recognized as valid by these services.</li>
<li>Speed is now being recorded into points when a GPX file is being imported. Previously, the speed was not being recorded.</li>
<li>GeoJSON file from GPSLogger now can be imported to Dawarich. Previously, the import was failing due to incorrect parsing of the file.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="changed">Changed<a href="https://dawarich.app/blog/november-2024-monthly-update#changed" class="hash-link" aria-label="Direct link to Changed" title="Direct link to Changed">​</a></h3>
<ul>
<li>Maps are now not so rough on the edges.</li>
<li>Rate limit for the Photon API is now 1 request per second. If you host your own Photon API instance, reverse geocoding requests will not be limited.</li>
<li>Requests to the Photon API are now have User-Agent header set to "<code>Dawarich APP_VERSION (<a href="https://dawarich.app/" target="_blank" rel="noopener noreferrer">https://dawarich.app</a>)</code>"</li>
<li>Default number of Puma workers is now 2 instead of 1. This should improve the performance of the application. If you have a lot of users, you might want to increase the number of workers. You can do this by setting the <code>WEB_CONCURRENCY</code> env var in your <code>docker-compose.yml</code> file. Example:</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      WEB_CONCURRENCY: "2"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<ul>
<li><code>PROMETHEUS_EXPORTER_HOST</code> and <code>PROMETHEUS_EXPORTER_PORT</code> env vars were added to the <code>docker-compose.yml</code> file to allow you to set the host and port for the Prometheus exporter. They should be added to both <code>dawarich_app</code> and <code>dawarich_sidekiq</code> services Example:</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      PROMETHEUS_EXPORTER_ENABLED: "true"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     PROMETHEUS_EXPORTER_HOST: 0.0.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     PROMETHEUS_EXPORTER_PORT: "9394"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_sidekiq:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      PROMETHEUS_EXPORTER_ENABLED: "true"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     PROMETHEUS_EXPORTER_HOST: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     PROMETHEUS_EXPORTER_PORT: "9394"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<ul>
<li>Dawarich now uses <code>POST /api/search/metadata</code> endpoint to get geodata from Immich.</li>
<li>Admins can now provide custom password for new users and update passwords for existing users on the Users page.</li>
<li>The <code>bin/dev</code> file will no longer run <code>bin/rails tailwindcss:watch</code> command. It's useful only for development and doesn't really make sense to run it in production.</li>
<li>The Vists suggestion job is disabled. It will be re-enabled in the future with a new approach to the visit suggestion process.</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://dawarich.app/blog/november-2024-monthly-update#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2>
<p>What a month huh? Feel free to reach out to me on <a href="https://x.com/freymakesstuff" target="_blank" rel="noopener noreferrer">X</a>, <a href="https://mastodon.social/@dawarich" target="_blank" rel="noopener noreferrer">Mastodon</a> or <a href="https://discord.gg/pHsBjpt5J8" target="_blank" rel="noopener noreferrer">Discord server</a> if you have any questions or suggestions.</p>
<p>You can also support the project by sponsoring it on <a href="https://www.patreon.com/freika" target="_blank" rel="noopener noreferrer">Patreon</a>, <a href="https://ko-fi.com/freika" target="_blank" rel="noopener noreferrer">Ko-Fi</a> or <a href="https://github.com/sponsors/Freika" target="_blank" rel="noopener noreferrer">Github Sponsors</a> ✨</p>
<p>Thank you and see you in the next monthly update!</p>]]></content:encoded>
            <category>Monthly Update</category>
        </item>
        <item>
            <title><![CDATA[October 2024 Monthly Update]]></title>
            <link>https://dawarich.app/blog/october-2024-monthly-update</link>
            <guid>https://dawarich.app/blog/october-2024-monthly-update</guid>
            <pubDate>Wed, 30 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Hi and welcome to the October 2024 monthly update of Dawarich!]]></description>
            <content:encoded><![CDATA[<p>Hi and welcome to the October 2024 monthly update of Dawarich!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="news">News<a href="https://dawarich.app/blog/october-2024-monthly-update#news" class="hash-link" aria-label="Direct link to News" title="Direct link to News">​</a></h2>
<p>The biggest news of October for me is that I'm looking for a job! If you have a position for a Ruby on Rails developer with 10+ years of experience in Germany, drop me a line on <a href="https://www.linkedin.com/in/frey/" target="_blank" rel="noopener noreferrer">LinkedIn</a> or <a href="mailto:hey+jobfromdawarich@frey.today" target="_blank" rel="noopener noreferrer">email</a> me.</p>
<p>As for Dawarich, there is a pretty big list of changes and improvements in this release. Let's dive into them!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="important-features-and-changes">Important features and changes<a href="https://dawarich.app/blog/october-2024-monthly-update#important-features-and-changes" class="hash-link" aria-label="Direct link to Important features and changes" title="Direct link to Important features and changes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-watcher-release">The Watcher release<a href="https://dawarich.app/blog/october-2024-monthly-update#the-watcher-release" class="hash-link" aria-label="Direct link to The Watcher release" title="Direct link to The Watcher release">​</a></h3>
<p>This feature will be useful for those who want to automate the import process. You can now put your GPX and GeoJSON files to the <code>/tmp/imports/watched/USER@EMAIL.COM</code> directory and Dawarich will automatically import them. This is useful if you have a service that can put files to the directory automatically. The directory is being watched every 60 minutes for new files.</p>
<p>For example, if you want to import a file for the user with the email address "<a href="mailto:email@dawarich.app" target="_blank" rel="noopener noreferrer">email@dawarich.app</a>", you would put it in the tmp/imports/watched/email@dawarich.app directory. The file will be imported into the database and the user will receive a notification in the app.</p>
<p>For now, only GeoJSON and GPX files are supported.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-up-to-date-photon-in-docker">The up-to-date Photon in Docker<a href="https://dawarich.app/blog/october-2024-monthly-update#the-up-to-date-photon-in-docker" class="hash-link" aria-label="Direct link to The up-to-date Photon in Docker" title="Direct link to The up-to-date Photon in Docker">​</a></h3>
<p><a href="https://github.com/rtuszik/" target="_blank" rel="noopener noreferrer">@rtuszik</a> was kind enough to build a new Docker image with the latest version of the Photon API. The source code with the usage instructions can be found on <a href="https://github.com/rtuszik/photon-docker" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="set-up-your-backup">Set up your backup<a href="https://dawarich.app/blog/october-2024-monthly-update#set-up-your-backup" class="hash-link" aria-label="Direct link to Set up your backup" title="Direct link to Set up your backup">​</a></h3>
<p>This is a kind reminder for you to set up a backup for your Dawarich instance. You can use the <a href="https://dawarich.app/docs/tutorials/backup-and-restore" target="_blank" rel="noopener noreferrer">backup tutorial</a> to do this. It's important to keep your data safe and secure.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="added">Added<a href="https://dawarich.app/blog/october-2024-monthly-update#added" class="hash-link" aria-label="Direct link to Added" title="Direct link to Added">​</a></h3>
<ul>
<li><code>linux/arm/v7</code> is added to the list of supported architectures to support Raspberry Pi 4 and other ARMv7 devices</li>
<li>Owntracks' .rec files now can be imported to Dawarich. The import process is the same as for other kinds of files, just select the .rec file and choose "owntracks" as a source.</li>
<li>User can now select between "Raw" and "Simplified" mode in the map controls. "Simplified" mode will show less points, improving the map performance. "Raw" mode will show all points.</li>
<li>Importing Immich data on the Imports page now will trigger an attempt to write raw json file with the data from Immich to <code>tmp/imports/immich_raw_data_CURRENT_TIME_USER_EMAIL.json</code> file. This is useful to debug the problem with the import if it fails.</li>
<li>You can now put your GPX and GeoJSON files to <code>tmp/imports/watched/USER@EMAIL.COM</code> directory and Dawarich will automatically import them. This is useful if you have a service that can put files to the directory automatically. The directory is being watched every 60 minutes for new files.</li>
<li>To expose the watcher functionality to the user, a new directory <code>/tmp/imports/watched/</code> was created. Add new volume to the <code>docker-compose.yml</code> file to expose this directory to the host machine.</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    volumes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      - gem_cache:/usr/local/bundle/gems</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      - public:/var/app/public</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     - watched:/var/app/tmp/watched</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_sidekiq:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      volumes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        - gem_cache:/usr/local/bundle/gems</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        - public:/var/app/public</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+       - watched:/var/app/tmp/watched</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">volumes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  db_data:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  gem_cache:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  shared_data:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  public:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+ watched:</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="changed">Changed<a href="https://dawarich.app/blog/october-2024-monthly-update#changed" class="hash-link" aria-label="Direct link to Changed" title="Direct link to Changed">​</a></h3>
<ul>
<li><code>GET /api/v1/points</code> can now accept optional <code>?order=asc</code> query parameter to return points in ascending order by timestamp. <code>?order=desc</code> is still available to return points in descending order by timestamp</li>
<li><code>GET /api/v1/points</code> now returns <code>id</code> attribute for each point</li>
<li>Retries disabled for some background jobs</li>
<li>Use static version of <code>geocoder</code> library that supports http and https for Photon API host. This is a temporary solution until the change is available in a stable release of <code>geocoder</code>.</li>
<li>The Map page now by default uses timeframe based on last point tracked instead of the today's points. If there are no points, the map will use the today's timeframe.</li>
<li>The map on the Map page can no longer be infinitely scrolled horizontally.</li>
<li>Refactored the stats calculation process to make it more efficient.</li>
<li>Hostname definition for Sidekiq healtcheck to solve #344. See the diff:</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_sidekiq:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    healthcheck:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-     test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep $(hostname)" ]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep ${HOSTNAME}" ]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<ul>
<li>Renamed directories used by app and sidekiq containers for gems cache to fix #339:</li>
</ul>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    volumes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-     - gem_cache:/usr/local/bundle/gems</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     - gem_cache:/usr/local/bundle/gems_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_sidekiq:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    volumes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-     - gem_cache:/usr/local/bundle/gems</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     - gem_cache:/usr/local/bundle/gems_sidekiq</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed">Fixed<a href="https://dawarich.app/blog/october-2024-monthly-update#fixed" class="hash-link" aria-label="Direct link to Fixed" title="Direct link to Fixed">​</a></h3>
<ul>
<li>Now you can use both http and https protocols for the Photon API host. You now need to explicitly provide <code>PHOTON_API_USE_HTTPS</code> to be <code>true</code> or <code>false</code> depending on what protocol you want to use. <a href="https://github.com/Freika/dawarich/blob/master/docker-compose.yml#L116-L117" target="_blank" rel="noopener noreferrer">Example</a> is in the <code>docker-compose.yml</code> file.</li>
<li>For stats, total distance per month might have been not equal to the sum of distances per day. Now it's fixed and values are equal.</li>
<li>Mobile view of the map looks better now.</li>
<li>Stats update is now being correctly triggered every 6 hours.</li>
<li>A bug where "RuntimeError: failed to get urandom" was being raised upon importing attempt on Synology.</li>
<li>Fixed a bug where Google Takeout import was failing due to unsupported date format with milliseconds in the file.</li>
<li>Stats distance calculation now correctly calculates the daily distances.</li>
<li>New app version is now being checked every 6 hours instead of 1 day and the check is being performed in the background.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="removed">Removed<a href="https://dawarich.app/blog/october-2024-monthly-update#removed" class="hash-link" aria-label="Direct link to Removed" title="Direct link to Removed">​</a></h3>
<ul>
<li>Owntracks' .json files are no longer supported for import as Owntracks itself does not export to this format anymore.</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://dawarich.app/blog/october-2024-monthly-update#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2>
<p>That's it for the October 2024 monthly update! I hope you enjoyed the news and changes. If you have any questions or suggestions, feel free to reach out to me on <a href="https://x.com/freymakesstuff" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://mastodon.social/@dawarich" target="_blank" rel="noopener noreferrer">Mastodon</a>.</p>
<p>You can also support the project by sponsoring it on <a href="https://www.patreon.com/freika" target="_blank" rel="noopener noreferrer">Patreon</a>, <a href="https://ko-fi.com/freika" target="_blank" rel="noopener noreferrer">Ko-Fi</a> or <a href="https://github.com/sponsors/Freika" target="_blank" rel="noopener noreferrer">Github Sponsors</a> ✨</p>
<p>Thank you and see you in the next monthly update!</p>]]></content:encoded>
            <category>Monthly Update</category>
        </item>
        <item>
            <title><![CDATA[Migrating from Google Location History to Dawarich]]></title>
            <link>https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich</link>
            <guid>https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich</guid>
            <pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[What's going on?]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-going-on">What's going on?<a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich#whats-going-on" class="hash-link" aria-label="Direct link to What's going on?" title="Direct link to What's going on?">​</a></h2>
<p>As you probably already know, Google <a href="https://blog.google/products/maps/updates-to-location-history-and-new-controls-coming-soon-to-maps/" target="_blank" rel="noopener noreferrer">discontinuing</a> the web version of its Location History / Timeline service by December 1st, 2024. Here are some dry facts:</p>
<ul>
<li>Starting December 1st, 2024, the web version of Timeline will no longer be working</li>
<li>Timeline data will now be stored on the user's device instead</li>
<li>Users’ <strong>last 90 days</strong> of location data will be transferred to the first device they sign in with after December 1, but any data older than this will be <strong>deleted unless saved</strong></li>
<li>Users can manually <strong>backup Timeline data</strong> to Google’s servers for device restoration, but it will not be the default</li>
</ul>
<p>The transition offered by Google is far from perfect: some users already have reported they have lost years and years of their location history data.</p>
<p>The least you can do is to export your data from Google. You can do it either using Google's <a href="https://takeout.google.com/" target="_blank" rel="noopener noreferrer">Takeout</a> feature or by navigating to Timeline -&gt; Backup in your Google Maps application. Either way, in the end, you will receive an archive with your location history, hopefully, for the whole time you have been tracking it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-next">What's next?<a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich#whats-next" class="hash-link" aria-label="Direct link to What's next?" title="Direct link to What's next?">​</a></h2>
<p>That's where Dawarich comes in very handy. Although Google lacks consistency when it comes to the export file format, Dawarich already supports all three (3) kinds of files that you can get from Google.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="google-takeout">Google Takeout<a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich#google-takeout" class="hash-link" aria-label="Direct link to Google Takeout" title="Direct link to Google Takeout">​</a></h3>
<p>If you requested your data using Google Takeout, you might end up with two different types of files: Semantic Location History, and Records.</p>
<p>Semantic Location History is a bunch of files, split into yearly directories, and named after a year and a month, for example: <code>Semantic Location History/2022/2022_APRIL.json</code>. There will be a file for each month of location history data. This kind of file is the detailed one, and aside from coordinates and timestamps it usually might also contain addresses, suggested by Google, means of transportation, and so on.</p>
<p>To import Google Semantic Location History files, you just need to navigate to the Imports page of Dawarich, select "Semantic Location History" as a Source, select your files (you can select multiple files at once), and hit "Create import". Dawarich will upload the files, save their contents in the database, and then start creating points in the background. After a few seconds (or minutes, if you have lots of files) the data will be imported and you will receive a notification in Dawarich UI.</p>
<p><code>Records.json</code> is the second type of file you might receive with your Google Takeout Archive. It usually only contains coordinates of geopoints and timestamps of where you've been there, but it also holds a lot more geodata than Semantic Location History files. Because of this, these kinds of files tend to be a lot heavier and should not be imported via the web interface. Instead, you'll have to complete a series of steps.</p>
<ol>
<li>Upload your <code>Records.json</code> to your server, where you host Dawarich</li>
<li>Copy the file to the <code>tmp</code> folder of Dawarich:</li>
</ol>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker cp Records.json dawarich_app:/var/app/tmp/imports/Records.json</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<ol start="3">
<li><code>ssh</code> into Dawarich container: `docker exec -it dawarich_app sh</li>
<li>Run the importing command:</li>
</ol>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">bundle exec rake import:big_file['tmp/imports/Records.json','user@example.com']</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The process will take some time, depending on the size of your file, so let it work. Once the file is processed, all points from it will be queued for background import, which will also take some time. You can monitor the stats of the importing process on the Sidekiq page of your Dawarich instance: <code>https://your.host/sidekiq</code>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="location-history-on-your-device">Location history on your device<a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich#location-history-on-your-device" class="hash-link" aria-label="Direct link to Location history on your device" title="Direct link to Location history on your device">​</a></h3>
<p>If you can't retrieve your location history via Google Takeout, you'll probably be able to do that directly on your mobile device. The instructions on how to do that are available on <a href="https://support.google.com/maps/community-guide/276228911/changes-underway-for-google-maps-timeline" target="_blank" rel="noopener noreferrer">Google Answers</a>.</p>
<p>When you receive the file with your exported data, you can import it using the Imports page of Dawarich. The process is similar to Semantic Location History kind of files, the only thing you have to do differently is select "Google Phone Takeout" as the source of data before uploading it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="in-the-end">In the end<a href="https://dawarich.app/blog/migrating-from-google-location-history-to-dawarich#in-the-end" class="hash-link" aria-label="Direct link to In the end" title="Direct link to In the end">​</a></h2>
<p>There, you have it! If you still haven't exported your location history data, do it ASAP, before it's completely gone, and import it to your instance of Dawarich.</p>]]></content:encoded>
            <category>Guides</category>
        </item>
        <item>
            <title><![CDATA[September 2024 Monthly Update]]></title>
            <link>https://dawarich.app/blog/september-2024-monthly-update</link>
            <guid>https://dawarich.app/blog/september-2024-monthly-update</guid>
            <pubDate>Mon, 30 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Hi and welcome to the September 2024 monthly update of Dawarich!]]></description>
            <content:encoded><![CDATA[<p>Hi and welcome to the September 2024 monthly update of Dawarich!</p>
<p>This is the first monthly update of the project. It will be published in the end(-ish) of each month and will contain the most interesting news and updates of the project.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="news">News<a href="https://dawarich.app/blog/september-2024-monthly-update#news" class="hash-link" aria-label="Direct link to News" title="Direct link to News">​</a></h2>
<p>Believe it or not, in the beginning of the month, there was less than 900 stars on the GitHub repository. But now, there are almost 2000 stars! The <a href="https://www.reddit.com/r/selfhosted/comments/1f73ctc/dawarich_0120_selfhosted_google_location_history/" target="_blank" rel="noopener noreferrer">post on the 0.12.0 release</a> on Reddit was very popular and it helped to attract more attention to the project. Shortly after that post, someone posted a link to Dawarich repo on <a href="https://news.ycombinator.com/item?id=41424373" target="_blank" rel="noopener noreferrer">HackerNews</a> and lots of people visited the project page from there. The project is growing and it's very exciting!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="important-features-and-changes">Important features and changes<a href="https://dawarich.app/blog/september-2024-monthly-update#important-features-and-changes" class="hash-link" aria-label="Direct link to Important features and changes" title="Direct link to Important features and changes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="miles">Miles<a href="https://dawarich.app/blog/september-2024-monthly-update#miles" class="hash-link" aria-label="Direct link to Miles" title="Direct link to Miles">​</a></h3>
<p>Dawarich now supports miles! To switch to miles, provide <code>DISTANCE_UNIT</code> environment variable with value <code>mi</code> in the <code>docker-compose.yml</code> file. Default value is <code>km</code>.</p>
<p>It's recommended to update your stats manually after changing the <code>DISTANCE_UNIT</code> environment variable. You can do this by clicking the "Update stats" button on the Stats page.</p>
<p>⚠️IMPORTANT⚠️: All settings are still should be provided in meters. All calculations though will be converted to feets and miles if <code>DISTANCE_UNIT</code> is set to <code>mi</code>.</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_app:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     DISTANCE_UNIT: "mi"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dawarich_sidekiq:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    image: freikin/dawarich:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    container_name: dawarich_sidekiq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    environment:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+     DISTANCE_UNIT: "mi"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="default-time-range-on-the-map">Default time range on the map<a href="https://dawarich.app/blog/september-2024-monthly-update#default-time-range-on-the-map" class="hash-link" aria-label="Direct link to Default time range on the map" title="Direct link to Default time range on the map">​</a></h3>
<p>The default time range on the map is now 1 day instead of 1 month. It will help you with performance issues if you have a lot of points in the database.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-gpx-and-geojson-export-release">The GPX and GeoJSON export release<a href="https://dawarich.app/blog/september-2024-monthly-update#the-gpx-and-geojson-export-release" class="hash-link" aria-label="Direct link to The GPX and GeoJSON export release" title="Direct link to The GPX and GeoJSON export release">​</a></h3>
<p>⚠️ BREAKING CHANGES: ⚠️</p>
<p>Default exporting format is now GeoJSON instead of Owntracks-like JSON. This will allow you to use the exported data in other applications that support GeoJSON format. It's also important to highlight, that GeoJSON format does not describe a way to store any time-related data. Dawarich relies on the <code>timestamp</code> field in the GeoJSON format to determine the time of the point. The value of the <code>timestamp</code> field should be a Unix timestamp in seconds. If you import GeoJSON data that does not have a <code>timestamp</code> field, the point will not be imported.</p>
<p>Example of a valid point in GeoJSON format:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Feature"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"geometry"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Point"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"coordinates"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">13.350110811262352</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">52.51450815</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"properties"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"timestamp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1725310036</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="changelog">Changelog<a href="https://dawarich.app/blog/september-2024-monthly-update#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog">​</a></h2>
<p>Since I already posted about the 0.12.0 release, I will not go into details about it. Instead, I'll tell you about the changes that were made after that release.</p>
<p>Since Dawarich is being actively developed, there are always lots of moving parts. I encourage you to check the <a href="https://github.com/Freika/dawarich/releases" target="_blank" rel="noopener noreferrer">releases page</a> regularely to see all the changes that were made. All breaking changes and ways to mitigate them are always described in the release notes.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="added">Added<a href="https://dawarich.app/blog/september-2024-monthly-update#added" class="hash-link" aria-label="Direct link to Added" title="Direct link to Added">​</a></h3>
<ul>
<li><code>GET /api/v1/health</code> endpoint to check the health of the application with swagger docs</li>
<li><code>PATCH /api/v1/settings</code> endpoint to update user settings with swagger docs</li>
<li><code>GET /api/v1/settings</code> endpoint to get user settings with swagger docs</li>
<li><code>GET /api/v1/points</code> response now will include <code>X-Total-Pages</code> and <code>X-Current-Page</code> headers to make it easier to work with the endpoint</li>
<li>"Slim" version of <code>GET /api/v1/points</code>: pass optional param <code>?slim=true</code> to it and it will return only latitude, longitude and timestamp</li>
<li>7 new tile layers to choose from. Now you can select the tile layer that suits you the best. You can find the list of available tile layers in the map controls in the top right corner of the map under the layers icon</li>
<li>The Pages point now shows total number of points found for provided date range</li>
<li>Links to view import points on the map and on the Points page on the Imports page</li>
<li>Support for miles. To switch to miles, provide <code>DISTANCE_UNIT</code> environment variable with value <code>mi</code> in the <code>docker-compose.yml</code> file. Default value is <code>km</code></li>
<li>GeoJSON format is now available for exporting data</li>
<li>GPX format is now available for exporting data</li>
<li>Importing GeoJSON is now available</li>
<li>Missing <code>page</code> and <code>per_page</code> query parameters to the <code>GET /api/v1/points</code> endpoint swagger docs</li>
<li>Resource limits to docke-compose.yml file to prevent server overload. Feel free to adjust the limits to your needs</li>
</ul>
<div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">deploy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resources</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">limits</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">cpus</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'0.50'</span><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Limit CPU usage to 50% of one core</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">memory</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'2G'</span><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Limit memory usage to 2GB</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="changed">Changed<a href="https://dawarich.app/blog/september-2024-monthly-update#changed" class="hash-link" aria-label="Direct link to Changed" title="Direct link to Changed">​</a></h3>
<ul>
<li><code>GET /api/v1/points</code> will no longer return <code>raw_data</code> attribute for each point as it's a bit too much</li>
<li>GPX export now has time and elevation elements for each point</li>
<li>Default value for <code>RAILS_MAX_THREADS</code> was changed to 10</li>
<li>Visit suggestions background job was moved to its own low priority queue to prevent it from blocking other jobs.</li>
<li>Default time range on the map is now 1 day instead of 1 month. It will help you with performance issues if you have a lot of points in the database</li>
<li>The Points page now have number of points found for provided date range</li>
<li>Ruby version updated to 3.3.4</li>
<li>Visits suggestion process now will try to merge consecutive visits to the same place into one visit</li>
<li>Default exporting format is now GeoJSON instead of Owntracks-like JSON. This will allow you to use the exported data in other applications that support GeoJSON format</li>
<li>A notification about an existing import with the same name will now show the import name</li>
<li>Export file now also will contain <code>raw_data</code> field for each point. This field contains the original data that was imported to the application</li>
<li>Map settings moved to the map itself and are available in the top right corner of the map under the gear icon</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fixed">Fixed<a href="https://dawarich.app/blog/september-2024-monthly-update#fixed" class="hash-link" aria-label="Direct link to Fixed" title="Direct link to Fixed">​</a></h3>
<ul>
<li>Deleting points from the Points page now preserves <code>start_at</code> and <code>end_at</code> values for the routes</li>
<li>Visits map now being rendered correctly in the Visits page</li>
<li>Fixed issue with timezones for negative UTC offsets</li>
<li>Point page is no longer reloads losing provided timestamps when searching for points on Points page</li>
<li>Optimize order of the dockerfiles to leverage layer caching by @JoeyEamigh</li>
<li>Add support for alternate postgres ports and db names in docker by @JoeyEamigh</li>
<li>Creating exports directory if it doesn't exist by @tetebueno</li>
<li>Link to Visits page in notification informing about new visit suggestion</li>
<li>The Imports page now loading faster</li>
<li>Fixed a bug preventing the application from starting, when there is no users in the database but a data migration tries to update one</li>
<li>Fixed a bug where the confirmation alert was shown more than once when deleting a point</li>
<li>Importing geodata from Immich will now not throw an error in the end of the process</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://dawarich.app/blog/september-2024-monthly-update#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2>
<p>Phew, that was a lot of changes! With every release it always feels like not much was added or changed, but when you look back at the changelog, it's always a surprise how much was done in a month.</p>
<p>I'd also like to thank everyone who contributed to the project in any way, whether it was a bug report, a feature request, a pull request, or just a kind word. You are the ones who make this project better every day. Thank you!</p>
<p>If you're feeling generous, you can support the project by sponsoring it on <a href="https://www.patreon.com/freika" target="_blank" rel="noopener noreferrer">Patreon</a>, <a href="https://ko-fi.com/freika" target="_blank" rel="noopener noreferrer">Ko-Fi</a> or <a href="https://github.com/sponsors/Freika" target="_blank" rel="noopener noreferrer">Github Sponsors</a> ✨</p>
<p>Thank you and see you in the next monthly update! More exciting stuff is coming soon! 🚀</p>]]></content:encoded>
            <category>Monthly Update</category>
        </item>
        <item>
            <title><![CDATA[First Blog Post]]></title>
            <link>https://dawarich.app/blog/first-blog-post</link>
            <guid>https://dawarich.app/blog/first-blog-post</guid>
            <pubDate>Tue, 16 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Okay, this is the very first blog post on Dawarich blog. If you want to add a tutorial or some docs, feel free to open a pull request to https://github.com/dawarich-app/site. Cheers! 🎉]]></description>
            <content:encoded><![CDATA[<p>Okay, this is the very first blog post on Dawarich blog. If you want to add a tutorial or some docs, feel free to open a pull request to <a href="https://github.com/dawarich-app/site" target="_blank" rel="noopener noreferrer">https://github.com/dawarich-app/site</a>. Cheers! 🎉</p>]]></content:encoded>
            <category>Release</category>
        </item>
    </channel>
</rss>