Why GoPro Files Need Converting
Every GoPro HERO camera since the HERO6 Black records video using the H.265 (HEVC) codec by default. HEVC delivers stunning quality at roughly half the file size of older H.264 recordings, which is critical when you are shooting 5.3K at 60fps and burning through microSD cards on a mountain bike trail or underwater dive.
The problem surfaces when you try to do anything with that footage outside the GoPro ecosystem. Older editing software chokes on HEVC. Windows 10 machines may demand a paid codec extension from the Microsoft Store. Budget Android phones stutter during playback. Social media platforms sometimes re-encode HEVC uploads with aggressive compression, degrading quality more than necessary.
Converting GoPro HEVC files to H.264 MP4 solves all of these problems while preserving the quality your camera captured. This guide walks through the technical details, model-specific considerations, and practical conversion workflows.
GoPro Output Formats by Model
Not every GoPro records the same way. Understanding what your specific camera produces is the first step toward choosing the right conversion settings.
| GoPro Model | Max Resolution | Default Codec | Container | Max Bitrate | GPS Data | HDR Support |
|---|---|---|---|---|---|---|
| HERO13 Black | 5.3K @ 60fps | HEVC (H.265) | .MP4 | 120 Mbps | Yes | HDR10 |
| HERO12 Black | 5.3K @ 60fps | HEVC (H.265) | .MP4 | 120 Mbps | Yes | HDR10 |
| HERO11 Black | 5.3K @ 60fps | HEVC (H.265) | .MP4 | 120 Mbps | Yes | HDR10 |
| HERO10 Black | 5.3K @ 60fps | HEVC (H.265) | .MP4 | 100 Mbps | Yes | No |
| HERO9 Black | 5K @ 30fps | HEVC (H.265) | .MP4 | 100 Mbps | Yes | No |
| HERO8 Black | 4K @ 60fps | HEVC (H.265) | .MP4 | 100 Mbps | Yes | No |
| HERO7 Black | 4K @ 60fps | HEVC (H.265) | .MP4 | 78 Mbps | Yes | No |
| HERO6 Black | 4K @ 60fps | HEVC (H.265) | .MP4 | 78 Mbps | Yes | No |
| HERO5 Black | 4K @ 30fps | H.264 (AVC) | .MP4 | 60 Mbps | Yes | No |
Key Detail: GoPro cameras use the MP4 container for all recordings, regardless of whether the internal codec is H.264 or H.265. The container is not the issue -- the codec inside it is what causes compatibility problems.
GoPro File Naming and Chaptering
GoPro cameras split long recordings into multiple files (chapters) to avoid filesystem limitations on FAT32/exFAT microSD cards. Understanding this is important for batch conversion:
- HERO9 and newer: Files are named
GX010001.MP4,GX020001.MP4, etc. The middle two digits increment per chapter, and the last four digits identify the recording session. - HERO5-HERO8: Files use
GOPR0001.MP4for the first chapter andGP010001.MP4,GP020001.MP4for subsequent chapters. - Low-resolution proxies: Cameras create
.LRV(Low Resolution Video) and.THM(Thumbnail) files alongside the main recordings. These are safe to ignore or delete.
Understanding the HEVC Compatibility Problem
H.265/HEVC is technically superior to H.264 in every measurable way. It was standardized in 2013 and has had over a decade of hardware decoder adoption. So why do compatibility problems persist?
Patent licensing chaos. HEVC is covered by multiple patent pools (MPEG LA, HEVC Advance, Velos Media) with overlapping and sometimes contradictory licensing terms. This has made some software vendors reluctant to include HEVC decoders. Microsoft charges separately for HEVC support on Windows. Firefox still does not decode HEVC natively.
Hardware decoder gaps. While every phone and laptop sold since roughly 2017 has an HEVC hardware decoder, many desktop GPUs from 2015-2016 lack one. Software decoding of 4K/5.3K HEVC is CPU-intensive and will stutter on older machines.
Editing software. Free editors like older versions of Shotcut, OpenShot, and VSDC have historically had incomplete or buggy HEVC support. Even Premiere Pro handles HEVC noticeably more slowly than H.264 in the timeline.
The practical solution is simple: convert to H.264 when you need universal compatibility, and keep the HEVC originals as your archive.
Basic GoPro HEVC to H.264 Conversion
The fastest way to convert a single GoPro file is with FFmpeg. This command re-encodes the video from H.265 to H.264 while copying the audio stream untouched:
ffmpeg -i GX010042.MP4 -c:v libx264 -crf 18 -preset slow \
-c:a copy -movflags +faststart output_h264.mp4
Breaking down the flags:
-c:v libx264-- Encode video with the x264 encoder (H.264)-crf 18-- Constant Rate Factor. Lower means better quality. 18 is visually lossless for most content-preset slow-- Slower preset = better compression efficiency. Usemediumif encoding time matters more-c:a copy-- Copy the audio bitstream without re-encoding (GoPro uses AAC, which is already universally compatible)-movflags +faststart-- Move the MP4 metadata to the beginning of the file for faster web playback
Why CRF 18? GoPro footage is typically high-motion, high-detail content (action sports, underwater, aerial). These scenes need more bits than talking-head videos. CRF 18 ensures the encoder allocates enough bitrate to preserve fine detail in fast motion, water spray, foliage, and similar complex textures.
Matching GoPro's Original Bitrate
If you want to match the original file's bitrate precisely instead of using CRF mode:
# First, check the original bitrate
ffprobe -v quiet -print_format json -show_format GX010042.MP4 | grep bit_rate
# Then encode at that bitrate
ffmpeg -i GX010042.MP4 -c:v libx264 -b:v 100M -preset slow \
-c:a copy -movflags +faststart output_h264.mp4
This produces a file roughly the same size as the original (or slightly larger, since H.264 is less efficient than H.265 at the same bitrate).

Preserving GoPro Metadata
GoPro embeds rich metadata in every recording: GPS coordinates, accelerometer data, gyroscope readings, camera orientation, and exposure settings. This data powers features like GPS speed overlays, horizon leveling in post, and the GoPro Telemetry Extractor.
A basic FFmpeg conversion preserves the standard MP4 metadata (creation time, camera model) but strips the GoPro-specific telemetry stream. To keep it:
ffmpeg -i GX010042.MP4 -c:v libx264 -crf 18 -preset slow \
-c:a copy -c:s copy -map 0 -movflags +faststart output_h264.mp4
The critical additions:
-map 0-- Map all streams from the input (not just the first video and audio)-c:s copy-- Copy subtitle/data streams without modification (GoPro telemetry lives in data streams)
To verify the metadata survived:
ffprobe -v quiet -print_format json -show_streams output_h264.mp4 | grep codec_type
# Should show "video", "audio", and "data" streams
ProTune Settings and Conversion Considerations
GoPro's ProTune mode unlocks manual control over recording parameters. These settings directly affect how you should convert your footage.
Bitrate
ProTune offers "Standard" and "High" bitrate modes. High bitrate on a HERO12 records at approximately 120 Mbps, while Standard uses around 60 Mbps. When converting from High bitrate HEVC:
# For ProTune High bitrate footage (preserve maximum quality)
ffmpeg -i GX010042.MP4 -c:v libx264 -crf 16 -preset slow \
-c:a copy -movflags +faststart output_h264.mp4
Use CRF 16 instead of 18 for High bitrate ProTune footage. The extra bits captured in the original deserve a lower CRF to avoid discarding detail that was actually recorded.
Color Profile
| ProTune Color | Gamma Curve | Conversion Consideration |
|---|---|---|
| GoPro Color | Standard | No special handling needed -- ready for direct playback |
| Flat | Log-like | Footage looks washed out; needs color grading before delivery |
| Natural | Moderate | Slightly desaturated; minor grading recommended |
If you shot in Flat color profile and plan to color grade, convert to a high-quality intermediate first, then grade, then export your final delivery codec:
# Convert to high-quality intermediate for grading
ffmpeg -i GX010042.MP4 -c:v prores_ks -profile:v 3 \
-c:a pcm_s16le output_prores.mov
White Balance and ISO
These settings are baked into the recording and are not affected by codec conversion. No special handling required.
Handling GoPro HDR Footage
HERO11 and newer GoPro cameras can record in HDR (10-bit HDR10). This footage uses the BT.2020 color space and PQ transfer function, which requires an HDR-capable display to view correctly.
If your target device or platform does not support HDR, you need to tone-map to SDR during conversion:
ffmpeg -i GX010042.MP4 \
-vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p" \
-c:v libx264 -crf 18 -preset slow \
-c:a copy -movflags +faststart output_sdr.mp4
This applies Hable tone mapping, which produces natural-looking results that preserve the dynamic range feel without requiring an HDR display. For a deep dive into HDR conversion techniques, see our HDR to SDR conversion guide.
Batch Converting an Entire SD Card
After a day of shooting, you might have dozens or hundreds of GoPro files to convert. Here is a script that processes every MP4 file in a directory:
#!/bin/bash
# Batch convert all GoPro HEVC files to H.264
# Usage: ./convert-gopro.sh /path/to/DCIM/100GOPRO
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${INPUT_DIR}/converted"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/G*.MP4; do
[ -f "$file" ] || continue
filename=$(basename "$file")
output="${OUTPUT_DIR}/${filename%.MP4}_h264.mp4"
echo "Converting: $filename"
ffmpeg -y -i "$file" \
-c:v libx264 -crf 18 -preset medium \
-c:a copy -map 0 -movflags +faststart \
"$output"
echo "Done: $output"
done
echo "All files converted to $OUTPUT_DIR"
Save this as convert-gopro.sh, make it executable with chmod +x convert-gopro.sh, and run it pointed at your GoPro's SD card directory.
Pro Tip: The script uses -preset medium instead of -preset slow for batch jobs. The quality difference between medium and slow is marginal (typically under 1% bitrate efficiency), but medium encodes 40-60% faster. When processing 50+ files, that time savings adds up significantly.
Parallel Batch Conversion
For faster processing on multi-core machines, run multiple conversions simultaneously:
#!/bin/bash
# Parallel batch conversion (4 files at a time)
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${INPUT_DIR}/converted"
mkdir -p "$OUTPUT_DIR"
find "$INPUT_DIR" -maxdepth 1 -name "G*.MP4" -print0 | \
xargs -0 -P 4 -I {} bash -c '
file="{}"
filename=$(basename "$file")
output="'"$OUTPUT_DIR"'/${filename%.MP4}_h264.mp4"
ffmpeg -y -i "$file" -c:v libx264 -crf 18 -preset medium \
-c:a copy -map 0 -movflags +faststart "$output" 2>/dev/null
echo "Converted: $filename"
'
The -P 4 flag runs four FFmpeg instances in parallel. Adjust this number based on your CPU core count. Each H.264 encode typically saturates 2-4 cores, so a 16-core machine can comfortably run 4-6 parallel encodes.
Concatenating GoPro Chapter Files
GoPro splits long recordings into chapters (typically 4GB each). To join them before or after conversion:
# Create a file list
for f in GX010042.MP4 GX020042.MP4 GX030042.MP4; do
echo "file '$f'" >> chapters.txt
done
# Concatenate without re-encoding (same codec chapters)
ffmpeg -f concat -safe 0 -i chapters.txt -c copy merged.mp4
# Clean up
rm chapters.txt
This lossless concatenation works because all chapter files from the same recording session share identical codec parameters. No quality loss, no re-encoding, and it completes in seconds regardless of file size.
Resolution and Frame Rate Considerations
When to Downscale
Converting 5.3K GoPro footage to 4K or 1080p is often practical:
| Resolution | Pixels | Use Case | Suggested CRF |
|---|---|---|---|
| 5.3K (orig) | 5312x2988 | Archive, professional editing | 16-18 |
| 4K | 3840x2160 | YouTube, TV playback, general delivery | 18-20 |
| 1080p | 1920x1080 | Social media, email sharing, web embedding | 20-22 |
| 720p | 1280x720 | Previews, mobile-first viewing | 22-24 |
# Downscale 5.3K to 4K during conversion
ffmpeg -i GX010042.MP4 -vf "scale=3840:2160:flags=lanczos" \
-c:v libx264 -crf 18 -preset slow \
-c:a copy -movflags +faststart output_4k.mp4
Frame Rate Reduction
GoPro's high frame rate modes (120fps, 240fps) are meant for slow-motion playback. If you want standard-speed playback at a lower frame rate:
# Convert 120fps to 30fps (4x slow motion becomes real-time)
ffmpeg -i GX010042.MP4 -vf "setpts=0.25*PTS" -r 30 \
-c:v libx264 -crf 18 -preset slow \
-c:a copy -movflags +faststart output_30fps.mp4
For more details on frame rate selection, see our frame rate guide.
Converting GoPro Files Without Command Line
Not everyone wants to work with FFmpeg commands. The Video Converter handles GoPro HEVC files through a browser-based interface. Upload your .MP4 file, select H.264 as the output codec, and download the converted result.
For reducing file size without worrying about codec details, the Video Compressor automatically selects optimal settings based on your target file size or quality preference.
If you need to trim your GoPro footage before converting (remove the shaky first few seconds or cut out dead time between action), use the Video Trimmer to cut the clip first.
Troubleshooting Common Issues
"No decoder found" or "Codec not supported"
Your FFmpeg installation may lack HEVC decoding support. Verify with:
ffmpeg -decoders | grep hevc
# Should show: V..... hevc HEVC (High Efficiency Video Coding)
If missing, install a full FFmpeg build. On macOS: brew install ffmpeg. On Ubuntu: sudo apt install ffmpeg.
Output File Is Much Larger Than the Original
This is expected. H.264 is roughly 40-50% less efficient than H.265 at the same quality level. A 10GB HEVC file will typically produce a 14-18GB H.264 file at equivalent visual quality. To keep file sizes similar, increase CRF to 22-24 (with a corresponding minor quality reduction).
Colors Look Different After Conversion
GoPro HERO11+ records in BT.2020 color space when HDR is enabled. If your conversion does not explicitly map to BT.709, some players may interpret the colors incorrectly:
ffmpeg -i GX010042.MP4 -c:v libx264 -crf 18 \
-color_primaries bt709 -color_trc bt709 -colorspace bt709 \
-c:a copy -movflags +faststart output.mp4
Audio/Video Sync Drift on Long Recordings
GoPro recordings occasionally have slight audio sync drift over long durations (30+ minutes). If you notice this after conversion, force audio re-encoding with a slight filter:
ffmpeg -i GX010042.MP4 -c:v libx264 -crf 18 -preset slow \
-c:a aac -b:a 256k -async 1 -movflags +faststart output.mp4
The -async 1 flag corrects drift by stretching or squeezing the audio stream.
Frequently Asked Questions
Should I convert GoPro files to H.264 or just use them as-is?
If your editing software, playback devices, and sharing platforms all support HEVC, there is no need to convert. Keep the originals. Convert only when you encounter compatibility issues or need to deliver to someone whose setup does not handle HEVC.
Does converting from HEVC to H.264 lose quality?
Yes, any re-encode introduces a generation loss. However, at CRF 18 with the slow preset, the loss is visually imperceptible for the vast majority of content. You would need pixel-level comparison tools to spot differences.
Can I convert GoPro 360 files the same way?
GoPro MAX and HERO 360 cameras produce .360 files that require the GoPro Player app to "reframe" before they become standard MP4 files. Once reframed and exported, you can convert them using the techniques in this guide. Do not attempt to convert raw .360 files directly -- they contain dual-lens spherical video that needs stitching first.
How much storage space do I need for converted files?
Plan for 1.4-1.8x the original file size when converting HEVC to H.264 at equivalent quality. A 256GB SD card of GoPro HEVC footage will need approximately 360-460GB of storage for the H.264 conversions.
What about GoPro's own software?
GoPro Quik (desktop) can export clips in H.264, but it is slow, offers limited control over encoding parameters, and cannot batch-process files efficiently. For more than a handful of clips, FFmpeg or an online converter is significantly faster.
Conclusion
GoPro's use of HEVC is a smart engineering decision that squeezes maximum quality from limited SD card space. But until HEVC support is truly universal, converting to H.264 remains a necessary step for many workflows. The key principles: use CRF 18 for quality, preserve GoPro metadata with -map 0, and batch-process with parallel encoding when handling full shoot days.
For quick conversions without installing software, the Video Converter processes GoPro HEVC files in the cloud and delivers H.264 MP4 files ready for any device or platform. For more on codec differences, read our detailed H.265 vs H.264 vs AV1 comparison.



