GPS Text Video Filter


The GPS Text filter allows you to add useful GPS related data (such as speed, altitude or distance) on top of and in sync with your video. It is available since version 21.08.

Note: you need to record your GPS track with a device (phone, smartwatch, bike computer or dedicated GPS tracker) AND export your track to a .gpx or .tcx file. If you record using an action camera that has GPS (like GoPro), you need to extract the data to a separate file (there are online and offline tools for this).

Tip: hover your mouse over filter elements for some extra explanations


  1. Add the GPS Text filter on a clip in the timeline.

  2. Click the Open file button in the filter panel to load the .gpx or .tcx file.
    ss open file crop

  3. Use the GPS offset row to sync the GPS track time to the video time (check out some hints below; if you’re extremely lucky they are already in sync and you can skip this step).
    ss gps offset row

  4. Edit the filter text panel with any keywords from the available list. You can also format the text to your liking just like Text: Simple filter.
    Tip: hover your mouse over the list for extra keyword arguments.
    ss text

  5. Check out the results live in the video player.

  6. If needed, change the more advanced options in the filter panel. There is also basic keyframing support for in/out and text position/size.

  7. Export

Syncing workflow details and tips

TLDR: watch out for timezones; buttons have tooltips; remember to film a clock from time to time for easy sync later (but do remember it’s timezone);
Also: scrollwheel to add/substract a few seconds for quick corrections.

At the very bottom of the filter panel (you’ll probably need to scroll to see it) there are 2 important date-time notes: the Video’s and the GPS’s start times (Note: they will be first updated after you load a GPS file). The GPS time is always in the UTC timezone, but the Video start time is read from the file’s Creation Time metadata field, which is currently very not-standardized across devices, and so, it might be in your local timezone or not, it might be set to the start or end of the video or it might just be a very random time if your device loses power and doesn’t sync it at startup.
The important thing to remember here is that no matter when you shot your video, this is what Shotcut sees as your file’s start time (converted to UTC, so the same as GPS time) therefore this is what will be used for offseting the GPS track. You can use the #file_datetime_now# keyword to see it live in the output.

ss status text

Sync buttons

Syncing the GPS track to the video file will be the most annoying part of using this filter. To the right of the sync text areas there are a number of 4 buttons that will probably cover 95% of all use cases thus avoiding any need for doing time math. This will be frustrating at first but you will notice that there is a pattern to follow and it will be the same everytime for each device.

Note: if your device doesn’t support auto time sync over the internet you will most likely still need to match a few seconds (maybe even minutes) to the real time in addition to one of the helper buttons. I recommend you take a photo of a (digital) clock and check the photo’s properties for the time.

I’ll go over the buttons from left to right, first being the clock one, and last the “Pause” one.

ss gps offset row

Sync button 1: Timezone removal (GoPros)

Probably the most used button as I expect most shots that would work with a GPS overlay would come from an action camera and GoPro is doing this as well.
Why? If you can’t set the timezone in the camera clock settings, it will probably be wrongly set to UTC (well it’s wrong unless you live in UTC area) so the file will match the GPS track a few hours ahead or behind.
Devices? GoPros, some DSLRs/Mirrorless, most non professional grade video cameras will have this issue. This is an easy one to find as it will remain constant for all files.

Sync button 2: Video duration removal (Android)

Why? Some devices (cough android phones cough) decided it’s a good idea to set the video’s creation time after you finish recording. So if you record a 15 minute video starting at 12:00, it will store the time as 12:15.
Devices? Android smartphones are the only ones that do this as far as I know.
It’s a big pain as you can’t copy paste the filter to multiple clips, each clip has to be individually updated as it will most likely have a different duration.

Sync button 3: Sync beginings (tests & dashcam)

If you just want to see the filter work just press this button and it will immediately sync the 2 times no matter how far apart they are.
When? This is good for testing random files or if you don’t want to bother with times and just remember to start recording video and GPS at the same time.
Devices? My dashcam resets the time every time it loses power for more than a few hours. I gave up trying to set it correctly so I just start the GPS track and immediately hit start record.

Sync button 4: Sync to now

When? If you want a very precise sync that doesn’t need time keeping at all, this is the way: just start filming before the GPS device and make sure to record the moment the GPS device gets the first fix and starts recording. Move the playhead to that exact moment in the video, press the button and you’re done.
You can also make a sign or cover your camera with your palm as a mark point.
If you clap to sync audio to video this workflow will be very familiar.

Sync extra: record a precise clock

Your phone automatically syncs pretty precisely all the time. You can just record it’s clock (make sure you can see the seconds) at any moment and manually match the #gps_datetime_now# time to what you see in the video. This is my preferred method as It’s simply the easiest and you don’t need to preserve file metadata (don’t forget about your clock’s timezone though).

Known issues

  • Crossing the 180th meridian will probably produce ridiculous results for speed/distance. If you have a track feel free to share it with us and I’ll try to fix some things.

I’ll update some images tomorrow. Let me know if I got into too much detail or there’s some other stuff I didn’t go over.

1 Like

Hello Shotcut community,

I work with Shotcut Version 21.03.21, language German
The GPS text video filter shown here is not listed in this version of Shotcut 03/21/21.

My question:
In which version of Shotcut can I find the GPS Text Video Filter?
Or did I ignore something?

With best regards from Germany

This filter has been introduced in 21.08.10 (beta version).

Hello Hudson555x, thank You!

Hi All - I’m looking to experiment with this filter. I have dive logs that show depth, temperature and other logs over time. Looking at the XML file format, I think I could create a dive log that matches the structure of the .gpx or .tcx. Before spending some time on this, I wondered if there is any validation in the filter that might prevent me from using it for this unintended target?


Hi robmason, I believe you can do what you’re planning but not as generic fields. There is validation in the filter, if you just add extra tags in the xml, they will be ignored (there’s specific processing depending on what it’s reading ie: speed goes through processing so it can be converted from meters/s into km/h or mi/h etc). You can see the dropdown list for the current fields.

You can however reuse one of the standard fields we already support: depth into altitude (it’s a double data type so it can fit everything), temperature into heart rate (data type: short). You might need to fill in the lat/lon with random values and of course the time (mandatory).

Start with a real .gpx or .tcx file with existing fields edited in notepad to see if it’s working for you.

1 Like

Thanks Daniel - it sounds like it is wort trying.