What's in your Google Maps Timeline export
Updated
Google has used four different file layouts for location history over the years: two current ones from the phone (Android and iPhone) and two older ones from Google Takeout. They describe the same things (places you stayed, trips between them and raw GPS points) in different shapes. This page walks through each format field by field. All examples below use made-up coordinates.
TimelineMap detects the format automatically. Your file is processed on your device and never uploaded to our servers.
New Android export: Timeline.json
This is what Export Timeline data produces on Android. It is one JSON object with three top-level keys.
{
"semanticSegments": [
{
"startTime": "2026-05-02T08:10:00.000+03:00",
"endTime": "2026-05-02T08:42:00.000+03:00",
"startTimeTimezoneUtcOffsetMinutes": 180,
"endTimeTimezoneUtcOffsetMinutes": 180,
"visit": {
"hierarchyLevel": 0,
"probability": 0.91,
"topCandidate": {
"placeId": "ChIJ-synthetic-example",
"semanticType": "HOME",
"probability": 0.87,
"placeLocation": { "latLng": "47.1500000°, 27.5800000°" }
}
}
},
{
"startTime": "2026-05-02T08:42:00.000+03:00",
"endTime": "2026-05-02T09:05:00.000+03:00",
"activity": {
"start": { "latLng": "47.1500000°, 27.5800000°" },
"end": { "latLng": "47.1620000°, 27.6010000°" },
"distanceMeters": 2140.5,
"topCandidate": { "type": "IN_PASSENGER_VEHICLE", "probability": 0.8 }
}
},
{
"startTime": "2026-05-02T08:00:00.000+03:00",
"endTime": "2026-05-02T10:00:00.000+03:00",
"timelinePath": [
{ "point": "47.1510000°, 27.5830000°", "time": "2026-05-02T08:45:00.000+03:00" }
]
}
],
"rawSignals": [
{
"position": {
"LatLng": "47.1512345°, 27.5834567°",
"accuracyMeters": 12,
"altitudeMeters": 61.2,
"source": "WIFI",
"timestamp": "2026-05-02T08:45:03.000+03:00"
}
}
],
"userLocationProfile": {
"frequentPlaces": [
{ "placeId": "ChIJ-synthetic-example", "placeLocation": "47.1500000°, 27.5800000°", "label": "HOME" }
]
}
} semanticSegments
The main list. Each segment is a stretch of time with a start and an end:
-
startTime/endTime: ISO timestamps that include the local UTC offset, for example+03:00. -
startTimeTimezoneUtcOffsetMinutes/endTimeTimezoneUtcOffsetMinutes: the same offset in minutes. These let TimelineMap place each entry on the right local day, wherever you were at the time.
Each segment then carries one of three payloads:
-
visit: a stay somewhere.topCandidate.placeIdis Google's internal place ID,topCandidate.semanticTypeis a label such asHOME,WORK,SEARCHED_ADDRESSorUNKNOWN,probabilityis how sure Google was, andplaceLocation.latLngholds the coordinates as a text string like"47.15°, 27.58°". -
activity: a trip.startandendholdlatLngstrings,distanceMetersis the estimated distance, andtopCandidate.typeis the guessed mode:WALKING,CYCLING,IN_PASSENGER_VEHICLE,IN_BUS,IN_TRAIN,FLYINGand so on. -
timelinePath: a list of{point, time}entries, each a coordinate string with its timestamp. These are the dots that draw the actual route.
rawSignals
Lower-level data the phone collected. Three kinds appear:
-
position: a single fix withLatLng(note the capital letters),accuracyMeters,altitudeMeters,source(GPS, Wi-Fi, cell) andtimestamp. wifiScan: nearby Wi-Fi access points seen at a moment, with signal strengths. No coordinates.activityRecord: the phone's motion guesses (still, walking, in vehicle) with confidence values.
Raw signals usually cover only recent weeks. Older history exists only as semantic segments.
userLocationProfile
Google's summary of you: frequentPlaces (place IDs and coordinates labelled HOME,
WORK and so on) and sometimes a persona block with travel-mode affinities. TimelineMap uses
the home entry, when present, to work out days away from home and your furthest point.
New iPhone export
The Google Maps app on iPhone exports the same information in a different shape, which is why tools written for the Android file often fail on it.
[
{
"startTime": "2026-05-02T08:10:00.000+03:00",
"endTime": "2026-05-02T08:42:00.000+03:00",
"visit": {
"hierarchyLevel": "0",
"probability": "0.91",
"topCandidate": {
"placeID": "ChIJ-synthetic-example",
"semanticType": "Home",
"probability": "0.87",
"placeLocation": "geo:47.150000,27.580000"
}
}
},
{
"startTime": "2026-05-02T08:00:00.000+03:00",
"endTime": "2026-05-02T10:00:00.000+03:00",
"timelinePath": [
{ "point": "geo:47.151000,27.583000", "durationMinutesOffsetFromStartTime": "45" }
]
}
] - The top level is a plain array of segments, not an object with
semanticSegments. - Coordinates are
"geo:47.15,27.58"strings instead of degree strings. - Numbers such as probabilities and distances are stored as strings (
"0.91"). - The place ID key is spelled
placeID. -
timelinePathpoints have adurationMinutesOffsetFromStartTimeinstead of a timestamp; the time is the segment'sstartTimeplus that many minutes. - There is no
rawSignalssection.
Old Takeout: Records.json
From Google Takeout before the December 2024 change. It is a single huge list of raw points, often hundreds of megabytes for a long history.
{
"locations": [
{
"latitudeE7": 471512345,
"longitudeE7": 275834567,
"accuracy": 14,
"altitude": 61,
"velocity": 3,
"heading": 120,
"activity": [
{
"timestamp": "2019-03-14T07:45:10.120Z",
"activity": [
{ "type": "IN_VEHICLE", "confidence": 76 },
{ "type": "STILL", "confidence": 12 }
]
}
],
"source": "WIFI",
"deviceTag": 1234567890,
"timestamp": "2019-03-14T07:45:03.000Z"
}
]
} -
latitudeE7/longitudeE7: integers equal to degrees × 107. Divide by 10,000,000 to get normal coordinates:471512345→ 47.1512345°. -
timestamp: an ISO time in UTC. Older files usetimestampMsinstead, milliseconds since 1970 stored as a string. accuracy: estimated error radius in metres.altitude,velocity(m/s) andheading(degrees): present only on some points.-
activity[]: motion guesses, each with its own timestamp and a list of{type, confidence}pairs (confidence 0–100). source:GPS,WIFIorCELL.deviceTag: a number identifying which phone recorded the point.
Old Takeout: Semantic Location History
A folder with one subfolder per year and one file per month, named like 2019/2019_MARCH.json. Each
file has a timelineObjects array, and each object is either a placeVisit or an
activitySegment.
{
"timelineObjects": [
{
"placeVisit": {
"location": {
"latitudeE7": 471500000,
"longitudeE7": 275800000,
"placeId": "ChIJ-synthetic-example",
"name": "Example Café",
"address": "1 Example Street"
},
"duration": {
"startTimestamp": "2019-03-14T06:10:00Z",
"endTimestamp": "2019-03-14T06:42:00Z"
},
"placeConfidence": "HIGH_CONFIDENCE"
}
},
{
"activitySegment": {
"startLocation": { "latitudeE7": 471500000, "longitudeE7": 275800000 },
"endLocation": { "latitudeE7": 471620000, "longitudeE7": 276010000 },
"duration": {
"startTimestamp": "2019-03-14T06:42:00Z",
"endTimestamp": "2019-03-14T07:05:00Z"
},
"distance": 2140,
"activityType": "IN_PASSENGER_VEHICLE",
"waypointPath": { "waypoints": [{ "latE7": 471550000, "lngE7": 275900000 }] },
"simplifiedRawPath": { "points": [{ "latE7": 471560000, "lngE7": 275910000, "timestamp": "2019-03-14T06:50:00Z" }] }
}
}
]
} -
placeVisit.location: E7 coordinates,placeId, and in these older files usually anameandaddresstoo. placeVisit.duration:startTimestampandendTimestampin UTC.placeVisit.placeConfidence:HIGH_CONFIDENCE,MEDIUM_CONFIDENCE, and so on.-
activitySegment.startLocation/endLocation: E7 coordinates of the trip ends. activitySegment.distance: metres.activityType: the travel mode.-
waypointPath(snapped route points) andsimplifiedRawPath(thinned GPS points with timestamps): the shape of the trip.
What TimelineMap uses
Every format is turned into the same three things:
- Visits: start, end, coordinates, place ID, semantic type and name (if the file has one).
- Trips: start, end, travel mode, distance and the route points.
- Points: time, coordinates and accuracy, from
timelinePath,rawSignalspositions or Records.json.
Wi-Fi scans, activity records, persona data, velocity and heading are ignored. Paths are simplified for drawing on the map, while exports keep full detail.
Why place names are usually missing
The new phone exports contain only a place ID and coordinates for most visits, not the name of the café or shop. Looking names up would mean sending your locations to the Google Places service, which costs money and would take your history off your device, so TimelineMap doesn't do it. Instead, it shows the city and country from an offline dataset, and you can name places yourself. Those names are stored only in your browser. Old Semantic Location History files usually do include names, and TimelineMap shows them.
Ready to look at yours? Open your file, or see how to export it first.